Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sampel DiagnosticsFeed menunjukkan cara membuat umpan RSS/Atom untuk sindikasi dengan Windows Communication Foundation (WCF). Ini adalah program dasar "Halo Dunia" 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. Instance dari SyndicationFeedFormatter dapat menserialisasikan umpan menjadi format RSS 2.0 dan Atom 1.0. Contoh kode 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 ini diannotasikan dengan WebGetAttribute atribut yang memungkinkan Anda mengontrol bagaimana WCF mengirimkan permintaan HTTP GET ke operasi layanan dan menentukan format pesan yang dikirim.
Seperti layanan WCF apa pun, umpan sindikasi dapat dihost sendiri di aplikasi terkelola apa pun. Layanan sindikasi memerlukan pengikatan tertentu ( WebHttpBinding) dan perilaku titik akhir tertentu ( WebHttpBehavior) untuk berfungsi dengan benar. Kelas baru WebServiceHost 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 sadar RSS.
Anda juga dapat menggunakan Cara 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
Pastikan Anda memiliki izin registrasi alamat yang benar untuk HTTP dan HTTPS di komputer seperti yang dijelaskan dalam instruksi pengaturan dalam Prosedur PengaturanOne-Time untuk Contoh Windows Communication Foundation.
Bangun solusinya.
Jalankan aplikasi konsol.
Saat aplikasi konsol berjalan, navigasikan ke
http://localhost:8000/diagnostics/feed/?format=atomatauhttp://localhost:8000/diagnostics/feed/?format=rssgunakan browser sadar RSS.
Lihat juga
- Model Pemrograman HTTP Web WCF
- sindikasi WCF