Architektur von SyndicationArchitecture of Syndication

Die Syndication-API ist darauf ausgelegt, ein Format-neutrales Programmiermodell zu bieten, mit dem es möglich ist, Schlagzeilen in verschiedenen Formaten zu schreiben und direkt zu übertragen.The Syndication API is designed to provide a format-neutral programming model that allows syndicated content to be written on to the wire in a variety of formats. Das abstrakte Datenmodell besteht aus den folgenden Klassen:The abstract data model consists of the following classes:

Diese Klassen sind nahezu deckungsgleich mit den in der Atom 1.0-Spezifikation definierten Konstrukten, obwohl manche der Namen anders lauten.These classes map closely to the constructs defined in the Atom 1.0 specification, although some of the names are different.

In Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) werden Syndication-Feeds als anderer Typ von Dienstvorgängen erstellt, bei dem der Rückgabetyp einer der abgeleiteten Klassen von SyndicationFeedFormatter entspricht.In Windows Communication Foundation (WCF)Windows Communication Foundation (WCF), syndication feeds are modeled as another type of service operation, one where the return type is one of the derived classes of SyndicationFeedFormatter. Der Abruf eines Feeds wird als Anforderung-Antwort-Nachrichtenaustausch erstellt.The retrieval of a feed is modeled as a request-response message exchange. Ein Client sendet eine Anforderung an den Dienst, und der Dienst antwortet.A client sends a request to the service and the service responds. Die Anforderungsnachricht wird über ein Infrastrukturprotokoll festgelegt (z. B. unformatiertes HTTP), und die Antwortnachricht enthält eine Nutzlast in Form eines üblichen Syndication-Formats (RSS 2.0 oder Atom 1.0).The request message is set over an infrastructure protocol (for example, raw HTTP) and the response message contains a payload that consists of a commonly understood syndication format (RSS 2.0 or Atom 1.0). Dienste, die diesen Nachrichtenaustausch implementieren, werden als Syndication-Dienste bezeichnet.Services that implement these message exchanges are referred to as syndication services.

Der Vertrag für einen Syndication-Dienst besteht aus einer Gruppe von Vorgängen, die eine Instanz der SyndicationFeedFormatter-Klasse zurückgibt.The contract for a syndication service consists of a set of operations that returns an instance of the SyndicationFeedFormatter class. Im folgenden Beispiel wird eine Schnittstellendeklaration für einen Syndication-Dienst veranschaulicht.The following example demonstrates an interface declaration for a syndication service.

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

Syndication-Unterstützung baut auf dem WCFWCF REST-Programmiermodell auf, das die WebHttpBinding-Bindung definiert. Diese wird zusammen mit WebHttpBehavior dazu verwendet, Feeds als Dienste verfügbar zu machen.Syndication support is built on top of the WCFWCF REST Programming Model that defines the WebHttpBinding binding, which is used in conjunction with WebHttpBehavior to make feeds available as services. Weitere Informationen zu den WCFWCF REST-Programmiermodell finden Sie unter Web-HTTP-Programmierung Überblick über WCF.For more information about the WCFWCF REST Programming Model, see WCF Web HTTP Programming Model Overview.

Hinweis

Die Atom 1.0-Spezifikation lässt zu, dass Sekundenbruchteile in beliebigen Datenkonstrukten angegeben werden.The Atom 1.0 specification allows for fractional seconds to be specified in any of its date constructs. Beim Serialisieren und Deserialisieren ignoriert die WCFWCF-Implementierung die Sekundenbruchteile.When serializing and deserializing the WCFWCF implementation ignores the fractional seconds.

ObjektmodellObject Model

Das Objektmodell für Syndication besteht aus den in den folgenden Tabellen dargestellten Klassengruppen.The object model for syndication consists of the groups of classes in the following tables.

Formatierungsklassen:Formatting Classes:

