Ukázka diagnostického kanálu Stand-Alone

Ukázka DiagnosticsFeed ukazuje, jak vytvořit informační kanál RSS/Atom pro syndikaci se službou Windows Communication Foundation (WCF). Jedná se o základní program "Hello World", který ukazuje základy objektového modelu a jeho nastavení ve službě Windows Communication Foundation (WCF).

WCF modeluje syndikační kanály jako operace služby, které vracejí speciální datový typ, SyndicationFeedFormatter. SyndicationFeedFormatter Instance mohou serializovat informační kanál ve formátech RSS 2.0 i Atom 1.0. Následující ukázkový kód ukazuje použitý kontrakt.

[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);
    }

Operace GetProcesses je opatřena poznámkami s atributem WebGetAttribute , který umožňuje řídit, jak WCF odesílá požadavky HTTP GET do operací služby a určuje formát odeslaných zpráv.

Stejně jako všechny služby WCF mohou být syndikační zdroje hostovány v libovolné spravované aplikaci. Služby syndikace vyžadují ke správnému fungování konkrétní vazby (WebHttpBinding) a konkrétní chování koncového bodu (WebHttpBehavior). Nová WebServiceHost třída poskytuje pohodlné rozhraní API pro vytváření takových koncových bodů bez konkrétní konfigurace.

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)

Alternativně můžete použít WebServiceHostFactory soubor .svc hostovaný službou IIS k zajištění ekvivalentních funkcí (tato technika není v tomto ukázkovém kódu ukázaná).

<% @ServiceHost Language="C#|VB" Debug="true" Service="ProcessService" %>

Vzhledem k tomu, že tato služba přijímá požadavky pomocí standardu HTTP GET, můžete pro přístup ke službě použít libovolného klienta s podporou RSS nebo ATOM. Výstup této služby můžete zobrazit například tak, že v prohlížeči s podporou RSS přejdete na http://localhost:8000/diagnostics/feed/?format=atom nebo http://localhost:8000/diagnostics/feed/?format=rss.

K čtení syndikovaných dat a jejich zpracování pomocí imperativního kódu můžete také použít jak model objektu syndikace WCF mapuje na Atom a RSS.

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());
}

Nastavení, sestavení a spuštění ukázky

  1. Ujistěte se, že máte na počítači správná oprávnění k registraci adres pro protokoly HTTP a HTTPS, jak je vysvětleno v pokynech k nastavení v One-Time Instalační procedura pro příklady Windows Communication Foundation.

  2. Sestavte řešení.

  3. Spusťte konzolovou aplikaci.

  4. Když je konzolová aplikace spuštěná, přejděte na http://localhost:8000/diagnostics/feed/?format=atom nebo http://localhost:8000/diagnostics/feed/?format=rss pomocí prohlížeče s podporou RSS.

Viz také