Bağımsız Tanılama Akış Örneği

DiagnosticsFeed örneği, Windows Communication Foundation (WCF) ile dağıtım için RSS/Atom akışının nasıl oluşturulacağını gösterir. Nesne modelinin temellerini ve bir Windows Communication Foundation (WCF) hizmetinde nasıl ayarlandığını gösteren temel bir "Merhaba Dünya" programıdır.

WCF, dağıtım akışlarını, özel bir veri türü SyndicationFeedFormatterdöndüren hizmet işlemleri olarak modeller. SyndicationFeedFormatter örnekleri bir akışı hem RSS 2.0 hem de Atom 1.0 biçimlerinde seri hale getirebilir. Aşağıdaki örnek kod, kullanılan sözleşmeyi gösterir.

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

bu GetProcesses işleme, WCF'nin HTTP GET isteklerini hizmet işlemlerine nasıl gönderdiğini denetlemenize ve gönderilen iletilerin biçimini belirtmenize olanak tanıyan özniteliğiyle WebGetAttribute ek açıklama eklenir.

Tüm WCF hizmetlerinde olduğu gibi, dağıtım akışları da yönetilen herhangi bir uygulamada kendi kendine barındırılabilir. Dağıtım hizmetlerinin düzgün çalışması için belirli bir bağlama () WebHttpBindingve belirli bir uç nokta davranışı () WebHttpBehaviorgerekir. Yeni WebServiceHost sınıf, belirli bir yapılandırma olmadan bu tür uç noktaları oluşturmak için uygun bir API sağlar.

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)

Alternatif olarak, iis tarafından barındırılan bir .svc dosyasının içinden kullanarak eşdeğer işlevsellik sağlayabilirsiniz WebServiceHostFactory (bu teknik bu örnek kodda gösterilmez).

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

Bu hizmet, istekleri standart HTTP GET kullanarak aldığından, hizmete erişmek için herhangi bir RSS veya ATOM kullanan istemciyi kullanabilirsiniz. Örneğin, RSS kullanan bir tarayıcıda veya http://localhost:8000/diagnostics/feed/?format=rss adresine giderek http://localhost:8000/diagnostics/feed/?format=atom bu hizmetin çıkışını görüntüleyebilirsiniz.

Ayrıca, WCF Dağıtım Nesne Modelinin, dağıtım verilerini okumak ve kesinlik temelli kod kullanarak işlemek için Atom ve RSS'ye Haritalar da kullanabilirsiniz.

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

Örneği ayarlama, derleme ve çalıştırma

  1. Windows Communication Foundation Örnekleri için Tek Seferlik Kurulum Yordamı'ndaki kurulum yönergelerinde açıklandığı gibi bilgisayarda HTTP ve HTTPS için doğru adres kaydı iznine sahip olduğunuzdan emin olun.

  2. Çözümü oluşturun.

  3. Konsol uygulamasını çalıştırın.

  4. Konsol uygulaması çalışırken RSS kullanan bir tarayıcıya http://localhost:8000/diagnostics/feed/?format=atom gidin veya http://localhost:8000/diagnostics/feed/?format=rss tarayıcıyı kullanın.

Ayrıca bkz.