Sözleşmeleri Yönlendirme

Yönlendirme sözleşmeleri, Yönlendirme Hizmeti'nin işleyebileceği ileti desenlerini tanımlar. Her sözleşme türüzdür ve hizmetin ileti şemasını veya eylemini bilmeden bir ileti almasına olanak tanır. Bu, Yönlendirme Hizmeti'nin yönlendirilmekte olan temel iletilerin özellikleri için ek yapılandırma olmadan iletileri genel olarak yönlendirmesine olanak tanır.

Sözleşmeleri Yönlendirme

Yönlendirme Hizmeti genel bir WCF İletisi nesnesi kabul ettiğinden, sözleşme seçerken dikkat edilmesi gereken en önemli nokta, istemciler ve hizmetlerle iletişim kurarken kullanılacak kanalın şeklidir. İletileri işlerken Yönlendirme Hizmeti simetrik ileti pompaları kullanır, bu nedenle genellikle gelen sözleşmenin şekli giden sözleşmenin şekliyle eşleşmelidir. Bununla birlikte, Hizmet Modeli dağıtıcısının şekilleri değiştirebildiği durumlar vardır; örneğin dağıtıcı çift yönlü kanalı istek yanıt kanalına dönüştürür veya gerekli olmadığında ve kullanılmadığında kanaldan oturum desteğini kaldırır (yani SessionMode.Allowed olduğunda, bir IInputSessionChannel'i IInputChannel'edönüştürür).

Yönlendirme Hizmeti, bu ileti pompalarını desteklemek için ad alanında System.ServiceModel.Routing , Yönlendirme Hizmeti tarafından kullanılan hizmet uç noktalarını tanımlarken kullanılması gereken sözleşmeler sağlar. Bu sözleşmeler, herhangi bir ileti türünün veya eylemin alınmasına olanak tanıyan ve Yönlendirme Hizmeti'nin belirli ileti şemasını bilmeden iletileri işlemesine olanak tanıyan türsüz anlaşmalardır. Yönlendirme Hizmeti tarafından kullanılan sözleşmeler hakkında daha fazla bilgi için bkz . Yönlendirme Sözleşmeleri.

Yönlendirme Hizmeti tarafından sağlanan sözleşmeler ad alanında System.ServiceModel.Routing bulunur ve aşağıdaki tabloda açıklanmıştır.

Contract Şekil Kanal Şekli
ISimplexDatagramRouter SessionMode = SessionMode.Allowed

AsyncPattern = true

IsOneWay = true
IInputChannel -> IOutputChannel
ISimplexSessionRouter SessionMode = SessionMode.Required

AsyncPattern = true

IsOneWay = true
IInputSessionChannel -> IOutputSessionChannel
IRequestReplyRouter SessionMode = SessionMode.Allowed

AsyncPattern = true
IReplyChannel -> IRequestChannel
IDuplexSessionRouter SessionMode=SessionMode.Required

CallbackContract=typeof(ISimplexSession)

AsyncPattern = true

IsOneWay = true

TransactionFlow(TransactionFlowOption.Allowed)
IDuplexSessionChannel -> IDuplexSessionChannel

Ayrıca bkz.