Ejemplo de fuente de diagnósticos independientes

Download sample

Este ejemplo demuestra cómo crear una fuente de RSS/Atom para la distribución con Windows Communication Foundation (WCF). Es un programa "Hola a todos" básico que muestra los fundamentos del modelo de objetos y cómo configurarlo en un servicio Windows Communication Foundation (WCF).

Nota

En este ejemplo, para generar y ejecutar, es necesario que esté instalado .NET Framework versión 3.5. Para abrir los archivos de solución y proyecto se necesita Visual Studio 2008.

WCF modela las fuentes de sindicación como operaciones del servicio que devuelven un tipo de datos especial, SyndicationFeedFormatter. Las instancias de SyndicationFeedFormatter pueden serializar una fuente en los formatos RSS 2.0 y Atom 1.0. El código de ejemplo siguiente muestra el contrato utilizado.

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

La operación GetProcesses se agrega con el atributo WebGetAttribute que le permite controlar cómo WCF envía las solicitudes HTTP GET de operaciones de servicio y especifica el formato de los mensajes enviados.

Como cualquier servicio WCF, las fuentes de sindicación pueden hospedarse en sí mismas en cualquier aplicación administrada. Los servicios de sindicación requieren un enlace específico (el WebHttpBinding) y un comportamiento de extremo específico (el WebHttpBehavior) para funcionar correctamente. La nueva clase WebServiceHost proporciona un API apropiado para crear estos extremos sin una configuración específica:

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)

También puede utilizar WebServiceHostFactory desde un archivo .svc hospedado en IIS para proporcionar funcionalidad equivalente (esta técnica no está demostrada en este código de ejemplo):

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

Dado que este servicio recibe las solicitudes que utilizan el HTTP GET estándar, puede utilizar cualquier cliente que reconozca RSS o Atom para tener acceso al servicio. Por ejemplo, puede ver el resultado de este servicio yendo a https://localhost:8000/diagnostics/feed/?format=atom or https://localhost:8000/diagnostics/feed/?format=rss con un explorador que reconozca RSS como Internet Explorer 7.

También puede utilizar Syndication Object Model para leer datos sindicados y procesarlos mediante código 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());
}

Para configurar, generar y ejecutar el ejemplo

  1. Asegúrese de que tiene en el equipo el permiso de registro de dirección correcto para HTTP y HTTPS, tal y como se explica en las instrucciones de instalación enumeradas en Procedimiento de instalación único para ejemplos de Windows Communication Foundation.

  2. Genere la solución.

  3. Ejecute la aplicación de consola.

  4. Mientras la aplicación de consola se ejecuta, vaya a https://localhost:8000/diagnostics/feed/?format=atom or https://localhost:8000/diagnostics/feed/?format=rss con un explorador que reconozca RSS.

Consulte también

Otros recursos

Web Programming Model
WCF Syndication

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.