WCF綁定元素具體應用知識介紹
WCF開發工具的出現,對于開發人員來說具有非常大的作用。在這里我們將會為大家詳細介紹一下有關WCF綁定元素的相關概念。那么對于初學者來說,大家可以通過這篇文章想、充分掌握這些應用技巧。#t#
從結構的角度講,一個綁定對象有一系列綁定元素組成,每個綁定元素負責創建相應的信道。所以綁定元素幾何的構成以及它們之間的先后順序,決定了最終生成的信道棧中的信道組成已經它們位于棧中的先后順序。WCF之所以在設計的時候將綁定和綁定元素分離開發,是基于靈活性、可擴展性考慮的。 #t#
在介紹信道和信道棧的時候我們說過,我們不可能、也不應該創建一個***的信道能夠提供消息交換中的所有的功能,所以我們讓一個信道只承載某個單一的功能,比如傳輸信道專注于網絡傳輸,消息編碼信到專注于消息的編碼,WCF還定義了一一系列的信道,他們分別關注與安全、可靠傳輸和事務流轉等等。這種信道組合的設計方式使得我們可以根據具體的需求來定制我們將要創建的信道棧,讓它只具有我們必須的功能,而去除不必要的功能。
同理,我們可以根據具體實際需求,將必要的WCF綁定元素進行有序的組合,從而創建最能適合具體場景的綁定對象。由于信道可以分為必須的傳輸信道、消息編碼信道和可選的基于某種WS-*協議實現的協議信道,與之相對地,我們的綁定元素可以分為傳輸綁定元素、消息編碼綁定元素和協議綁定元素。
由于信道的實際創建者是信道管理器(信道工廠和信道監聽器),所以綁定元素只需要實現對信道管理器的創建,而最終實現對具體信道的創建。所以綁定元素的最根本的功能就是實現對信道監聽器和信道工廠的創建。這可以從所有WCF綁定元素的基類, System.ServiceModel.Channels.BindingElement的定義上看出來:
- public abstract class BindingElement
- {
- // Methods
- protected BindingElement();
- protected BindingElement(BindingElement elementToBeCloned);
- public virtual IChannelFactory<TChannel> BuildChannelFactory
<TChannel>(BindingContext context);- public virtual IChannelListener<TChannel> BuildChannelListener
<TChannel>(BindingContext context) where TChannel : class, IChannel;- public virtual bool CanBuildChannelFactory<TChannel>
(BindingContext context);- public virtual bool CanBuildChannelListener<TChannel>
(BindingContext context) where TChannel : class, IChannel;- public abstract BindingElement Clone();
- public abstract T GetProperty<T>(BindingContext context)
where T : class;- }
BindingElement的核心方法成員有兩個:BuildChannelListener<TChannel>和BuildChannelFactory<TChannel〉,用于創建相應的信道監聽器和信道工廠。兩個Build方法的參數都是BindingContext,關于BindingContext,我將在本章后續的部分中介紹。而CanBuildChannelFactory<TChannel>和CanBuildChannelListener<TChannel〉 則屬性兩個測試性質的方法,用于檢驗相應的相應的信道監聽器和信道功能是否可以被創建。
以上就是對WCF綁定元素的相關介紹。