Aracılığıyla paylaş


Kanal Modeline Genel Bakış

Windows Communication Foundation (WCF) kanal yığını, iletileri işleyen bir veya daha fazla kanala sahip katmanlı bir iletişim yığınıdır. Yığının en altında, kanal yığınını temel alınan aktarıma (TCP, HTTP, SMTP ve diğer aktarım türleri gibi) uyarlamaktan sorumlu bir aktarım kanalı bulunur. Kanallar, ileti göndermek ve almak için alt düzey bir programlama modeli sağlar. Bu programlama modeli, topluca WCF kanal modeli olarak bilinen çeşitli arabirimlere ve diğer türlere dayanır. Bu konu başlığında kanal şekilleri, temel bir kanal dinleyicisinin (hizmette) ve kanal fabrikasının (istemcide) oluşturulması ele alınmaktadır.

Kanal Yığını

WCF uç noktaları, kanal yığını adı verilen bir iletişim yığını kullanarak dünyayla iletişim kurar. Aşağıdaki diyagram, kanal yığınını tcp/IP gibi diğer iletişim yığınlarıyla karşılaştırır.

Kanal Modeli

İlk olarak benzerlikler: Her iki durumda da yığının her katmanı, bu katmanın altındaki dünyanın bazı soyutlamalarını sağlar ve bu soyutlamanın yalnızca doğrudan üzerindeki katmana sunulmasını sağlar. Her katman yalnızca doğrudan altındaki katmanın soyutlamasını kullanır. Ayrıca her iki durumda da iki yığın iletişim kurarken, her katman diğer yığındaki ilgili katmanla iletişim kurar; örneğin, IP katmanı IP katmanıyla, TCP katmanıyla TCP katmanıyla iletişim kurar vb.

Şimdi farklar: TCP yığını fiziksel ağın soyutlamasını sağlamak üzere tasarlanmış olsa da kanal yığını yalnızca iletinin nasıl teslim edildiğine, yani aktarıma ilişkin bir soyutlama sağlamak için değil, iletidekiler veya iletişim için kullanılan protokol gibi diğer özellikleri de sağlayacak şekilde tasarlanmıştır. taşıma dahil ama bundan çok daha fazlası. Örneğin, güvenilir oturum bağlayıcı öğe kanal yığınının bir parçasıdır; ancak bu, aktarımın veya doğrudan aktarımın altında değildir. Bu soyutlama, yığın içindeki alt kanalın temel transfer protokolünü kanal yığını mimarisine uyarlamasını gerektirerek elde edilir ve ardından, güvenilirlik garantileri ve güvenlik gibi iletişim özelliklerini sağlamak için yığının üstündeki kanallara dayanır.

İletiler, Message nesneleri olarak iletişim yığınında akar. Yukarıdaki şekilde gösterildiği gibi alttaki kanala aktarım kanalı adı verilir. Diğer taraflara ileti gönderip almaktan sorumlu olan kanaldır. Bu, Message nesnesini diğer taraflarla iletişim kurmak için kullanılan biçime dönüştürme ve bu biçimden geri dönüştürme sorumluluğunu içerir. Taşıma kanalının üzerinde, her biri güvenilir teslim garantileri gibi bir iletişim işlevi sağlamakla sorumlu olan herhangi bir sayıda protokol kanalı olabilir. Protokol kanalları, içlerinden nesne biçiminde Message akan iletiler aracılığıyla çalışır. Genellikle, iletiyi üst bilgiler ekleyerek veya gövdeyi şifreleyerek dönüştürürler ya da alındı bildirimleri gibi kendi protokol kontrol mesajlarını gönderip alırlar.

Kanal Şekilleri

Her kanal, kanal şekli arabirimleri veya kanal şekilleri olarak bilinen bir veya daha fazla arabirim uygular. Bu kanal şekilleri, kanalın uyguladığı iletişim odaklı gönder ve al veya iste ve yanıtla gibi yöntemleri sağlar ve bu yöntemleri kanalın kullanıcısı çağırır. Kanal şekillerinin tabanında, katmanlı bir mekanizma olarak tasarlanmış ve yığındaki kanallar tarafından sunulan rastgele özelliklere erişmek amacıyla TIChannel yöntemini sağlayan GetProperty arabirimi bulunmaktadır. IChannel genişleten beş kanal şekli vardır:

