Feed-Beispiel
Das DiagnosticsFeed-Beispiel veranschaulicht, wie Sie einen RSS/Atom-Feed für die Veröffentlichung mit Windows Communication Foundation (WCF) erstellen. Es handelt sich um ein einfaches "Hello World"-Programm, das die Grundlagen des Objektmodells und die Einrichtung auf einem WCF-Dienst (Windows Communication Foundation) 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);
}
Der GetProcesses
-Vorgang wird mit dem WebGetAttribute-Attribut versehen, das Ihnen ermöglicht zu steuern, wie HTTP GET-Anforderungen an Dienstvorgänge 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("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).
<% @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 z. B. die Ausgabe dieses Diensts anzeigen, indem Sie zu http://localhost:8000/diagnostics/feed/?format=atom
oder http://localhost:8000/diagnostics/feed/?format=rss
in einem RSS-fähigen Browser navigieren.
Sie können auch verwenden, wie das WCF Syndication-Objektmodell Atom und RSS zugeordnet ist, um Syndikatdaten zu lesen und mit imperativem Code zu verarbeiten.
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());
}
Einrichten, Erstellen und Ausführen des Beispiels
Stellen Sie sicher, dass Sie über die richtige Adressregistrierungsberechtigung für HTTP und HTTPS auf dem Computer verfügen, wie in den Einrichtungsanweisungen im Einmaligen Setup-Verfahren für die Windows Communication Foundation-Beispieleerläutert.
Erstellen Sie die Projektmappe.
Führen Sie die Konsolenanwendung aus.
Während die Konsolenanwendung ausgeführt wird, navigieren Sie zu
http://localhost:8000/diagnostics/feed/?format=atom
einem RSS-fähigen Browser oderhttp://localhost:8000/diagnostics/feed/?format=rss
verwenden sie.