Partager via


Architecture de syndication

L'API de syndication est conçue pour fournir un modèle de programmation neutre en ce qui concerne le format qui autorise l'écriture du contenu syndiqué sur le fil dans divers formats. Le modèle de données abstrait inclut les classes suivantes :

Ces classes mappent précisément aux constructions définies dans la spécification Atom 1.0, bien que certains noms soient différents.

Dans Windows Communication Foundation (WCF), les flux de syndication sont modelés comme tout autre type d’opération de service, où le type de retour est l’une des classes dérivées de SyndicationFeedFormatter. La récupération d'un flux est modelée comme un échange de messages de demande-réponse. Un client envoie une demande au service et le service répond. Le message de requête est défini sur un protocole d'infrastructure (HTTP brut, par exemple) et le message de réponse contient une charge utile qui se compose d'un format de syndication (RSS 2.0 ou Atom 1.0) communément compris. Les services qui implémentent ces échanges de messages sont appelés « services de syndication ».

Le contrat pour un service de syndication se compose d'un jeu d'opérations qui retourne une instance de la classe SyndicationFeedFormatter. L'exemple suivant montre une déclaration d'interface pour un service de syndication.

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

La prise en charge de la syndication est construite sur le modèle de programmation REST de WCF qui définit la liaison WebHttpBinding utilisée conjointement à WebHttpBehavior pour rendre les flux disponibles en tant que services. Pour plus d’informations sur le modèle de programmation REST WCF, consultez Vue d’ensemble du modèle de programmation HTTP web WCF.

Notes

La spécification Atom 1.0 permet de spécifier des fractions de seconde dans l'un de ses constructeurs Date. Lors de la sérialisation et de la désérialisation, l’implémentation WCF ignore les fractions de seconde.

Modèle objet

Le modèle objet pour la syndication se compose de groupes de classes répertoriés dans les tableaux suivants.

Classes de formatage :

Classe Description
Atom10FeedFormatter Classe chargée de sérialiser une instance SyndicationFeed au format Atom 1.0.
Atom10FeedFormatter<TSyndicationFeed> Classe chargée de sérialiser des classes dérivées de SyndicationFeed au format Atom 1.0.
Atom10ItemFormatter Classe chargée de sérialiser une instance SyndicationItem au format Atom 1.0.
Atom10ItemFormatter<TSyndicationItem> Classe chargée de sérialiser des classes dérivées de SyndicationItem au format Atom 1.0.
Rss20FeedFormatter Classe chargée de sérialiser une instance SyndicationFeed au format RSS 2.0.
Rss20FeedFormatter<TSyndicationFeed> Classe chargée de sérialiser des classes dérivées de SyndicationFeed au format RSS 2.0.
Rss20ItemFormatter Classe chargée de sérialiser une instance SyndicationItem au format RSS 2.0.
Rss20ItemFormatter<TSyndicationItem> Classe chargée de sérialiser des classes dérivées de SyndicationItem au format RSS 2.0.

Classes de modèle objet :

Classe Description
SyndicationCategory Classe qui représente la catégorie d'un flux de syndication.
SyndicationContent Classe de base qui représente le contenu de syndication.
SyndicationElementExtension Classe représentant une extension d’élément de syndication.
SyndicationElementExtensionCollection Collection d'objets SyndicationElementExtension.
SyndicationFeed Classe qui représente un objet de flux de niveau supérieur.
SyndicationItem Classe qui représente un élément de flux.
SyndicationLink Classe qui représente un lien dans un flux ou un élément de syndication.
SyndicationPerson Classe qui représente une construction Atom Person.
SyndicationVersions Classe qui représente les versions du protocole de syndication prises en charge.
TextSyndicationContent Classe qui représente tout contenu SyndicationItem à afficher pour un utilisateur final.
TextSyndicationContentKind Énumération qui représente les différents types de contenu de syndication de texte pris en charge.
UrlSyndicationContent Classe qui représente un contenu de syndication qui se compose d'une URL à une autre ressource.
XmlSyndicationContent Classe qui représente un contenu de syndication qui ne sera pas affiché dans un navigateur.

Les abstractions des données principales dans le modèle objet sont Flux et Élément, qui correspondent aux classes SyndicationFeed et SyndicationItem. Un flux expose des métadonnées (par exemple, Title, Description et Author) au niveau du flux, un emplacement pour stocker des extensions inconnues et un jeu d’éléments qui composent le reste du contenu d’information du flux. Un élément met à disposition les métadonnées (par exemple, Title, Summary et PublicationDate) au niveau de l’élément, un emplacement pour stocker des extensions inconnues et un élément de contenu qui contient le reste du contenu d’information de l’élément. Les abstractions principales de Flux et Élément sont prises en charge par des classes supplémentaires qui représentent des constructions de données communes référencées dans les spécifications Atom 1.0 et RSS.

Les informations contenues dans une instance de flux peuvent être converties en divers formats XML. Le processus de conversion vers et depuis XML est géré par la classe SyndicationFeedFormatter. Cette classe est abstraite ; les implémentations concrètes sont fournies pour Atom 1.0 et RSS 2.0, Atom10FeedFormatter et Rss20FeedFormatter. Pour utiliser des classes Feed dérivées, utilisez Atom10FeedFormatter<TSyndicationFeed> ou Rss20FeedFormatter<TSyndicationFeed> car ils vous permettent de spécifier une classe Feed dérivée. Pour utiliser des classes d'élément dérivées utilisez Atom10ItemFormatter<TSyndicationItem> ou Rss20ItemFormatter<TSyndicationItem> car ils vous permettent de spécifier une classe d'élément dérivée. Les tiers peuvent dériver leur propre implémentation de SyndicationFeedFormatter pour prendre en charge des formats de syndication différents.

Extensibilité

  • L’une des fonctionnalités clés de protocoles de syndication est l’extensibilité. Atom 1.0 et RSS 2.0 vous permettent d'ajouter aux flux de syndication des attributs et des éléments qui ne sont pas définis dans les spécifications. Le modèle de programmation de la syndication WCF offre deux moyens d’utiliser des attributs personnalisés et des extensions : la dérivation d’une nouvelle classe et l’accès faiblement typé. Pour plus d’informations, consultez Extensibilité de la syndication.

Voir aussi