Ayrıca, bu şekillerin her birinin oturumları destekleyecek şekilde System.ServiceModel.Channels.ISessionChannel<TSession> uzanan bir karşılığı vardır. Bunlar şunlardır:

Kanal şekilleri, mevcut aktarım protokolleri tarafından desteklenen bazı temel ileti değişimi desenlerinden sonra desenlenir. Örneğin, tek yönlü mesajlaşma bir IInputChannel/IOutputChannel çifte karşılık gelir, istek yanıtı IRequestChannel/IReplyChannel çiftlerine karşılık gelir ve çift yönlü iletişim IDuplexChannel'ye karşılık gelir (hem IInputChannel hem de IOutputChannel'yi genişletir).

Kanal Yığını ile programlama

Kanal yığınları, genellikle bir bağlayıcının kanal yığınını oluşturduğu fabrika deseni kullanılarak oluşturulur. Gönderme tarafında, bir bağlama elemanı bir ChannelFactory oluşturmak için kullanılır ve bu da bir kanal yığını oluşturur ve yığındaki en üst kanala bir referans döndürür. Uygulama daha sonra ileti göndermek için bu kanalı kullanabilir. Daha fazla bilgi için bkz. İstemci Channel-Level Programlama.

Alma tarafında gelen iletileri dinleyen bir IChannelListener oluşturmak için bağlantı kullanılır. IChannelListener kanal yığınları oluşturarak ve uygulama referansını üst kanala teslim ederek dinleme uygulamasına mesajlar sağlar. Uygulama daha sonra gelen iletileri almak için bu kanalı kullanır. Daha fazla bilgi için Hizmet Channel-Level Programlama'ya bakın.

Kanal Nesne Modeli

Kanal nesne modeli, kanalları, kanal dinleyicilerini ve kanal fabrikalarını uygulamak için gereken temel arabirim kümesidir. Özel uygulamalarda yardımcı olmak için sağlanan bazı temel sınıflar da vardır.

Kanal dinleyicileri gelen iletileri dinlemekten ve ardından bunları kanal dinleyicisi tarafından oluşturulan kanallar aracılığıyla yukarıdaki katmana iletmekten sorumludur.

Kanal fabrikaları, ileti göndermek ve kanal fabrikası kapatıldığında oluşturdukları tüm kanalları kapatmak için kullanılan kanallar oluşturmakla sorumludur.

ICommunicationObject , tüm iletişim nesnelerinin uyguladığı temel durum makinesini tanımlayan temel arabirimdir. CommunicationObject , diğer kanal sınıflarının arabirimi yeniden uygulamak yerine türetebileceği bu çekirdek arabirimin bir uygulamasını sağlar. Ancak, bu gerekli değildir: özel bir kanal ICommunicationObject öğesini doğrudan uygulayabilir ve CommunicationObject öğesinden devralmayabilir. Şekil 3'teki sınıfların hiçbiri kanal modelinin parçası olarak kabul edilmez; bunlar, kanal oluşturmak isteyen özel kanal uygulayıcıları tarafından kullanılabilen yardımcılardır.

Kanal modeli

Aşağıdaki konular, kanal nesne modelinin yanı sıra özel kanallar oluşturmaya yardımcı olan çeşitli geliştirme alanlarını açıklar.

Konu Açıklama
Hizmet: Kanal Dinleyicileri ve Kanallar Hizmet uygulamasında gelen kanalları dinleyen kanal dinleyicilerini açıklar.
Müşteri: Kanal Fabrikaları ve Kanallar Hizmet uygulamasına bağlanmak için kanallar oluşturan kanal fabrikalarını açıklar.
Durum Değişikliklerini Anlama Arabirim System.ServiceModel.ICommunicationObject ile kanallardaki durum değişikliklerini nasıl modellediğini açıklar.
İleti Değişimi Deseni Seçme Kanalların destekleyebilecekleri altı temel ileti değişimi desenini açıklar.
Özel Durumları ve Hataları İşleme Özel kanallarda hataların ve özel durumların nasıl işleneceğini açıklar.
Yapılandırma ve Meta Veri Desteği Uygulama modelinden özel kanalların kullanımını desteklemeyi ve bağlamaları ve bağlama öğelerini kullanarak meta verileri dışarı ve içeri aktarmayı açıklar.