Freigeben über


Feed-Beispiel

Dieses Beispiel demonstriert, wie Sie einen RSS-/ATOM-Feed für die Syndizierung mit Windows Communication Foundation (WCF) erstellen. Es handelt sich um ein einfaches "Hello World"-Programm, das die Grundlagen des Objektmodells und die Einrichtung in einem Windows Communication Foundation (WCF)-Dienst zeigt.

WCF modelliert Syndication-Feeds als Dienstoperationen, die einen speziellen Datentyp zurückgeben: SyndicationFeedFormatter. Instanzen von SyndicationFeedFormatter können einen Feed sowohl in das Format RSS 2.0 als auch in das Format Atom 1.0 serialisieren. Der folgende Beispielcode zeigt den verwendeten Vertrag.

[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 WCF HTTP GET-Anforderungen an Dienstoperationen verteilt werden, und das Format der gesendeten Nachrichten anzugeben.

Wie alle WCF-Dienste können Syndication-Feeds lokal oder in jeder verwalteten Anwendung selbst gehostet werden. Syndication-Dienste erfordern eine bestimmte Bindung (die WebHttpBinding) und ein bestimmtes Endpunktverhalten (das WebHttpBehavior), um ordnungsgemäß zu funktionieren. Die neue WebServiceHost-Klasse stellt eine geeignete API zur Erstellung solcher Endpunkte ohne eine spezielle Konfiguration bereit.

WebServiceHost host = new WebServiceHost(typeof(ProcessService), new Uri("https://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).

<%@ 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. Sie können zum Beispiel die Ausgabe dieses Dienstes anzeigen, indem Sie mit einem RSS-fähigen Browser wie Internet Explorer 7 nach https://localhost:8000/diagnostics/feed/?format=atom/ oder https://localhost:8000/diagnostics/feed/?format=rss navigieren.

Sie können auch das Wie das WCF-Syndication-Objektmodell Atom und RSS zugeordnet wird verwenden, um Syndication-Daten zu lesen und sie mit imperativen Code zu verarbeiten.

XmlReader reader = XmlReader.Create( "https://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 richten Sie das Beispiel ein, erstellen es und führen es aus

  1. Stellen Sie sicher, dass Sie über die richtigen Adressen-Registrierungsberechtigungen für HTTP und HTTPS auf dem Computer verfügen, wie in den Setupanweisungen unter Einmaliges Setupverfahren für Windows Communication Foundation-Beispiele beschrieben.

  2. Erstellen Sie die Projektmappe.

  3. Führen Sie die Konsolenanwendung aus.

  4. Während die Konsolenanwendung ausgeführt wird, navigieren Sie mit einem RSS-fähigen Browser zu https://localhost:8000/diagnostics/feed/?format=atom oder https://localhost:8000/diagnostics/feed/?format=rss.

Bb410776.Important(de-de,VS.100).gif Hinweis:
Die Beispiele sind möglicherweise bereits auf dem Computer installiert. Überprüfen Sie das folgende (standardmäßige) Verzeichnis, bevor Sie fortfahren.

<Installationslaufwerk>:\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)- und WF-Beispiele herunterzuladen. Dieses Beispiel befindet sich im folgenden Verzeichnis.

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

Siehe auch

Weitere Ressourcen

WCF-Web-HTTP-Programmiermodell
WCF Syndication