Exempel på fristående diagnostikflöde
Exemplet DiagnosticsFeed visar hur du skapar en RSS/Atom-feed för syndikering med Windows Communication Foundation (WCF). Det är ett grundläggande "Hello World"-program som visar grunderna i objektmodellen och hur du konfigurerar den på en WCF-tjänst (Windows Communication Foundation).
WCF-modeller syndikeringsfeeds som tjänståtgärder som returnerar en särskild datatyp, SyndicationFeedFormatter. Instanser av SyndicationFeedFormatter kan serialisera ett flöde till både RSS 2.0- och Atom 1.0-format. Följande exempelkod visar det kontrakt som används.
[ServiceContract(Namespace = "")]
interface IDiagnosticsService
{
[OperationContract]
//The [WebGet] attribute controls how WCF dispatches
//HTTP requests to service operations based on a URI suffix
//(the part of the request URI after the endpoint address)
//using the HTTP GET method. The UriTemplate specifies a relative
//path of 'feed', and specifies that the format is
//supplied using a query string.
[WebGet(UriTemplate="feed?format={format}")]
[ServiceKnownType(typeof(Atom10FeedFormatter))]
[ServiceKnownType(typeof(Rss20FeedFormatter))]
SyndicationFeedFormatter GetProcesses(string format);
}
Åtgärden GetProcesses
kommenteras med attributet WebGetAttribute som gör att du kan styra hur WCF skickar HTTP GET-begäranden till tjänståtgärder och ange formatet för de meddelanden som skickas.
Precis som alla WCF-tjänster kan syndikeringsfeeds vara självhanterade i alla hanterade program. Syndikeringstjänster kräver en specifik bindning () WebHttpBindingoch ett specifikt slutpunktsbeteende () WebHttpBehaviorför att fungera korrekt. Den nya WebServiceHost klassen ger ett praktiskt API för att skapa sådana slutpunkter utan specifik konfiguration.
WebServiceHost host = new WebServiceHost(typeof(ProcessService), new Uri("http://localhost:8000/diagnostics"));
//The WebServiceHost will automatically provide a default endpoint at the base address
//using the proper binding (the WebHttpBinding) and endpoint behavior (the WebHttpBehavior)
Du kan också använda WebServiceHostFactory inifrån en IIS-värdbaserad .svc-fil för att tillhandahålla motsvarande funktioner (den här tekniken visas inte i den här exempelkoden).
<% @ServiceHost Language="C#|VB" Debug="true" Service="ProcessService" %>
Eftersom den här tjänsten tar emot begäranden med http get-standard kan du använda valfri RSS- eller ATOM-medveten klient för att få åtkomst till tjänsten. Du kan till exempel visa utdata från den här tjänsten genom att navigera till http://localhost:8000/diagnostics/feed/?format=atom
eller http://localhost:8000/diagnostics/feed/?format=rss
i en RSS-medveten webbläsare.
Du kan också använda WCF Syndication Object Model Kartor till Atom och RSS för att läsa syndikerade data och bearbeta dem med imperativ kod.
XmlReader reader = XmlReader.Create( "http://localhost:8000/diagnostics/feed/?format=rss",
new XmlReaderSettings()
{
//MaxCharactersInDocument can be used to control the maximum amount of data
//read from the reader and helps prevent OutOfMemoryException
MaxCharactersInDocument = 1024 * 64
} );
SyndicationFeed feed = SyndicationFeed.Load(reader);
foreach (SyndicationItem i in feed.Items)
{
XmlSyndicationContent content = i.Content as XmlSyndicationContent;
ProcessData pd = content.ReadContent<ProcessData>();
Console.WriteLine(i.Title.Text);
Console.WriteLine(pd.ToString());
}
Konfigurera, skapa och köra exemplet
Se till att du har rätt adressregistreringsbehörighet för HTTP och HTTPS på datorn enligt beskrivningen i konfigurationsanvisningarna i Engångsinstallationsproceduren för Windows Communication Foundation-exempel.
Skapa lösningen.
Kör konsolprogrammet.
När konsolprogrammet körs navigerar du till
http://localhost:8000/diagnostics/feed/?format=atom
ellerhttp://localhost:8000/diagnostics/feed/?format=rss
använder en RSS-medveten webbläsare.