Udostępnij za pośrednictwem


Przykład autonomicznego kanału diagnostycznego

W przykładzie DiagnosticsFeed pokazano, jak utworzyć źródło danych RSS/Atom na potrzeby syndykacji za pomocą programu Windows Communication Foundation (WCF). Jest to podstawowy program "Hello World", który pokazuje podstawy modelu obiektów i sposób konfigurowania go w usłudze Windows Communication Foundation (WCF).

Źródła danych syndykacji modeli WCF jako operacje usługi, które zwracają specjalny typ danych, SyndicationFeedFormatter. Wystąpienia programu SyndicationFeedFormatter mogą serializować kanał informacyjny w formatach RSS 2.0 i Atom 1.0. Poniższy przykładowy kod przedstawia użyty 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);
    }

Operacja GetProcesses jest oznaczona adnotacją z atrybutem WebGetAttribute , który umożliwia kontrolowanie sposobu wysyłania żądań HTTP GET przez usługę WCF do operacji obsługi i określania formatu wysyłanych komunikatów.

Podobnie jak w przypadku dowolnej usługi WCF, kanały informacyjne syndykacji mogą być hostowane samodzielnie w dowolnej aplikacji zarządzanej. Usługi syndykacji wymagają określonego powiązania () WebHttpBindingi określonego zachowania punktu końcowego (the WebHttpBehavior) w celu poprawnego działania. Nowa WebServiceHost klasa udostępnia wygodny interfejs API do tworzenia takich punktów końcowych bez określonej konfiguracji.

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)

Alternatywnie można użyć z WebServiceHostFactory poziomu pliku svc hostowanego przez usługi IIS, aby zapewnić równoważne funkcje (ta technika nie jest pokazana w tym przykładowym kodzie).

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

Ponieważ ta usługa odbiera żądania przy użyciu standardowego żądania HTTP GET, możesz użyć dowolnego klienta obsługującego funkcję RSS lub ATOM w celu uzyskania dostępu do usługi. Na przykład możesz wyświetlić dane wyjściowe tej usługi, przechodząc do http://localhost:8000/diagnostics/feed/?format=atom lub http://localhost:8000/diagnostics/feed/?format=rss w przeglądarce obsługującej funkcję RSS.

Możesz również użyć modelu obiektów syndykacji WCF Mapy do atomów i RSS, aby odczytywać dane syndykacyjne i przetwarzać je przy użyciu kodu imperatywnego.

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

Konfigurowanie, kompilowanie i uruchamianie przykładu

  1. Upewnij się, że masz odpowiednie uprawnienia do rejestracji adresów HTTP i HTTPS na komputerze, jak wyjaśniono w instrukcjach konfigurowania w procedurze konfiguracji jednorazowej dla przykładów programu Windows Communication Foundation.

  2. Stwórz rozwiązanie.

  3. Uruchom aplikację konsolową.

  4. Gdy aplikacja konsolowa jest uruchomiona, przejdź do http://localhost:8000/diagnostics/feed/?format=atomhttp://localhost:8000/diagnostics/feed/?format=rss lub użyj przeglądarki obsługującej funkcję RSS.

Zobacz też