KlasseClass BeschreibungDescription
Atom10FeedFormatter Eine Klasse, die eine SyndicationFeed-Instanz ins Atom 1.0-Format serialisiert.A class that serializes a SyndicationFeed instance to Atom 1.0 format.
Atom10FeedFormatter<TSyndicationFeed> Eine Klasse, die abgeleitete Klassen von SyndicationFeed ins Atom 1.0-Format serialisiert.A class that serializes SyndicationFeed derived classes to Atom 1.0 format.
Atom10ItemFormatter Eine Klasse, die eine SyndicationItem-Instanz ins Atom 1.0-Format serialisiert.A class that serializes a SyndicationItem instance to Atom 1.0 format.
Atom10ItemFormatter<TSyndicationItem> Eine Klasse, die abgeleitete Klassen von SyndicationItem ins Atom 1.0-Format serialisiert.A class that serializes SyndicationItem derived classes to Atom 1.0 format.
Rss20FeedFormatter Eine Klasse, die eine SyndicationFeed-Instanz ins RSS 2.0-Format serialisiert.A class that serializes a SyndicationFeed instance to RSS 2.0 format.
Rss20FeedFormatter<TSyndicationFeed> Eine Klasse, die abgeleitete Klassen von SyndicationFeed ins RSS 2.0-Format serialisiert.A class that serializes SyndicationFeed derived classes to RSS 2.0 format.
Rss20ItemFormatter Eine Klasse, die eine SyndicationItem-Instanz ins RSS 2.0-Format serialisiert.A class that serializes a SyndicationItem instance to RSS 2.0 format.
Rss20ItemFormatter<TSyndicationItem> Eine Klasse, die abgeleitete Klassen von SyndicationItem ins RSS 2.0-Format serialisiert.A class that serializes SyndicationItem derived classes to RSS 2.0 format.

Objektmodellklassen:Object Model Classes:

KlasseClass BeschreibungDescription
SyndicationCategory Eine Klasse, die die Kategorie eines Syndication-Feeds darstellt.A class that represents the category of a syndication feed.
SyndicationContent Eine Basisklasse, die Syndication-Inhalte darstellt.A base class that represents syndication content.
SyndicationElementExtension Eine Klasse, die eine Syndication-Elementerweiterung darstellt.A class that represents a syndication element extension.
SyndicationElementExtensionCollection Eine Auflistung von SyndicationElementExtension-Objekten.A collection of SyndicationElementExtension objects.
SyndicationFeed Eine Klasse, die ein Feedobjekt der obersten Ebene darstellt.A class that represents a top-level feed object.
SyndicationItem Eine Klasse, die ein Feedelement darstellt.A class that represents a feed item.
SyndicationLink Eine Klasse, die eine Verknüpfung innerhalb eines Syndication-Feeds oder -Elements darstellt.A class that represents a link within a syndication feed or item.
SyndicationPerson Eine Klasse, die ein Atom-Personenkonstrukt darstellt.A class that represents an Atom Person construct.
SyndicationVersions Eine Klasse, die die unterstützten Syndication-Protokollversionen darstellt.A class that represents the supported syndication protocol versions.
TextSyndicationContent Eine Klasse, die jeden dem Endbenutzer anzuzeigenden SyndicationItem-Inhalt darstellt.A class that represents any SyndicationItem content to be displayed to an end user.
TextSyndicationContentKind Eine Enumeration, die die verschiedenen unterstützten Typen von Text-Syndication-Inhalten darstellt.An enumeration that represents the different types of text syndication content supported.
UrlSyndicationContent Eine Klasse, die Syndication-Inhalte darstellt, die aus der URL zu einer anderen Ressource bestehen.A class that represents syndication content that consists of a URL to another resource.
XmlSyndicationContent Eine Klasse, die Syndication-Inhalte darstellt, die nicht in einem Browser angezeigt werden sollen.A class that represents syndication content that is not to be displayed in a browser.

