Udostępnij za pośrednictwem


Architektura syndykacji

Interfejs API syndykacji został zaprojektowany w celu zapewnienia modelu programowania neutralnego od formatu, który umożliwia zapisywanie zawartości syndykacyjnej w przewodach w różnych formatach. Model abstrakcyjnych danych składa się z następujących klas:

Te klasy są ściśle mapowane na konstrukcje zdefiniowane w specyfikacji Atom 1.0, chociaż niektóre nazwy są różne.

W programie Windows Communication Foundation (WCF) źródła danych syndykacji są modelowane jako inny typ operacji usługi, w którym typ zwracany jest jednym z klas pochodnych SyndicationFeedFormatterklasy . Pobieranie kanału informacyjnego jest modelowane jako wymiana komunikatów żądań-odpowiedzi. Klient wysyła żądanie do usługi, a usługa odpowiada. Komunikat żądania jest ustawiany za pośrednictwem protokołu infrastruktury (na przykład nieprzetworzonego protokołu HTTP), a komunikat odpowiedzi zawiera ładunek składający się z powszechnie zrozumiałego formatu syndykacji (RSS 2.0 lub Atom 1.0). Usługi implementujące te wymiany komunikatów są określane jako usługi syndykacji.

Kontrakt dla usługi syndykacji składa się z zestawu operacji, które zwracają wystąpienie SyndicationFeedFormatter klasy. W poniższym przykładzie pokazano deklarację interfejsu dla usługi syndykacji.

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

Obsługa syndykacji jest oparta na modelu programowania REST WCF, który definiuje WebHttpBinding powiązanie, które jest używane w połączeniu z WebHttpBehavior udostępnianiem kanałów informacyjnych jako usług. Aby uzyskać więcej informacji na temat modelu programowania REST WCF, zobacz WCF Web HTTP Programming Model Overview (Omówienie modelu programowania HTTP w sieci Web WCF).

Uwaga

Specyfikacja Atom 1.0 umożliwia określenie sekund ułamkowych w dowolnej konstrukcji daty. Podczas serializacji i deserializacji implementacji programu WCF ignoruje ułamkowe sekundy.

Model obiektu

Model obiektów dla syndykacji składa się z grup klas w poniższych tabelach.

Klasy formatowania:

Klasa opis
Atom10FeedFormatter Klasa, która serializuje SyndicationFeed wystąpienie do formatu Atom 1.0.
Atom10FeedFormatter<TSyndicationFeed> Klasa, która serializuje SyndicationFeed klasy pochodne do formatu Atom 1.0.
Atom10ItemFormatter Klasa, która serializuje SyndicationItem wystąpienie do formatu Atom 1.0.
Atom10ItemFormatter<TSyndicationItem> Klasa, która serializuje SyndicationItem klasy pochodne do formatu Atom 1.0.
Rss20FeedFormatter Klasa, która serializuje SyndicationFeed wystąpienie do formatu RSS 2.0.
Rss20FeedFormatter<TSyndicationFeed> Klasa, która serializuje SyndicationFeed klasy pochodne do formatu RSS 2.0.
Rss20ItemFormatter Klasa, która serializuje SyndicationItem wystąpienie do formatu RSS 2.0.
Rss20ItemFormatter<TSyndicationItem> Klasa, która serializuje SyndicationItem klasy pochodne do formatu RSS 2.0.

Klasy modelu obiektów:

Klasa opis
SyndicationCategory Klasa reprezentująca kategorię źródła danych syndykacji.
SyndicationContent Klasa bazowa reprezentująca zawartość syndykacji.
SyndicationElementExtension Klasa reprezentująca rozszerzenie elementu syndykacji.
SyndicationElementExtensionCollection Kolekcja obiektów SyndicationElementExtension.
SyndicationFeed Klasa reprezentująca obiekt kanału informacyjnego najwyższego poziomu.
SyndicationItem Klasa reprezentująca element kanału informacyjnego.
SyndicationLink Klasa reprezentująca link w kanale informacyjnym lub elemencie syndykacji.
SyndicationPerson Klasa reprezentująca konstrukcję Atom Person.
SyndicationVersions Klasa reprezentująca obsługiwane wersje protokołu syndykacji.
TextSyndicationContent Klasa reprezentująca dowolną SyndicationItem zawartość, która ma być wyświetlana użytkownikowi końcowemu.
TextSyndicationContentKind Wyliczenie reprezentujące różne typy obsługiwanej zawartości syndykacji tekstu.
UrlSyndicationContent Klasa reprezentująca zawartość syndykacji składająca się z adresu URL innego zasobu.
XmlSyndicationContent Klasa reprezentująca zawartość syndykacji, która nie ma być wyświetlana w przeglądarce.

Podstawowe abstrakcje danych w modelu obiektów to Źródło danych i Element, które odpowiadają klasom SyndicationFeed i SyndicationItem . Źródło danych uwidacznia niektóre metadane na poziomie kanału informacyjnego (na przykład Tytuł, Opis i Autor), lokalizację do przechowywania nieznanych rozszerzeń oraz zestaw elementów, które składają się na pozostałą część zawartości informacyjnej kanału informacyjnego. Element udostępnia niektóre metadane na poziomie elementu (na przykład Tytuł, Podsumowanie i Data publikacji), lokalizację do przechowywania nieznanych rozszerzeń oraz element zawartości zawierający pozostałą część zawartości informacji o elemencie. Podstawowe abstrakcje źródła danych i elementu są obsługiwane przez dodatkowe klasy reprezentujące typowe konstrukcje danych, do których odwołuje się specyfikacje Atom 1.0 i RSS.

Informacje przenoszone w wystąpieniu kanału informacyjnego można konwertować na różne formaty XML. Proces konwertowania na i z kodu XML jest zarządzany przez klasę SyndicationFeedFormatter . Ta klasa jest abstrakcyjna; konkretne implementacje są dostępne dla atomów 1.0 i RSS 2.0 Atom10FeedFormatter i Rss20FeedFormatter. Aby użyć klas pochodnych źródła danych, użyj klasy Atom10FeedFormatter<TSyndicationFeed> lub Rss20FeedFormatter<TSyndicationFeed> , ponieważ umożliwiają one określenie klasy pochodnego źródła danych. Aby użyć klas elementów pochodnych, należy użyć Atom10ItemFormatter<TSyndicationItem> klasy lub Rss20ItemFormatter<TSyndicationItem> , ponieważ umożliwiają one określenie klasy pochodnej elementów Inne firmy mogą uzyskać własną implementację SyndicationFeedFormatter , aby obsługiwać różne formaty syndykacji.

Rozszerzalność

  • Kluczową cechą protokołów syndykacji jest rozszerzalność. Zarówno Atom 1.0, jak i RSS 2.0 umożliwiają dodawanie atrybutów i elementów do źródeł danych syndykacji, które nie są zdefiniowane w specyfikacji. Model programowania syndykacji WCF zapewnia dwa sposoby pracy z atrybutami niestandardowymi i rozszerzeniami: wyprowadzanie nowej klasy i luźno typizowanego dostępu. Aby uzyskać więcej informacji, zobacz Rozszerzalność syndykacji.

Zobacz też