Compartir a través de


Ejemplo de fuente de diagnósticos independientes

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 de Windows Communication Foundation (WCF).

WCF modela las fuentes de distribución como operaciones de 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 distribución requieren un enlace específico (WebHttpBinding) y un comportamiento del extremo específico (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 Asignación del modelo de objetos de distribución de WCF a Atom y RSS para leer datos distribuidos 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, compilar y ejecutar el ejemplo

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

  2. Compile 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.

Bb410776.Important(es-es,VS.100).gif Nota:
Puede que los ejemplos ya estén instalados en su equipo. Compruebe el siguiente directorio (valor predeterminado) antes de continuar.

<InstallDrive>:\WF_WCF_Samples

Si no existe este directorio, vaya a la página de ejemplos de Windows Communication Foundation (WCF) y Windows Workflow Foundation (WF) Samples para .NET Framework 4 para descargar todos los ejemplos de WF y Windows Communication Foundation (WCF). Este ejemplo se encuentra en el siguiente directorio.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Syndication\DiagnosticsFeed

Vea también

Otros recursos

Modelo de programación de web HTTP de WCF
Sindicación en WCF