Esempio di feed di diagnostica autonomo
Questo esempio dimostra come creare un feed in formato RSS o ATOM di diffusione con Windows Communication Foundation (WCF). Si tratta di un programma "Hello World" di base che illustra le funzionalità di base del modello a oggetti e descrive come configurarlo in un servizio Windows Communication Foundation (WCF).
WCF modella i feed di diffusione in forma di operazioni di servizio che restituiscono un tipo di dati speciale, SyndicationFeedFormatter. Le istanze dell’elemento SyndicationFeedFormatter possono serializzare un feed in entrambi i formati RSS 2.0 e ATOM, 1.0. Nell'esempio di codice seguente viene illustrato il contratto utilizzato.
[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);
}
L'operazione GetProcesses
è annotata con l'attributo WebGetAttribute che consente di controllare come WCF invia richieste HTTP GET alle operazioni di servizio e di specificare il formato dei messaggi inviati.
Come tutti i servizi WCF, i feed di diffusione possono essere indipendenti o ospitati in qualsiasi applicazione gestita. Per funzionare correttamente, i servizi di diffusione richiedono un'associazione specifica (WebHttpBinding) e un comportamento dell'endpoint specifico (WebHttpBehavior). La nuova classe WebServiceHost fornisce una API appropriata per la creazione degli endpoint senza configurazione specifica.
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)
In alternativa, è possibile utilizzare WebServiceHostFactory dall'interno di un file con estensione svc ospitato in IIS per fornire una funzionalità equivalente (questa tecnica non viene dimostrata in questo codice di esempio).
<%@ ServiceHost Language="C#|VB" Debug="true" Service="ProcessService" %>
Dato che il servizio riceve richieste utilizzando l’ HTTP GET standard, per accedere al servizio è possibile utilizzare qualsiasi client che supporta il formato RSS o ATOM. Ad esempio, è possibile visualizzare l'output di questo servizio visitando https://localhost:8000/diagnostics/feed/?format=atom o https://localhost:8000/diagnostics/feed/?format=rss in un browser che supporta il formato RSS, come Internet Explorer 7.
Ė inoltre possibile utilizzare Modalità di mapping del modello a oggetti di diffusione WCF ad Atom e RSS per leggere i dati diffusi ed elaborarli utilizzando codice imperativo.
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());
}
Per impostare, compilare ed eseguire l'esempio DIBLOOK
Verificare di disporre dell'autorizzazione di registrazione dell'indirizzo necessaria per HTTP e HTTPS nel computer, come illustrato nelle istruzioni di installazione in Procedura di installazione singola per gli esempi di Windows Communication Foundation.
Compilare la soluzione.
Eseguire l'applicazione console.
Durante l'esecuzione dell'applicazione console, passare alla pagina https://localhost:8000/diagnostics/feed/?format=atom/ o https://localhost:8000/diagnostics/feed/?format=rss utilizzando un browser che supporta il formato RSS.
Nota: |
---|
È possibile che gli esempi siano già installati nel computer. Verificare la directory seguente (impostazione predefinita) prima di continuare.
<UnitàInstallazione>:\WF_WCF_Samples
Se questa directory non esiste, vedere la pagina relativa agli esempi di Windows Communication Foundation (WCF) e Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti gli esempi di Windows Communication Foundation (WCF) e WF. Questo esempio si trova nella directory seguente.
<UnitàInstallazione>:\WF_WCF_Samples\WCF\Basic\Syndication\DiagnosticsFeed
|