Ukázka samostatného diagnostického informačního kanálu
Ukázka DiagnosticsFeed ukazuje, jak vytvořit informační kanál RSS/Atom pro syndikaci se službou Windows Communication Foundation (WCF). Jedná se o základní program "Hello World", který ukazuje základy objektového modelu a jeho nastavení ve službě Windows Communication Foundation (WCF).
Modely WCF syndikace informační kanály jako operace služby, které vracejí speciální datový typ, SyndicationFeedFormatter. SyndicationFeedFormatter Instance mohou serializovat informační kanál do formátu RSS 2.0 i Atom 1.0. Následující ukázkový kód ukazuje použitý kontrakt.
[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);
}
Operace GetProcesses
je opatřena poznámkami s atributem WebGetAttribute , který umožňuje řídit, jak WCF odesílá požadavky HTTP GET do operací služby a určuje formát odeslaných zpráv.
Stejně jako všechny služby WCF můžou být kanály syndikace hostované v libovolné spravované aplikaci. Služby syndikace vyžadují, aby správně fungovaly konkrétní vazby (tj WebHttpBinding. ) a konkrétní chování koncového bodu (the WebHttpBehavior). Nová WebServiceHost třída poskytuje pohodlné rozhraní API pro vytváření takových koncových bodů bez konkrétní konfigurace.
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)
Alternativně můžete použít WebServiceHostFactory soubor .svc hostovaný službou IIS k zajištění ekvivalentních funkcí (tato technika není v tomto ukázkovém kódu ukázaná).
<% @ServiceHost Language="C#|VB" Debug="true" Service="ProcessService" %>
Vzhledem k tomu, že tato služba přijímá požadavky pomocí standardu HTTP GET, můžete pro přístup ke službě použít libovolného klienta s podporou RSS nebo ATOM. Výstup této služby můžete zobrazit například tak, že přejdete do http://localhost:8000/diagnostics/feed/?format=atom
prohlížeče s podporou RSS nebo http://localhost:8000/diagnostics/feed/?format=rss
do něj.
K čtení syndikovaných dat a zpracování pomocí imperativního kódu můžete také použít model objektu syndikace WCF Syndication Mapy atom a RSS.
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());
}
Nastavení, sestavení a spuštění ukázky
Ujistěte se, že máte na počítači správná oprávnění k registraci adres PRO PROTOKOL HTTP a HTTPS, jak je vysvětleno v pokynech k nastavení v jednorázovém instalačním postupu pro ukázky Windows Communication Foundation.
Sestavte řešení.
Spusťte konzolovou aplikaci.
V době, kdy je konzolová aplikace spuštěná, přejděte do
http://localhost:8000/diagnostics/feed/?format=atom
prohlížeče s podporou RSS nebohttp://localhost:8000/diagnostics/feed/?format=rss
ho použijte.