Taşıma Seçme
Bu konuda, Windows Communication Foundation'a (WCF) dahil edilen üç ana aktarım arasında seçim yapmak için ölçütler açıklanmaktadır: HTTP, TCP ve adlandırılmış kanallar. WCF ayrıca bir ileti kuyruğa alma (MSMQ olarak da bilinir) aktarımı içerir, ancak bu belge ileti kuyruğa alma işlemini kapsamaz.
WCF programlama modeli, uç nokta işlemlerini (hizmet sözleşmesinde belirtildiği gibi) iki uç noktayı bağlayan aktarım mekanizmasından ayırır. Bu, hizmetlerinizi ağa nasıl sunabileceğinize karar verme esnekliği sağlar.
WCF'de, bir dizi bağlama öğesinden oluşan bir bağlama kullanarak uç noktalar arasında bir ağ üzerinden veri aktarımını belirtirsiniz. Aktarım, bağlamanın parçası olan bir aktarım bağlama öğesiyle temsil edilir. Bağlama, güvenlik, gerekli bir ileti kodlayıcı bağlama öğesi ve gerekli aktarım bağlama öğesi gibi isteğe bağlı protokol bağlama öğelerini içerir. Aktarım, iletinin serileştirilmiş biçimini başka bir uygulamaya gönderir veya alır.
Mevcut bir istemciye veya sunucuya bağlanmanız gerekiyorsa, belirli bir aktarım kullanma seçeneğiniz olmayabilir. Ancak WCF hizmetleri, her birinin farklı bir aktarıma sahip olduğu birden çok uç nokta üzerinden erişilebilir hale getirilebilir. Tek bir aktarım hizmetiniz için hedeflenen hedef kitleyi kapsamadığında, hizmeti birden çok uç nokta üzerinden kullanıma sunmanız önerilir. İstemci uygulamaları daha sonra kendileri için en uygun uç noktayı kullanabilir.
Bir aktarım seçtikten sonra, bunu kullanan bir bağlama seçmelisiniz. Sistem tarafından sağlanan bir bağlama seçebilirsiniz (bkz . Sistem Tarafından Sağlanan Bağlamalar) veya kendi özel bağlamanızı oluşturabilirsiniz (bkz . Özel Bağlamalar). Kendi bağlamanızı da oluşturabilirsiniz. Daha fazla bilgi için bkz . Kullanıcı Tanımlı Bağlamalar Oluşturma.
Her Taşımanın Avantajları
Bu bölümde, aralarından seçim yapmak için ayrıntılı bir karar çizelgesi de dahil olmak üzere üç ana taşımadan birini seçmenin ana nedenleri açıklanmaktadır.
HTTP Aktarım Ne Zaman Kullanılır?
HTTP, istemciler ve sunucular arasında bir istek/yanıt protokolüdür. En yaygın uygulama, bir Web sunucusuyla iletişim kuran Web tarayıcısı istemcilerinden oluşur. İstemci, istemci isteği iletilerini dinleyen bir sunucuya istek gönderir. Sunucu bir istek aldığında, isteğin durumunu içeren bir yanıt döndürür. Başarılı olursa, Web sayfası, hata iletisi veya diğer bilgiler gibi isteğe bağlı veriler döndürülür. HTTP protokolü hakkında daha fazla bilgi için bkz . HTTP - Köprü Metni Aktarım Protokolü.
HTTP protokolü bağlantı tabanlı değildir; yanıt gönderildikten sonra durum korunmaz. Birden çok sayfalı işlemleri işlemek için uygulamanın gerekli tüm durumları kalıcı hale getirmek gerekir.
WCF'de HTTP aktarım bağlaması, eski WCF olmayan sistemlerle birlikte çalışabilirlik için iyileştirilmiştir. Tüm iletişim eden taraflar WCF kullanıyorsa, TCP tabanlı veya adlandırılmış kanal tabanlı bağlamalar daha hızlı olur. Daha fazla bilgi için bkz. NetTcpBinding ve NetNamedPipeBinding.
TCP Aktarım Ne Zaman Kullanılır?
TCP, uçtan uca hata algılama ve düzeltme özelliklerine sahip bağlantı tabanlı, akış odaklı bir teslim hizmetidir. Bağlan tabanlı, veri alışverişi öncesinde konaklar arasında bir iletişim oturumu kurulduğu anlamına gelir. Konak, tcp/IP ağında mantıksal IP adresiyle tanımlanan herhangi bir cihazdır.
TCP, güvenilir veri teslimi ve kullanım kolaylığı sağlar. Özellikle, TCP paket teslimini gönderene bildirir, paketlerin gönderildikleri sırayla teslim edilmesini garanti eder, kayıp paketleri yeniden gönderir ve veri paketlerinin yinelenmemesini sağlar. Bu güvenilir teslimin iki TCP/IP düğümü arasında geçerli olduğunu ve uç noktalar arasında geçerli olan WS-ReliableMessaging ile aynı olmadığını unutmayın. Bu, içerebilecekleri ara düğümlerin sayısını dikkate alır.
WCF TCP aktarımı, iletişimin her iki ucunun da WCF kullandığı senaryo için iyileştirilmiştir. Bu bağlama, farklı makineler arasında iletişim kurma içeren senaryolar için en hızlı WCF bağlamasıdır. İleti değişimleri, iyileştirilmiş ileti aktarımı için öğesini BinaryMessageEncodingBindingElement kullanır. TCP çift yönlü iletişim sağlar ve istemci ağ adresi çevirisinin (NAT) arkasında olsa bile çift yönlü sözleşmeleri uygulamak için kullanılabilir.
Adlandırılmış Kanal Taşıma Ne Zaman Kullanılır?
Adlandırılmış kanal, windows işletim sistemi çekirdeğinde bulunan, işlemlerin iletişim için kullanabileceği paylaşılan belleğin bir bölümü gibi bir nesnedir. Adlandırılmış kanal bir ada sahiptir ve tek bir makinedeki işlemler arasında tek yönlü veya çift yönlü iletişim için kullanılabilir.
Tek bir bilgisayardaki farklı WCF uygulamaları arasında iletişim gerektiğinde ve başka bir makineden gelen herhangi bir iletişimin engellenmesini istiyorsanız, adlandırılmış kanallar aktarımını kullanın. Ek bir kısıtlama, Windows Uzak Masaüstü'nden çalıştırılan işlemlerin, yükseltilmiş ayrıcalıkları olmadığı sürece aynı Windows Uzak Masaüstü oturumuyla kısıtlanmasıdır.
Uyarı
IIS'de barındırılan birden çok sitede adlandırılmış kanal aktarımını zayıf bir joker URL rezervasyonuyla kullanırken şu hata oluşabilir: '2' sitesini dinlemeye çalışırken 'net.pipe' protokolünün Etkinleştirme Hizmeti 'NetPipeActivator'da bir hata oluştu, bu nedenle protokol site için geçici olarak devre dışı bırakıldı. Diğer ayrıntılar için özel durum iletisine bakın. URL: WeakWildcard:net.pipe:/<machine name>/ Status: ConflictingRegistration Exception: Process Name: SMSvcHost İşlem Kimliği: 1076\
Taşıma Seçmek için Karar Noktaları
Aşağıdaki tabloda, taşıma seçmek için kullanılan ortak karar noktaları açıklanmaktadır. Uygulamanıza uygulanan ek öznitelikleri ve aktarımları göz önünde bulundurmanız gerekir. Uygulamanız için önemli olan öznitelikleri belirleyin, özniteliklerinizin her biriyle olumlu bir şekilde ilişkilendirilen aktarımları belirleyin ve ardından öznitelik kümenizle en iyi şekilde çalışan aktarımları seçin.
Öznitelik | Açıklama | Tercih edilen taşımalar |
---|---|---|
Tanılama | Tanılama, aktarım bağlantısı sorunlarını otomatik olarak algılamanıza olanak sağlar. Tüm aktarımlar, bağlantıyı açıklayan hata bilgilerini geri gönderme özelliğini destekler. Ancak WCF, ağ sorunlarını araştırmak için tanılama araçları içermez. | Hiçbiri |
Barındırma | Tüm WCF uç noktaları bir uygulama içinde barındırılmalıdır. IIS 6.0 ve önceki sürümler yalnızca HTTP aktarımını kullanan uygulamaların barındırılabilmesini destekler. Windows Vista'da TCP ve adlandırılmış kanallar da dahil olmak üzere tüm WCF aktarımlarını barındırma desteği eklenir. Daha fazla bilgi için bkz . Internet Information Services'ta Barındırma ve Windows İşlem Etkinleştirme Hizmeti'nde Barındırma. | HTTP |
İnceleme | Denetleme, iletim sırasında iletilerden bilgi ayıklama ve işleme yeteneğidir. HTTP protokolü, yönlendirme ve denetim bilgilerini verilerden ayırarak iletileri inceleyen ve çözümleyen araçlar oluşturmayı kolaylaştırır. İncelenmesi kolay aktarımlar, ağ gereçlerinde daha az işlem gücü gerektirebilir. Kullanılan güvenlik düzeyi, iletilerin denetlenip denetlenemeyeceğini etkiler. | HTTP |
Gecikme süresi | Gecikme süresi, ileti alışverişini tamamlamak için gereken en düşük süredir. Taşıma seçimine bağlı olarak tüm ağ işlemleri daha fazla veya daha az gecikme süresine sahiptir. Yerel ileti değişimi deseni HTTP gibi istek-yanıt olan bir aktarımla çift yönlü veya tek yönlü iletişim kullanmak, iletilerin zorlamalı bağıntısı nedeniyle ek gecikmeye neden olabilir. Bu durumda, yerel ileti değişimi deseni TCP gibi çift yönlü olan bir aktarım kullanmayı göz önünde bulundurun. | TCP, Adlandırılmış Boru |
Reach | Bir taşımanın ulaşılması, taşımanın diğer sistemlerle bağlantı kurma konusunda ne kadar yetenekli olduğunu yansıtır. Adlandırılmış boru taşıma çok az erişim; yalnızca aynı makinede çalışan hizmetlere bağlanabilir. TCP ve HTTP aktarımlarının her ikisi de mükemmel erişime sahiptir ve bazı NAT ve güvenlik duvarı yapılandırmalarına nüfuz edebilir. Daha fazla bilgi için bkz . NAT'ler ve Güvenlik Duvarları ile çalışma. | HTTP, TCP |
Güvenlik | Güvenlik, aktarım sırasında gizlilik, bütünlük veya kimlik doğrulaması sağlayarak iletileri koruyabilme özelliğidir. Gizlilik, bir iletiyi incelemeye karşı korur, bütünlük iletiyi değiştirilmeye karşı korur ve kimlik doğrulaması iletinin göndereni veya alıcısı hakkında güvence sağlar. WCF hem ileti düzeyinde hem de aktarım düzeyinde aktarım güvenliğini destekler. Aktarım arabelleğe alınan aktarım modunu destekliyorsa ileti güvenliği aktarımla birlikte oluşur. Aktarım güvenliği desteği, seçilen aktarıma bağlı olarak değişir. HTTP, TCP ve adlandırılmış kanal aktarımları, taşıma güvenliği desteğinde makul bir eşliğe sahiptir. |
Tümünü |
Aktarım hızı | Aktarım hızı, belirli bir süre içinde iletilebilen ve işlenebilen veri miktarını ölçer. Gecikme süresi gibi, seçilen aktarım hizmeti işlemleri için aktarım hızını etkileyebilir. Aktarım için aktarım hızının en üst düzeye çıkarılması hem içerik iletim yükünü en aza indirmeyi hem de ileti alışverişlerinin tamamlanmasını beklerken harcanan süreyi en aza indirmeyi gerektirir. Hem TCP hem de adlandırılmış kanal aktarımları, ileti gövdesine çok az ek yük getirir ve ileti yanıtlarını bekleme süresini azaltan yerel bir çift yönlü şekli destekler. | TCP, adlandırılmış kanal |
Araçlar | Araçlar geliştirme, tanılama, barındırma ve diğer etkinlikler için bir protokol için üçüncü taraf uygulama desteğini temsil eder. HTTP protokolüyle çalışacak araçlar ve yazılımlar geliştirmek, özellikle büyük bir yatırıma işaret ediyor. | HTTP |