Sdílet prostřednictvím


Architektura syndikace

Rozhraní SYNDICATION API je navržené tak, aby poskytovalo model programování neutrálního formátu, který umožňuje zápis syndikovaného obsahu do drátu v různých formátech. Abstraktní datový model se skládá z následujících tříd:

Tyto třídy mapují úzce na konstrukty definované ve specifikaci Atom 1.0, i když některé názvy jsou odlišné.

Ve Windows Communication Foundation (WCF) jsou syndikační kanály modelovány jako jiný typ operace služby, jeden, kde návratový typ je jednou z odvozených tříd SyndicationFeedFormatter. Načtení informačního kanálu je modelováno jako výměna zpráv odpovědí na požadavek. Klient odešle žádost službě a služba odpoví. Zpráva požadavku je nastavena přes protokol infrastruktury (například nezpracovaný HTTP) a zpráva odpovědi obsahuje datovou část, která se skládá z běžně srozumitelného syndikačního formátu (RSS 2.0 nebo Atom 1.0). Služby, které implementují tyto výměny zpráv, se označují jako syndikační služby.

Kontrakt pro službu syndikace se skládá ze sady operací, které vrací instanci SyndicationFeedFormatter třídy. Následující příklad ukazuje deklaraci rozhraní pro syndikační službu.

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

Podpora syndikace je založená na programovacím modelu REST WCF, který definuje WebHttpBinding vazbu, která se používá ve spojení s zpřístupněním WebHttpBehavior informačních kanálů jako služeb. Další informace o programovacím modelu REST WCF naleznete v tématu Přehled programovacího modelu WCF Web HTTP.

Poznámka:

Specifikace Atom 1.0 umožňuje zadat zlomkové sekundy v libovolném z jeho konstruktorů data. Při serializaci a deserializaci implementace WCF ignoruje desetinné sekundy.

Objektový model

Objektový model pro syndikaci se skládá ze skupin tříd v následujících tabulkách.

Třídy formátování:

Třída Popis
Atom10FeedFormatter Třída, která serializuje SyndicationFeed instanci do formátu Atom 1.0.
Atom10FeedFormatter<TSyndicationFeed> Třída, která serializuje SyndicationFeed odvozené třídy do formátu Atom 1.0.
Atom10ItemFormatter Třída, která serializuje SyndicationItem instanci do formátu Atom 1.0.
Atom10ItemFormatter<TSyndicationItem> Třída, která serializuje SyndicationItem odvozené třídy do formátu Atom 1.0.
Rss20FeedFormatter Třída, která serializuje SyndicationFeed instanci do formátu RSS 2.0.
Rss20FeedFormatter<TSyndicationFeed> Třída, která serializuje SyndicationFeed odvozené třídy do formátu RSS 2.0.
Rss20ItemFormatter Třída, která serializuje SyndicationItem instanci do formátu RSS 2.0.
Rss20ItemFormatter<TSyndicationItem> Třída, která serializuje SyndicationItem odvozené třídy do formátu RSS 2.0.

Třídy objektového modelu:

Třída Popis
SyndicationCategory Třída, která představuje kategorii syndikačního kanálu.
SyndicationContent Základní třída, která představuje obsah syndikace.
SyndicationElementExtension Třída, která představuje rozšíření elementu syndikace.
SyndicationElementExtensionCollection Kolekce objektů SyndicationElementExtension.
SyndicationFeed Třída, která představuje objekt informačního kanálu nejvyšší úrovně.
SyndicationItem Třída, která představuje položku informačního kanálu.
SyndicationLink Třída, která představuje odkaz v rámci kanálu syndikace nebo položky.
SyndicationPerson Třída, která představuje konstruktor Atom Person.
SyndicationVersions Třída, která představuje podporované verze syndikačního protokolu.
TextSyndicationContent Třída, která představuje veškerý SyndicationItem obsah, který se má zobrazit koncovému uživateli.
TextSyndicationContentKind Výčet, který představuje různé typy podporovaného obsahu syndikace textu.
UrlSyndicationContent Třída, která představuje obsah syndikace, který se skládá z adresy URL jiného prostředku.
XmlSyndicationContent Třída, která představuje obsah syndikace, který se nemá zobrazit v prohlížeči.

Základní abstrakce dat v objektovém modelu jsou Informační kanál a Item, které odpovídají třídám SyndicationFeed a SyndicationItem třídám. Informační kanál zveřejňuje některá metadata na úrovni informačního kanálu (například Název, Popis a Autor), umístění pro ukládání neznámých rozšíření a sadu položek, které tvoří zbytek obsahu informací informačního kanálu. Položka zpřístupňuje některá metadata na úrovni položek (například Title, Summary a PublicationDate), umístění pro ukládání neznámých rozšíření a prvek obsahu, který obsahuje zbytek obsahu informací položky. Základní abstrakce informačního kanálu a položky jsou podporovány dalšími třídami, které představují běžné datové konstrukce odkazované ve specifikacích Atom 1.0 a RSS.

Informace přenášené v instanci informačního kanálu lze převést na různé formáty XML. Proces převodu na a z XML je spravován SyndicationFeedFormatter třídou. Tato třída je abstraktní; konkrétní implementace jsou poskytovány pro Atom 1.0 a RSS 2.0 a Atom10FeedFormatterRss20FeedFormatter. Chcete-li použít odvozené třídy informačního kanálu, použijte buď Atom10FeedFormatter<TSyndicationFeed> nebo Rss20FeedFormatter<TSyndicationFeed> jako umožňují určit odvozenou třídu informačního kanálu. Chcete-li použít odvozené třídy položek buď Atom10ItemFormatter<TSyndicationItem> nebo Rss20ItemFormatter<TSyndicationItem> jako umožňují určit odvozenou třídu položek Třetí strany mohou odvodit vlastní implementaci SyndicationFeedFormatter pro podporu různých syndikačních formátů.

Rozšiřitelnost

  • Klíčovou funkcí syndikačních protokolů je rozšiřitelnost. Atom 1.0 i RSS 2.0 umožňují přidat atributy a prvky do syndikačních kanálů, které nejsou definovány ve specifikacích. Programovací model syndikace WCF poskytuje dva způsoby práce s vlastními atributy a rozšířeními: odvozování nové třídy a volně typovaného přístupu. Další informace naleznete v tématu Rozšiřitelnost syndikace.

Viz také