Delen via


Architectuur van syndicatie

De Syndication-API is ontworpen om een indelingsneutraal programmeermodel te bieden waarmee gesyndiceerde inhoud in verschillende indelingen naar de draad kan worden geschreven. Het abstracte gegevensmodel bestaat uit de volgende klassen:

Deze klassen zijn nauw gekoppeld aan de constructies die zijn gedefinieerd in de Atom 1.0-specificatie, hoewel sommige van de namen verschillen.

In Windows Communication Foundation (WCF) worden syndicatiefeeds gemodelleerd als een ander type servicebewerking, waarbij het retourtype een van de afgeleide klassen van SyndicationFeedFormatteris. Het ophalen van een feed wordt gemodelleerd als een aanvraag-antwoordberichtuitwisseling. Een client verzendt een aanvraag naar de service en de service reageert. Het aanvraagbericht wordt ingesteld via een infrastructuurprotocol (bijvoorbeeld onbewerkte HTTP) en het antwoordbericht bevat een nettolading die bestaat uit een algemeen begrepen syndicatie-indeling (RSS 2.0 of Atom 1.0). Services die deze berichtenuitwisselingen implementeren, worden syndicatieservices genoemd.

Het contract voor een syndicatieservice bestaat uit een set bewerkingen die een exemplaar van de SyndicationFeedFormatter klasse retourneert. In het volgende voorbeeld ziet u een interfacedeclaratie voor een syndicatieservice.

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

Ondersteuning voor syndicatie is gebouwd op basis van het WCF REST-programmeermodel dat de WebHttpBinding binding definieert, die wordt gebruikt in combinatie met WebHttpBehavior het beschikbaar maken van feeds als services. Zie overzicht van wcf-web-HTTP-programmeermodel voor meer informatie over het WCF REST-programmeermodel.

Notitie

Met de Atom 1.0-specificatie kunnen fractionele seconden worden opgegeven in een van de datumconstructies. Bij het serialiseren en deserialiseren van de WCF-implementatie worden de fractionele seconden genegeerd.

Objectmodel

Het objectmodel voor syndicatie bestaat uit de groepen klassen in de volgende tabellen.

Opmaakklassen:

Klas Beschrijving
Atom10FeedFormatter Een klasse die een SyndicationFeed exemplaar serialiseert in Atom 1.0-indeling.
Atom10FeedFormatter<TSyndicationFeed> Een klasse die afgeleide klassen serialiseert SyndicationFeed naar Atom 1.0-indeling.
Atom10ItemFormatter Een klasse die een SyndicationItem exemplaar serialiseert in Atom 1.0-indeling.
Atom10ItemFormatter<TSyndicationItem> Een klasse die afgeleide klassen serialiseert SyndicationItem naar Atom 1.0-indeling.
Rss20FeedFormatter Een klasse waarmee een SyndicationFeed exemplaar wordt geserialiseerd naar de INDELING RSS 2.0.
Rss20FeedFormatter<TSyndicationFeed> Een klasse die afgeleide klassen serialiseert SyndicationFeed naar de INDELING RSS 2.0.
Rss20ItemFormatter Een klasse waarmee een SyndicationItem exemplaar wordt geserialiseerd naar de INDELING RSS 2.0.
Rss20ItemFormatter<TSyndicationItem> Een klasse die afgeleide klassen serialiseert SyndicationItem naar de INDELING RSS 2.0.

Objectmodelklassen:

Klas Beschrijving
SyndicationCategory Een klasse die de categorie van een syndicatiefeed vertegenwoordigt.
SyndicationContent Een basisklasse die syndicatie-inhoud vertegenwoordigt.
SyndicationElementExtension Een klasse die de extensie van een syndication-element vertegenwoordigt.
SyndicationElementExtensionCollection Een verzameling SyndicationElementExtension objecten.
SyndicationFeed Een klasse die een feedobject op het hoogste niveau vertegenwoordigt.
SyndicationItem Een klasse die een feeditem vertegenwoordigt.
SyndicationLink Een klasse die een koppeling vertegenwoordigt binnen een syndicatiefeed of -item.
SyndicationPerson Een klasse die een Atom Person-constructie vertegenwoordigt.
SyndicationVersions Een klasse die de ondersteunde syndicatieprotocolversies vertegenwoordigt.
TextSyndicationContent Een klasse die alle SyndicationItem inhoud vertegenwoordigt die moet worden weergegeven aan een eindgebruiker.
TextSyndicationContentKind Een opsomming die de verschillende typen inhoud voor tekstsyndicatie vertegenwoordigt die wordt ondersteund.
UrlSyndicationContent Een klasse die syndicatie-inhoud vertegenwoordigt die bestaat uit een URL naar een andere resource.
XmlSyndicationContent Een klasse die syndicatie-inhoud vertegenwoordigt die niet in een browser moet worden weergegeven.

De belangrijkste gegevensabstracties in het objectmodel zijn Feed en Item, die overeenkomen met de SyndicationFeed en SyndicationItem klassen. Een feed bevat enkele metagegevens op feedniveau (bijvoorbeeld Titel, Beschrijving en Auteur), een locatie voor het opslaan van onbekende extensies en een set items waaruit de rest van de informatie-inhoud van de feed bestaat. Een item maakt bepaalde metagegevens op itemniveau beschikbaar (bijvoorbeeld Titel, Samenvatting en Publicatiedatum), een locatie voor het opslaan van onbekende extensies en een inhoudselement dat de rest van de informatie-inhoud van het item bevat. De belangrijkste abstracties van feed en item worden ondersteund door aanvullende klassen die algemene gegevensconstructies vertegenwoordigen waarnaar wordt verwezen in de Atom 1.0- en RSS-specificaties.

De informatie die in een feedexemplaren wordt meegenomen, kan worden geconverteerd naar verschillende XML-indelingen. Het proces van converteren naar en van XML wordt beheerd door de SyndicationFeedFormatter klasse. Deze klasse is abstract; Concrete implementaties worden geleverd voor Atom 1.0 en RSS 2.0, Atom10FeedFormatter en Rss20FeedFormatter. Als u afgeleide feedklassen wilt gebruiken, gebruikt Atom10FeedFormatter<TSyndicationFeed> u een van beide of Rss20FeedFormatter<TSyndicationFeed> omdat u hiermee een afgeleide feedklasse kunt opgeven. Als u afgeleide itemklassen wilt gebruiken, gebruikt Atom10ItemFormatter<TSyndicationItem> u een van beide of Rss20ItemFormatter<TSyndicationItem> omdat u hiermee een afgeleide itemklasse kunt opgeven, kunnen derden hun eigen implementatie afleiden om SyndicationFeedFormatter verschillende syndicatieindelingen te ondersteunen.

Uitbreidbaarheid

  • Een belangrijke functie van syndicatieprotocollen is uitbreidbaarheid. Met Zowel Atom 1.0 als RSS 2.0 kunt u kenmerken en elementen toevoegen aan syndicatiefeeds die niet zijn gedefinieerd in de specificaties. Het WCF-syndicatieprogrammeermodel biedt twee manieren om te werken met aangepaste kenmerken en extensies: het afleiden van een nieuwe klasse en losjes getypte toegang. Zie Syndication Extensibility voor meer informatie.

Zie ook