Bagikan melalui


Sampel Umpan Diagnostik yang Berdiri Sendiri

Sampel DiagnosticsFeed menunjukkan cara membuat umpan RSS/Atom untuk sindikasi dengan Windows Communication Foundation (WCF). Ini adalah program "Halo Dunia" dasar yang menunjukkan dasar-dasar model objek dan cara mengaturnya pada layanan Windows Communication Foundation (WCF).

WCF memodelkan umpan sindikasi sebagai operasi layanan yang mengembalikan jenis data khusus, SyndicationFeedFormatter. Instans dari SyndicationFeedFormatter dapat menserialisasikan umpan ke dalam format RSS 2.0 dan Atom 1.0. Sampel berikut menunjukkan kontrak yang digunakan.

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

Operasi GetProcesses diannotasikan dengan atribut WebGetAttribute yang memungkinkan Anda mengontrol bagaimana WCF mengirimkan permintaan HTTP GET ke operasi layanan dan menentukan format pesan yang dikirim.

Seperti layanan WCF lainnya, umpan sindikasi dapat dihosting sendiri di aplikasi terkelola apa pun. Layanan sindikasi memerlukan pengikatan tertentu (WebHttpBinding) dan perilaku titik akhir tertentu (WebHttpBehavior) agar berfungsi dengan benar. Kelas WebServiceHost baru menyediakan API yang nyaman untuk membuat titik akhir tersebut tanpa konfigurasi tertentu.

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)

Atau, Anda dapat menggunakan WebServiceHostFactory dari dalam file .svc yang dihosting IIS untuk menyediakan fungsionalitas yang setara (teknik ini tidak ditunjukkan dalam kode sampel ini).

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

Karena layanan ini menerima permintaan menggunakan HTTP GET standar, Anda dapat menggunakan klien sadar RSS atau ATOM untuk mengakses layanan. Misalnya, Anda dapat melihat output layanan ini dengan menavigasi ke http://localhost:8000/diagnostics/feed/?format=atom atau http://localhost:8000/diagnostics/feed/?format=rss di browser yang sadar RSS.

Anda juga dapat menggunakan Bagaimana Model Objek Sindikasi WCF Memetakan ke Atom dan RSS untuk membaca data sindikasi dan memprosesnya menggunakan kode imperatif.

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

Menyiapkan, membangun, dan menjalankan sampel

  1. Pastikan Anda memiliki izin pendaftaran alamat yang tepat untuk HTTP dan HTTPS di komputer seperti yang dijelaskan dalam instruksi penyiapan di Prosedur Penyiapan Satu Kali untuk Sampel Windows Communication Foundation.

  2. Bangun solusinya.

  3. Jalankan aplikasi konsol.

  4. Saat aplikasi konsol berjalan, navigasikan ke http://localhost:8000/diagnostics/feed/?format=atom atau http://localhost:8000/diagnostics/feed/?format=rss menggunakan browser yang sadar RSS.

Lihat juga