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 |