Dağıtım Mimarisi
Dağıtım API'si, bağlı içeriğin çeşitli biçimlerde kabloya yazılmasını sağlayan, biçimsiz bir programlama modeli sağlamak üzere tasarlanmıştır. Soyut veri modeli aşağıdaki sınıflardan oluşur:
Bu sınıflar, bazı adlar farklı olsa da Atom 1.0 belirtiminde tanımlanan yapılarla yakından eşlenir.
Windows Communication Foundation'da (WCF), dağıtım akışları, dönüş türünün türetilmiş sınıflarından SyndicationFeedFormatterbiri olduğu başka bir hizmet işlemi türü olarak modellenir. Bir akışın alınması, istek-yanıt ileti değişimi olarak modellenmiştir. İstemci hizmete bir istek gönderir ve hizmet yanıt verir. İstek iletisi bir altyapı protokolü (örneğin ham HTTP) üzerinden ayarlanır ve yanıt iletisi yaygın olarak anlaşılan bir dağıtım biçiminden (RSS 2.0 veya Atom 1.0) oluşan bir yük içerir. Bu ileti alışverişlerini uygulayan hizmetlere dağıtım hizmetleri denir.
Bir dağıtım hizmetinin sözleşmesi, sınıfının bir örneğini SyndicationFeedFormatter döndüren bir dizi işlemden oluşur. Aşağıdaki örnekte, bir dağıtım hizmeti için arabirim bildirimi gösterilmektedir.
[ServiceContract]
[ServiceKnownType(typeof(Atom10FeedFormatter))]
[ServiceKnownType(typeof(Rss20FeedFormatter))]
public interface IBlog
{
[OperationContract]
[WebGet(UriTemplate="GetBlog?format={format}", BodyStyle=WebMessageBodyStyle.Bare)]
SyndicationFeedFormatter GetBlog(string format);
}
Dağıtım desteği, akışları hizmet olarak kullanılabilir hale getirmek için birlikte WebHttpBehavior kullanılan bağlamayı WebHttpBinding tanımlayan WCF REST Programlama Modeli'nin üzerine kurulmuştur. WCF REST Programlama Modeli hakkında daha fazla bilgi için bkz . WCF Web HTTP Programlama Modeline Genel Bakış.
Not
Atom 1.0 belirtimi, tarih yapılarından herhangi birinde kesirli saniyelerin belirtilmesine olanak tanır. WCF uygulaması seri hale getirilirken ve seri durumdan çıkarılırken kesirli saniyeler yoksayılır.
Nesne Modeli
Dağıtım için nesne modeli, aşağıdaki tablolardaki sınıf gruplarından oluşur.
Biçimlendirme Sınıfları:
Sınıf | Açıklama |
---|---|
Atom10FeedFormatter | Bir örneği Atom 1.0 biçiminde seri hale getiren bir SyndicationFeed sınıf. |
Atom10FeedFormatter<TSyndicationFeed> | Türetilmiş sınıfları Atom 1.0 biçiminde seri hale SyndicationFeed getiren bir sınıf. |
Atom10ItemFormatter | Bir örneği Atom 1.0 biçiminde seri hale getiren bir SyndicationItem sınıf. |
Atom10ItemFormatter<TSyndicationItem> | Türetilmiş sınıfları Atom 1.0 biçiminde seri hale SyndicationItem getiren bir sınıf. |
Rss20FeedFormatter | Bir örneği RSS 2.0 biçiminde seri hale getiren bir SyndicationFeed sınıf. |
Rss20FeedFormatter<TSyndicationFeed> | Türetilmiş sınıfları RSS 2.0 biçiminde seri hale SyndicationFeed getiren bir sınıf. |
Rss20ItemFormatter | Bir örneği RSS 2.0 biçiminde seri hale getiren bir SyndicationItem sınıf. |
Rss20ItemFormatter<TSyndicationItem> | Türetilmiş sınıfları RSS 2.0 biçiminde seri hale SyndicationItem getiren bir sınıf. |
Nesne Modeli Sınıfları:
Sınıf | Açıklama |
---|---|
SyndicationCategory | Bir dağıtım akışının kategorisini temsil eden bir sınıf. |
SyndicationContent | Dağıtım içeriğini temsil eden bir temel sınıf. |
SyndicationElementExtension | Bir dağıtım öğesi uzantısını temsil eden bir sınıf. |
SyndicationElementExtensionCollection | SyndicationElementExtension nesneleri topluluğu. |
SyndicationFeed | En üst düzey akış nesnesini temsil eden bir sınıf. |
SyndicationItem | Akış öğesini temsil eden bir sınıf. |
SyndicationLink | Bir dağıtım akışı veya öğesi içindeki bağlantıyı temsil eden bir sınıf. |
SyndicationPerson | Atom Person yapısını temsil eden bir sınıf. |
SyndicationVersions | Desteklenen dağıtım protokolü sürümlerini temsil eden bir sınıf. |
TextSyndicationContent | Son kullanıcıya görüntülenecek içeriği SyndicationItem temsil eden bir sınıf. |
TextSyndicationContentKind | Desteklenen farklı metin dağıtım içeriği türlerini temsil eden bir numaralandırma. |
UrlSyndicationContent | Başka bir kaynağın URL'sini içeren dağıtım içeriğini temsil eden bir sınıf. |
XmlSyndicationContent | Tarayıcıda görüntülenmeyen dağıtım içeriğini temsil eden bir sınıf. |
Nesne modelindeki temel veri soyutlamaları, ve sınıflarına SyndicationFeed karşılık gelen Akış ve SyndicationItem Öğe'dir. Akış, bazı akış düzeyinde meta verileri (örneğin, Başlık, Açıklama ve Yazar), bilinmeyen uzantıları depolamak için bir konum ve akışın diğer bilgi içeriğini oluşturan bir dizi öğeyi kullanıma sunar. Öğe bazı öğe düzeyinde meta verileri (örneğin, Başlık, Özet ve YayınTarihi), bilinmeyen uzantıları depolamak için bir konum ve öğenin bilgi içeriğinin geri kalanını içeren bir içerik öğesi sağlar. Akış ve Öğe'nin temel soyutlamaları, Atom 1.0 ve RSS belirtimlerinde başvuruda bulunan ortak veri yapılarını temsil eden ek sınıflar tarafından desteklenir.
Akış örneğinde taşınan bilgiler çeşitli XML biçimlerine dönüştürülebilir. XML'ye ve XML'den dönüştürme işlemi sınıfı tarafından SyndicationFeedFormatter yönetilir. Bu sınıf soyut; Atom 1.0 ve RSS 2.0 Atom10FeedFormatter ve Rss20FeedFormatteriçin somut uygulamalar sağlanır. Türetilmiş Akış sınıflarını kullanmak için, türetilmiş bir Akış sınıfı belirtmenize izin verdikleri şekilde veya Rss20FeedFormatter<TSyndicationFeed> kullanınAtom10FeedFormatter<TSyndicationFeed>. Türetilmiş öğe sınıflarını kullanmak için veya Rss20ItemFormatter<TSyndicationItem> türetilmiş bir öğe sınıfı belirtmenize izin verdikleri şekilde kullanınAtom10ItemFormatter<TSyndicationItem>. Üçüncü taraflar, farklı dağıtım biçimlerini desteklemek için kendi uygulamalarını SyndicationFeedFormatter türetebilir.
Genişletilebilirlik
- Dağıtım protokollerinin temel özelliklerinden biri genişletilebilirliktir. Hem Atom 1.0 hem de RSS 2.0, belirtimlerde tanımlanmayan dağıtım akışlarına öznitelikler ve öğeler eklemenize olanak sağlar. WCF dağıtım programlama modeli, özel öznitelikler ve uzantılarla çalışmanın iki yolunu sağlar: yeni bir sınıf ve gevşek türetilmiş erişim türetme. Daha fazla bilgi için bkz . Dağıtım Genişletilebilirliği.