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.