Feed-BeispielStand-Alone Diagnostics Feed Sample

Dieses Beispiel demonstriert, wie Sie einen RSS-/ATOM-Feed für die Syndizierung mit Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) erstellen.This sample demonstrates how to create an RSS/Atom feed for syndication with Windows Communication Foundation (WCF)Windows Communication Foundation (WCF). Es handelt sich um ein einfaches "Hello World"-Programm, das die Grundlagen des Objektmodells und die Einrichtung in einem Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Dienst zeigt.It is a basic "Hello World" program that shows the basics of the object model and how to set it up on a Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) service.

WCFWCF modelliert Syndication-Feeds als Dienstoperationen, die einen speziellen Datentyp zurückgeben: SyndicationFeedFormatter. models syndication feeds as service operations that return a special data type, SyndicationFeedFormatter. Instanzen von SyndicationFeedFormatter können einen Feed sowohl in das Format RSS 2.0 als auch in das Format Atom 1.0 serialisieren.Instances of SyndicationFeedFormatter can serialize a feed into both the RSS 2.0 and Atom 1.0 formats. Der folgende Beispielcode zeigt den verwendeten Vertrag.The following sample code shows the contract used.

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

An die GetProcesses-Operation wird das WebGetAttribute-Attribut angehängt, das Ihnen ermöglicht zu steuern, wie WCFWCF HTTP GET-Anforderungen an Dienstoperationen verteilt werden, und das Format der gesendeten Nachrichten anzugeben.The GetProcesses operation is annotated with the WebGetAttribute attribute that enables you to control how WCFWCF dispatches HTTP GET requests to service operations and specify the format of the messages sent.

Wie alle WCFWCF-Dienste können Syndication-Feeds lokal oder in jeder verwalteten Anwendung selbst gehostet werden.Like any WCFWCF service, syndication feeds can be self hosted in any managed application. Syndication-Dienste erfordern eine bestimmte Bindung (die WebHttpBinding) und ein bestimmtes Endpunktverhalten (das WebHttpBehavior), um ordnungsgemäß zu funktionieren.Syndication services require a specific binding (the WebHttpBinding) and a specific endpoint behavior (the WebHttpBehavior) to function correctly. Die neue WebServiceHost-Klasse stellt eine geeignete API zur Erstellung solcher Endpunkte ohne eine spezielle Konfiguration bereit.The new WebServiceHost class provides a convenient API for creating such endpoints without specific configuration.

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)  

Alternativ können Sie WebServiceHostFactory in einer in IIS gehosteten .svc-Datei verwenden, um die entsprechende Funktionalität bereitzustellen (dieses Verfahren wird in diesem Beispielcode nicht gezeigt).Alternatively, you can use WebServiceHostFactory from within an IIS-hosted .svc file to provide equivalent functionality (this technique is not demonstrated in this sample code).

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

Da dieser Dienst Anforderungen über die HTTP GET-Standardmethode empfängt, können Sie jeden beliebigen RSS- oder ATOM-fähigen Client verwenden, um auf den Dienst zuzugreifen.Because this service receives requests using the standard HTTP GET, you can use any RSS or ATOM-aware client to access the service. Sie können zum Beispiel die Ausgabe dieses Dienstes anzeigen, indem Sie mit einem RSS-fähigen Browser wie Internet Explorer 7 nach http://localhost:8000/diagnostics/feed/?format=atom/ oder http://localhost:8000/diagnostics/feed/?format=rss navigieren.For example, you can view the output of this service by navigating to http://localhost:8000/diagnostics/feed/?format=atom or http://localhost:8000/diagnostics/feed/?format=rss in an RSS-aware browser such as Internet Explorer 7.

Sie können auch die wie das WCF Syndication-Objekt Modell Maps Atom und RSS syndizierte Daten gelesen und mithilfe von imperativem Code zu verarbeiten.You can also use the How the WCF Syndication Object Model Maps to Atom and RSS to read syndicated data and process it using imperative code.

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

So können Sie das Beispiel einrichten, erstellen und ausführenTo set up, build, and run the sample

  1. Stellen Sie sicher, dass Sie die richtige Adresse Registrierung-Berechtigung für HTTP und HTTPS auf dem Computer verfügen, wie in der Gruppe von Anweisungen in erläutert Setupprozedur für die Windows Communication Foundation-Beispiele zum einmaligen.Ensure that you have the right address registration permission for HTTP and HTTPS on the computer as explained in the set up instructions in One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. Erstellen Sie die Projektmappe.Build the solution.

  3. Führen Sie die Konsolenanwendung aus.Run the console application.

  4. Während die Konsolenanwendung ausgeführt wird, navigieren Sie mit einem RSS-fähigen Browser zu http://localhost:8000/diagnostics/feed/?format=atom oder http://localhost:8000/diagnostics/feed/?format=rss.While the console application is running, navigate to http://localhost:8000/diagnostics/feed/?format=atom or http://localhost:8000/diagnostics/feed/?format=rss using an RSS-aware browser.

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your computer. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) - und WFWF -Beispiele herunterzuladen.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) and WFWF samples. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Syndication\DiagnosticsFeed

Siehe auchSee Also

WCF-Web-HTTP-ProgrammiermodellWCF Web HTTP Programming Model
WCF SyndicationWCF Syndication