Condividi tramite


Esempio di feed di diagnostica autonomo

L'esempio DiagnosticsFeed illustra come creare un feed RSS/Atom per la diffusione con Windows Communication Foundation (WCF). Si tratta di un programma "Hello World" di base che illustra le nozioni di base del modello a oggetti e come configurarlo in un servizio Windows Communication Foundation (WCF).

I modelli WCF diffusione di feed come operazioni del servizio che restituiscono un tipo di dati speciale, SyndicationFeedFormatter. Le istanze dell’elemento SyndicationFeedFormatter possono serializzare un feed in entrambi i formati RSS 2.0 e ATOM, 1.0. Nell'esempio di codice seguente viene illustrato il contratto usato.

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

L'operazione GetProcesses è annotata con l'attributo WebGetAttribute che consente di controllare come WCF invia richieste HTTP GET alle operazioni di servizio e di specificare il formato dei messaggi inviati.

Come tutti i servizi WCF, i feed di diffusione possono essere indipendenti o ospitati in qualsiasi applicazione gestita. Per funzionare correttamente, i servizi di diffusione richiedono un'associazione specifica (WebHttpBinding) e un comportamento dell'endpoint specifico (WebHttpBehavior). La nuova classe WebServiceHost fornisce una API appropriata per la creazione degli endpoint senza configurazione specifica.

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)

In alternativa, è possibile usare WebServiceHostFactory dall'interno di un file con estensione svc ospitato in IIS per fornire una funzionalità equivalente (questa tecnica non viene dimostrata in questo codice di esempio).

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

Dato che il servizio riceve richieste usando l’ HTTP GET standard, per accedere al servizio è possibile usare qualsiasi client che supporta il formato RSS o ATOM. Ad esempio, è possibile visualizzare l'output di questo servizio passando a http://localhost:8000/diagnostics/feed/?format=atom o http://localhost:8000/diagnostics/feed/?format=rss in un browser compatibile con RSS.

È anche possibile usare In che modo il modello a oggetti di diffusione WCF esegue il mapping ad Atom ed RSS per leggere i dati diffusi ed elaborarli usando il codice imperativo.

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

Impostare, compilare ed eseguire l'esempio

  1. Assicurarsi di disporre dell'autorizzazione di registrazione dell'indirizzo corretta per HTTP e HTTPS nel computer, come illustrato nelle istruzioni di configurazione in Procedura di installazione monouso per gli esempi di Windows Communication Foundation.

  2. Compilare la soluzione.

  3. Eseguire l'applicazione console.

  4. Mentre l'applicazione console è in esecuzione, passare a http://localhost:8000/diagnostics/feed/?format=atom o http://localhost:8000/diagnostics/feed/?format=rss usando un browser compatibile con RSS.

Vedi anche