Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A DiagnosticsFeed minta bemutatja, hogyan hozhat létre RSS/Atom-hírcsatornát a Windows Communication Foundation (WCF) együttműködéséhez. Ez egy alapszintű "Hello World" program, amely bemutatja az objektummodell alapjait, és azt, hogyan állíthatja be a Windows Communication Foundation (WCF) szolgáltatásban.
A WCF a szindikálási hírcsatornákat olyan szolgáltatásműveletekként modellezi, amelyek egy speciális adattípust adnak vissza. SyndicationFeedFormatter Az SyndicationFeedFormatter példányai szerializálhatják a hírcsatornát mind az RSS 2.0, mind az Atom 1.0 formátumokba. Az alábbi mintakód a használt szerződést mutatja be.
[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);
}
A GetProcesses művelet megjegyzést kap azzal az WebGetAttribute attribútummal, amely lehetővé teszi annak szabályozását, hogy a WCF hogyan küld HTTP GET-kéréseket a szolgáltatásműveleteknek, és adja meg az elküldött üzenetek formátumát.
Mint minden WCF-szolgáltatás, a szindikálási hírcsatornák is üzemeltethetők önállóan bármely felügyelt alkalmazásban. A syndication-szolgáltatásoknak egy adott kötésre (WebHttpBinding) és egy adott végponti viselkedésre (WebHttpBehavior) van szükségük a helyes működéshez. Az új WebServiceHost osztály egy kényelmes API-t biztosít az ilyen végpontok speciális konfiguráció nélküli létrehozásához.
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)
Alternatívaként használhatja a WebServiceHostFactory komponenst egy IIS által üzemeltetett .svc fájlban az egyenértékű funkció biztosítására (ez a módszer ebben a mintakódban nem kerül bemutatásra).
<% @ServiceHost Language="C#|VB" Debug="true" Service="ProcessService" %>
Mivel ez a szolgáltatás a szabványos HTTP GET használatával fogad kéréseket, bármely RSS- vagy ATOM-képes ügyféllel hozzáférhet a szolgáltatáshoz. Például megtekintheti a szolgáltatás kimenetét egy RSS-kompatibilis böngészőben úgy, hogy navigál a http://localhost:8000/diagnostics/feed/?format=atom vagy a http://localhost:8000/diagnostics/feed/?format=rss felé.
A WCF syndication object model Maps to Atom és RSS használatával is elolvashatja a szindikált adatokat, és imperatív kóddal feldolgozhatja azokat.
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());
}
A minta beállítása, összeállítása és futtatása
Győződjön meg arról, hogy megfelelő címregisztrációs engedéllyel rendelkezik a HTTP-hez és a HTTPS-hez a számítógépen a Windows Kommunikációs alapminták beállítási eljárásánakOne-Time beállítási útmutatójában leírtak szerint.
Hozza létre a megoldást.
Futtassa a konzolalkalmazást.
Amíg a konzolalkalmazás fut, navigáljon
http://localhost:8000/diagnostics/feed/?format=atomvagyhttp://localhost:8000/diagnostics/feed/?format=rssegy RSS-kompatibilis böngésző használatával.