Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’API Syndication est conçue pour fournir un modèle de programmation neutre en format qui permet à du contenu syndiqué d’être écrit sur le câble dans un large éventail de formats. Le modèle de données abstrait se compose des classes suivantes :
Ces classes correspondent étroitement 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 modélisés comme un autre type d’opération de service, l’un où le type de retour est l’une des classes dérivées de SyndicationFeedFormatter. La récupération d’un flux est modélisée en tant qu’é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 (par exemple, HTTP brut) et le message de réponse contient une charge utile qui se compose d’un format de syndication couramment compris (RSS 2.0 ou Atom 1.0). Les services qui implémentent ces échanges de messages sont appelés services de syndication.
Le contrat d’un service de syndication se compose d’un ensemble d’opérations qui retourne une instance de la SyndicationFeedFormatter classe. L’exemple suivant illustre 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.
Remarque
La spécification Atom 1.0 permet de spécifier des fractions de secondes dans l’une de ses constructions de 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 des groupes de classes dans les tableaux suivants.
Classes de mise en forme :
classe | Descriptif |
---|---|
Atom10FeedFormatter | Classe qui sérialise une SyndicationFeed instance au format Atom 1.0. |
Atom10FeedFormatter<TSyndicationFeed> | Classe qui sérialise les classes dérivées SyndicationFeed au format Atom 1.0. |
Atom10ItemFormatter | Classe qui sérialise une SyndicationItem instance au format Atom 1.0. |
Atom10ItemFormatter<TSyndicationItem> | Classe qui sérialise les classes dérivées SyndicationItem au format Atom 1.0. |
Rss20FeedFormatter | Classe qui sérialise une SyndicationFeed instance au format RSS 2.0. |
Rss20FeedFormatter<TSyndicationFeed> | Classe qui sérialise les classes dérivées SyndicationFeed au format RSS 2.0. |
Rss20ItemFormatter | Classe qui sérialise une SyndicationItem instance au format RSS 2.0. |
Rss20ItemFormatter<TSyndicationItem> | Classe qui sérialise les classes dérivées SyndicationItem au format RSS 2.0. |
Classes de modèle objet :
classe | Descriptif |
---|---|
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 qui représente 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 de syndication ou un élément. |
SyndicationPerson | Classe qui représente une construction Atom Person. |
SyndicationVersions | Classe qui représente les versions de protocole de syndication prises en charge. |
TextSyndicationContent | Classe qui représente tout SyndicationItem contenu à 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 le contenu de syndication qui se compose d’une URL vers une autre ressource. |
XmlSyndicationContent | Classe qui représente le contenu de syndication qui ne doit pas être affiché dans un navigateur. |
Les abstractions de données principales dans le modèle objet sont Feed et Item, qui correspondent aux classes SyndicationFeed et SyndicationItem. Un flux expose certaines métadonnées au niveau du flux (par exemple, Titre, Description et Auteur), un emplacement pour stocker des extensions inconnues et un ensemble d’éléments qui composent le reste du contenu des informations du flux. Un élément met à disposition certaines métadonnées au niveau de l’élément (par exemple, Title, Summary et PublicationDate), un emplacement pour stocker des extensions inconnues et un élément de contenu qui contient le reste du contenu d’informations de l’élément. Les abstractions principales du flux et de l’é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 transmises dans une instance de flux peuvent être converties en différents formats XML. Le processus de conversion en et à partir de XML est géré par la SyndicationFeedFormatter classe. Cette classe est abstraite ; des implémentations concrètes sont fournies pour Atom 1.0 et RSS 2.0 et Atom10FeedFormatterRss20FeedFormatter. Pour utiliser des classes de flux dérivées, utilisez soit Atom10FeedFormatter<TSyndicationFeed> soit Rss20FeedFormatter<TSyndicationFeed>, car elles vous permettent de spécifier une classe de flux dérivée. Pour utiliser des classes d’éléments dérivées, utilisez soit Atom10ItemFormatter<TSyndicationItem> soit Rss20ItemFormatter<TSyndicationItem>, car elles 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 différents formats de syndication.
Extensibilité
- Une fonctionnalité clé des protocoles de syndication est l’extensibilité. Atom 1.0 et RSS 2.0 vous permettent d’ajouter des attributs et des éléments aux flux de syndication 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 l’extensibilité de syndication.