Delen via


Voorbeeld van zelfstandige diagnostische feed

Het voorbeeld diagnosticsfeed laat zien hoe u een RSS/Atom-feed maakt voor syndicatie met WcF (Windows Communication Foundation). Het is een eenvoudig 'Hallo wereld'-programma dat de basisbeginselen van het objectmodel weergeeft en hoe u dit instelt in een WCF-service (Windows Communication Foundation).

WCF-modellen syndicatiefeeds als servicebewerkingen die een speciaal gegevenstype retourneren. SyndicationFeedFormatter Exemplaren van SyndicationFeedFormatter kunnen een feed serialiseren in zowel de indelingen RSS 2.0 als Atom 1.0. In de volgende voorbeeldcode ziet u het gebruikte contract.

[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);
    }

De GetProcesses bewerking wordt geannoteerd met het WebGetAttribute kenmerk waarmee u kunt bepalen hoe WCF HTTP GET-aanvragen verzendt naar servicebewerkingen en de indeling van de verzonden berichten opgeeft.

Net als elke WCF-service kunnen syndicatiefeeds zelf worden gehost in elke beheerde toepassing. Voor syndicatieservices is een specifieke binding (de WebHttpBinding) en een specifiek eindpuntgedrag (de WebHttpBehavior) vereist om correct te functioneren. De nieuwe WebServiceHost klasse biedt een handige API voor het maken van dergelijke eindpunten zonder specifieke configuratie.

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)

U kunt WebServiceHostFactory ook vanuit een .svc-bestand met IIS-host gebruiken om equivalente functionaliteit te bieden (deze techniek wordt niet gedemonstreerd in deze voorbeeldcode).

<% @ServiceHost Language="C#|VB" Debug="true" Service="ProcessService" %>

Omdat deze service aanvragen ontvangt met behulp van de standaard HTTP GET, kunt u elke RSS- of ATOM-compatibele client gebruiken om toegang te krijgen tot de service. U kunt bijvoorbeeld de uitvoer van deze service bekijken door naar of http://localhost:8000/diagnostics/feed/?format=rss in een RSS-bewuste browser te http://localhost:8000/diagnostics/feed/?format=atom navigeren.

U kunt ook het WCF Syndication Object Model Kaarten naar Atom en RSS gebruiken om gesyndiceerde gegevens te lezen en te verwerken met behulp van imperatieve code.

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());
}

Het voorbeeld instellen, bouwen en uitvoeren

  1. Zorg ervoor dat u de juiste adresregistratiemachtiging hebt voor HTTP en HTTPS op de computer, zoals wordt uitgelegd in de installatie-instructies in de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden.

  2. Bouw de oplossing.

  3. Voer de consoletoepassing uit.

  4. Terwijl de consoletoepassing wordt uitgevoerd, gaat u naar http://localhost:8000/diagnostics/feed/?format=atom of http://localhost:8000/diagnostics/feed/?format=rss gebruikt u een RSS-compatibele browser.

Zie ook