Syndication-ErweiterbarkeitSyndication Extensibility

Die Syndication-API ist darauf ausgelegt, ein formatunabhängiges Programmiermodell bereitzustellen, mit dem Fremdinhalte in verschiedenen Formaten ausgegeben und direkt übertragen werden können.The Syndication API is designed to provide a format-neutral programming model that allows syndicated content to be written 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.

Eine Hauptfunktion 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, add attributes and elements to syndication feeds that are not defined in the specifications. Der Windows Communication Foundation (WCF)-Programmiermodell für Syndication bietet es sich um die folgenden Möglichkeiten arbeiten mit benutzerdefinierten Attributen und Erweiterungen lose typisierten Zugriff und das Ableiten einer neuen Klasse.The Windows Communication Foundation (WCF) syndication programming model provides the following ways of working with custom attributes and extensions, loosely-typed access and deriving a new class.

Zugriff mit flexibler TypbindungLoosely Typed Access

Wenn Erweiterungen durch das Ableiten einer neuen Klasse hinzugefügt werden sollen, muss zusätzlicher Code geschrieben werden.Adding extensions by deriving a new class requires writing additional code. Eine andere Möglichkeit besteht darin, mit flexibler Typbindung auf Erweiterungen zuzugreifen.Another option is accessing extensions in a loosely-typed way. Alle im abstrakten Datenmodell für Syndication definierten Typen enthalten Eigenschaften namens AttributeExtensions und ElementExtensions (mit einer Ausnahme, SyndicationContent verfügt über die AttributeExtensions-Eigenschaft, nicht aber über die ElementExtensions-Eigenschaft).All of the types defined in the syndication abstract data model contain properties named AttributeExtensions and ElementExtensions (with one exception, SyndicationContent has an AttributeExtensions property but no ElementExtensions property). Diese Eigenschaften sind Auflistungen von Erweiterungen, die nicht von der TryParseAttribute-Methode bzw. der TryParseElement-Methode verarbeitet werden.These properties are collections of extensions not processed by the TryParseAttribute and TryParseElement methods respectively. Sie können auf diese unverarbeiteten Erweiterungen zugreifen, indem Sie SyndicationElementExtensionCollection.ReadElementExtensions für die ElementExtensions-Eigenschaft von SyndicationFeed, SyndicationItem, SyndicationLink, SyndicationPerson und SyndicationCategory aufrufen.You can access these unprocessed extensions by calling SyndicationElementExtensionCollection.ReadElementExtensions on the ElementExtensions property of SyndicationFeed, SyndicationItem, SyndicationLink, SyndicationPerson, and SyndicationCategory. Dieser Satz von Methoden findet alle Erweiterungen mit dem angegebenen Namen und Namespace, deserialisiert sie einzeln in Instanzen von TExtension und gibt sie als Auflistung von TExtension-Objekten zurück.This set of methods finds all extensions with the specified name and namespace, deserializes them individually into instances of TExtension and returns them as a collection of TExtension objects.

Ableiten einer neuen KlasseDeriving a New Class

Sie können eine neue Klasse von jeder im abstrakten Datenmodell vorhandenen Klasse ableiten.You can derive a new class from any of the existing abstract data model classes. Tun Sie dies beim Implementieren einer Anwendung, in der Sie für die meisten Feeds eine bestimmte Erweiterung verwenden.Do this when implementing an application in which most of the feeds you are working with have a particular extension. In diesem Thema enthalten die meisten der Feeds, mit denen das Programm arbeitet, eine MyExtension-Erweiterung.In this topic, most of the feeds that the program works with contain a MyExtension extension. Um Ihre Programmiererfahrung zu vertiefen, führen Sie die folgenden Schritte aus:To provide an improved programming experience, do the following steps:

Siehe auchSee Also

Übersicht über WCF SyndicationWCF Syndication Overview
Architektur von SyndicationArchitecture of Syndication