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.
Tipp
Zum Erstellen und Ausführen dieses Beispiels muss .NET Framework, Version 3.5 installiert sein. Zum Öffnen des Projekts und der Projektmappendateien ist Visual Studio 2008 erforderlich.
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 Syndication Object Model 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
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 Beispiele zum einmaligen Setupverfahren für Windows Communication Foundation beschrieben.
Erstellen Sie die Projektmappe.
Führen Sie die Konsolenanwendung aus.
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.
Siehe auch
Weitere Ressourcen
Web Programming Model
WCF Syndication
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.