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 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.
La compatibilidad de la distribución se genera sobre el modelo de programación web de WCF que define el enlace WebHttpBinding, que se utiliza junto con WebHttpBehavior para hacer que las fuentes estén disponibles como servicios. Para obtener más información acerca de modelo de programación web de WCF, consulte Información general del modelo de objetos de programación web de WCF.
Nota
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 |
---|---|
Una clase que serializa una instancia de SyndicationFeed al formato Atom 1.0. |
|
Una clase que serializa las clases derivadas de SyndicationFeed al formato Atom 1.0. |
|
Una clase que serializa una instancia de SyndicationItem al formato Atom 1.0. |
|
Una clase que serializa las clases derivadas de SyndicationItem al formato Atom 1.0. |
|
Una clase que serializa una instancia de SyndicationFeed al formato RSS 2.0. |
|
Una clase que serializa las clases derivadas de SyndicationFeed al formato RSS 2.0. |
|
Una clase que serializa una instancia de SyndicationItem al formato RSS 2.0. |
|
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. |
Una clase base que representa el contenido de distribución. |
|
Una clase que representa una extensión de elemento de distribución. |
|
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. |
Una clase que representa las versiones del protocolo de distribución admitidas. |
|
Una clase que representa cualquier contenido SyndicationItem que se va a mostrar a un usuario final. |
|
Una enumeración que representa los diferentes tipos de contenido de distribución de texto admitidos. |
|
Una clase que representa el contenido de distribución que consta de una dirección URL para otro recurso. |
|
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, consulte Extensibilidad de la distribución.
Consulte 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