Compartir a través de


Arquitectura de distribución

La API de distribución está diseñada para proporcionar un modelo de programación neutral en cuanto al formato que permita escribir contenido distribuido en la conexión en una variedad de formatos. El modelo de datos abstracto está compuesto por las siguientes clases:

Estas clases se asignan estrechamente a las estructuras definidas en la especificación Atom 1.0, aunque algunos de los nombres son diferentes.

En Windows Communication Foundation (WCF), las fuentes de distribución se modelan como otro tipo de operación de servicio, uno en donde el tipo de valor devuelto es el de las clases derivadas de SyndicationFeedFormatter. La recuperación de una fuente se modela como un intercambio de mensajes de solicitud‑respuesta. Un cliente envía una solicitud al servicio y el servicio responde. El mensaje de solicitud se establece a través de un protocolo de infraestructura (por ejemplo, HTTP sin formato) y el mensaje de respuesta contiene una carga útil que está compuesta por un formato de distribución reconocido (RSS 2.0 o Atom 1.0). Los servicios que implementan estos intercambios de mensajes se conocen como servicios de distribución.

El contrato para un servicio de distribución está compuesto por un conjunto de operaciones que devuelve una instancia de la clase SyndicationFeedFormatter. El siguiente ejemplo muestra una declaración de interfaz para un servicio de distribución.

[ServiceContract]
[ServiceKnownType(typeof(Atom10FeedFormatter))]
[ServiceKnownType(typeof(Rss20FeedFormatter))]
public interface IBlog
{
    [OperationContract]
    [WebGet(UriTemplate="GetBlog?format={format}", BodyStyle=WebMessageBodyStyle.Bare)]
    SyndicationFeedFormatter GetBlog(string format);       
}

La compatibilidad de la distribución se genera sobre el modelo de programación REST de WCF que define el enlace WebHttpBinding, que se usa junto con WebHttpBehavior para hacer que las fuentes estén disponibles como servicios. Para obtener más información sobre modelo de programación REST de WCF, vea Información general del modelo de programación web HTTP de WCF.

Bb412203.note(es-es,VS.100).gifNota:
La especificación Atom 1.0 permite especificar segundos fraccionarios en cualquiera de sus estructuras de fechas. Al serializar y deserializar, la implementación de WCF pasa por alto los segundos fraccionarios.

Modelo de objetos

El modelo de objetos para la distribución está compuesto de grupos de clases de las tablas siguientes.

Dar formato a las clases:

Clase Descripción

Atom10FeedFormatter

Una clase que serializa una instancia de SyndicationFeed al formato Atom 1.0.

Atom10FeedFormatter

Una clase que serializa las clases derivadas de SyndicationFeed al formato Atom 1.0.

Atom10ItemFormatter

Una clase que serializa una instancia de SyndicationItem al formato Atom 1.0.

Atom10ItemFormatter

Una clase que serializa las clases derivadas de SyndicationItem al formato Atom 1.0.

Rss20FeedFormatter

Una clase que serializa una instancia de SyndicationFeed al formato RSS 2.0.

Rss20FeedFormatter

Una clase que serializa las clases derivadas de SyndicationFeed al formato RSS 2.0.

Rss20ItemFormatter

Una clase que serializa una instancia de SyndicationItem al formato RSS 2.0.

Rss20ItemFormatter

Una clase que serializa las clases derivadas de SyndicationItem al formato RSS 2.0.

Clases de modelo de objetos:

Clase Descripción

SyndicationCategory

Una clase que representa la categoría de una fuente de distribución.

SyndicationContent

Una clase base que representa el contenido de distribución.

SyndicationElementExtension

Una clase que representa una extensión de elemento de distribución.

SyndicationElementExtensionCollection

Una colección de objetos SyndicationElementExtension.

SyndicationFeed

Una clase que representa un objeto de fuente de nivel superior.

SyndicationItem

Una clase que representa un elemento de fuente.

SyndicationLink

Una clase que representa un vínculo dentro de una fuente o elemento de distribución.

SyndicationPerson

Una clase que representa una estructura Atom Person.

SyndicationVersions

Una clase que representa las versiones del protocolo de distribución admitidas.

TextSyndicationContent

Una clase que representa cualquier contenido SyndicationItem que se va a mostrar a un usuario final.

TextSyndicationContentKind

Una enumeración que representa los diferentes tipos de contenido de distribución de texto admitidos.

UrlSyndicationContent

Una clase que representa el contenido de distribución que consta de una dirección URL para otro recurso.

XmlSyndicationContent

Una clase que representa contenido de distribución que no se mostrará en un explorador.

Las abstracciones de datos básicas en el modelo de objetos son Fuente y Elemento, que corresponde a las clases SyndicationFeed y SyndicationItem. Una Fuente expone algunos metadatos de nivel de fuente (por ejemplo, Título, Descripción y Autor), una ubicación para almacenar las extensiones desconocidas y un conjunto de elementos que constituyen el resto del contenido de la información de la fuente. Un Elemento permite que algunos metadatos de nivel de elemento (por ejemplo, Título, Resumen y PublicationDate) estén disponibles, una ubicación para almacenar las extensiones desconocidas y un elemento de contenido que contiene el resto del contenido de la información del elemento. Las abstracciones básicas de Fuente y Elemento son admitidas por clases adicionales que representan las estructuras de datos a las que se hace referencia en las especificaciones de Atom 1.0 y RSS.

La información llevada en una instancia de Fuente se puede convertir en una variedad de formatos XML. La clase SyndicationFeedFormatter administra el proceso de convertir al formato XML y desde él. Esta clase es abstracta; se proporcionan implementaciones concretas para Atom 1.0 y RSS 2.0, Atom10FeedFormatter y Rss20FeedFormatter. Para utilizar las clases de Fuente derivadas, utilice Atom10FeedFormatter o Rss20FeedFormatter cuando le permitan especificar una clase Fuente derivada. Para utilizar las clases de elemento derivadas utilice Atom10ItemFormatter o Rss20ItemFormatter puesto que le permitan especificar una clase de elemento derivada. Los terceros pueden derivar su propia implementación de SyndicationFeedFormatter para admitir los diferentes formatos de distribución.

Extensibilidad

  • Una característica clave de los protocolos de distribución es la extensibilidad. Atom 1.0 y RSS 2.0 le permiten agregar atributos y elementos a las fuentes de distribución que no están definidas en las especificaciones. El modelo de programación de distribución de WCF proporciona dos maneras de trabajar con atributos y extensiones personalizados: la derivación de una nueva clase y el acceso escrito de forma imprecisa. Para obtener más información, vea Extensibilidad de la distribución.

Vea también

Conceptos

Información general de distribución de WCF
Asignación del modelo de objetos de distribución de WCF a Atom y RSS

Otros recursos

Modelo de programación de web HTTP de WCF