Die Kerndatenabstraktionen im Objektmodell sind Feed und Element, was den Klassen SyndicationFeed und SyndicationItem entspricht.The core data abstractions in the object model are Feed and Item, which correspond to the SyndicationFeed and SyndicationItem classes. Ein Feed stellt eine Reihe von Metadaten auf Feedebene (z. B. Titel, Beschreibung und Autor), einen Speicherort für unbekannte Erweiterungen und eine Gruppe von Elementen, die aus dem restlichen Inhalt des Feeds bestehen, zur Verfügung.A Feed exposes some feed-level metadata (for example, Title, Description, and Author), a location to store unknown extensions, and a set of items that make up the rest of the feed's information content. Ein Element macht eine Reihe von Metadaten auf Elementebene (z. B. Titel, Zusammenfassung und Veröffentlichungsdatum), einen Speicherort für unbekannte Erweiterungen und ein Inhaltselement, das aus dem restlichen Inhalt des Elements besteht, verfügbar.An Item makes available some item-level metadata (for example, Title, Summary, and PublicationDate), a location to store unknown extensions, and a content element that contains the rest of the item's information content. Die Kernabstraktionen von Feed und Element werden von zusätzlichen Klassen unterstützt, die übliche, in den Spezifikationen zu Atom 1.0 und RSS referenzierte Datenkonstrukte darstellen.The core abstractions of Feed and Item are supported by additional classes that represent common data constructs referenced in the Atom 1.0 and RSS specifications.

Die in einer Feed-Instanz enthaltenen Informationen können in eine Reihe von XML-Formaten konvertiert werden.The information carried in a Feed instance can be converted to a variety of XML formats. Die Konvertierungsprozesse in und aus XML werden von der SyndicationFeedFormatter-Klasse verwaltet.The process of converting to and from XML is managed by the SyndicationFeedFormatter class. Diese Klasse ist abstrakt. Für Atom 1.0 und RSS 2.0 sowie Atom10FeedFormatter und Rss20FeedFormatter werden konkrete Implementierungen bereitgestellt.This class is abstract; concrete implementations are provided for Atom 1.0 and RSS 2.0, Atom10FeedFormatter and Rss20FeedFormatter. Um abgeleitete Feedklassen einzusetzen, verwenden Sie entweder Atom10FeedFormatter<TSyndicationFeed> oder Rss20FeedFormatter<TSyndicationFeed>, da Sie damit eine abgeleitete Feedklasse angeben können.To use derived Feed classes, use either Atom10FeedFormatter<TSyndicationFeed> or Rss20FeedFormatter<TSyndicationFeed> as they allow you to specify a derived Feed class. Um abgeleitete Elementklassen einzusetzen, verwenden Sie entweder Atom10ItemFormatter<TSyndicationItem> oder Rss20ItemFormatter<TSyndicationItem>, da Sie damit eine abgeleitete Feedklasse angeben können. Verwender von Drittanbietern können ihre eigene Implementierung von SyndicationFeedFormatter ableiten, um andere Syndication-Formate zu unterstützen.To use derived item classes use either Atom10ItemFormatter<TSyndicationItem> or Rss20ItemFormatter<TSyndicationItem> as they allow you to specify a derived item class Third parties can derive their own implementation of SyndicationFeedFormatter to support different syndication formats.

ErweiterbarkeitExtensibility

  • Ein Hauptfeature von Syndication-Protokollen ist die Erweiterbarkeit.A key feature of syndication protocols is extensibility. Sowohl Atom 1.0 als auch RSS 2.0 lassen zu, dass Sie Syndication-Feeds Attribute und Elemente hinzufügen, die nicht in den Spezifikationen definiert sind.Both Atom 1.0 and RSS 2.0 allow you to add attributes and elements to syndication feeds that are not defined in the specifications. Das WCFWCF-Programmiermodell für Syndication bietet zwei Möglichkeiten, mit benutzerdefinierten Attributen und Erweiterungen zu arbeiten: das Ableiten einer neuen Klasse und typenlosen Zugriff.The WCFWCF syndication programming model provides two ways of working with custom attributes and extensions: deriving a new class and loosely-typed access. Weitere Informationen finden Sie unter Syndication-Erweiterbarkeit.For more information, see Syndication Extensibility.

Siehe auchSee Also

Übersicht über WCF SyndicationWCF Syndication Overview
Zuordnung des WCF-Syndication-Objektmodells zu Atom und RSSHow the WCF Syndication Object Model Maps to Atom and RSS
WCF-Web-HTTP-ProgrammiermodellWCF Web HTTP Programming Model