官术网_书友最值得收藏!

3.1.4 WCF的綁定模型

在上面的案例演示中,通過(guò)簡(jiǎn)單的幾行代碼就完成了一個(gè)完整消息交換過(guò)程。在這個(gè)例子中涉及了一系列重要的對(duì)象,比如信道(Channel)、信道監(jiān)聽(tīng)器(Channel Manager)、信道工廠(Channel Factory)等,這些是整個(gè)綁定模型構(gòu)成不可或缺的元素。他們相互協(xié)作組成了如圖3-6所示的WCF綁定模型。

圖3-6 WCF綁定模型

在整個(gè)綁定模型中,信道和信道棧位于最底層。信道棧是消息通信的通道,組成信道棧的各個(gè)信道專注于一個(gè)具體的消息處理功能的實(shí)現(xiàn)。按照提供功能的不同,可以將信道分成3類:傳輸信道(Transport Channel)、消息編碼信道(Message Encoding Channel)和協(xié)議信道(Protocol Channel)。傳輸信道實(shí)現(xiàn)了基于某種網(wǎng)絡(luò)協(xié)議(HTTP、HTTPS、TCP等)的消息傳輸;消息編碼實(shí)現(xiàn)了對(duì)消息的編碼,常見(jiàn)的消息編碼方式有:Text/XML、Binary和MTOM;而協(xié)議信道則實(shí)現(xiàn)WCF對(duì)若干WS-*協(xié)議的支持,比如WS-Security、WS-RM、WS-AT等。

在WCF中,信道通過(guò)信道管理器(ChannelManager)創(chuàng)建。對(duì)于信道管理器,讀者可能有點(diǎn)陌生,不過(guò)應(yīng)該還記得這兩個(gè)對(duì)象:信道監(jiān)聽(tīng)器(ChannelListener)和信道工廠(ChannelFactory)。實(shí)際上,信道管理器是信道監(jiān)聽(tīng)器和信道工廠的統(tǒng)稱。由于它在客戶端和服務(wù)端的作用不盡相同,信道管理器在服務(wù)端和客戶端具有不同的名稱。服務(wù)端的信道管理器的作用在于創(chuàng)建信道棧監(jiān)聽(tīng)請(qǐng)求、接收消息,所以稱為信道監(jiān)聽(tīng)器;而客戶端的信道管理器在于創(chuàng)建信道進(jìn)行請(qǐng)求消息的發(fā)送和回復(fù)消息的接收,所以被稱為信道工廠。

一般來(lái)講,信道管理器,無(wú)論是信道監(jiān)聽(tīng)器還是信道工廠,都對(duì)應(yīng)著一個(gè)綁定元素(Binding Element),綁定元素負(fù)責(zé)相應(yīng)信道管理器的創(chuàng)建。信道管理器是信道的創(chuàng)建者,而綁定元素又是信道管理器的創(chuàng)建者。綁定元素,顧名思義,就是組成綁定對(duì)象的元素。從本質(zhì)上講,每一個(gè)綁定,就是一組綁定元素的有序集合,綁定元素的構(gòu)成和次序決定綁定的特性與能力。

我們所說(shuō)的信道棧,指的是若干相關(guān)的信道按照一定的次序排列組成的一個(gè)消息流通的管道。由于信道的創(chuàng)建者是信道管理器,所以信道管理者的次序決定信道的次序。依此類推,信道管理器棧中每個(gè)信道管理器的先后次序由構(gòu)成綁定對(duì)象的所有綁定元素的次序決定。但是綁定元素的先后次序又是如何決定的呢?那就須要使用到另一個(gè)有用的對(duì)象:綁定上下文(Binding Context)對(duì)象,一般來(lái)說(shuō),一個(gè)綁定上下文維護(hù)著基于該綁定對(duì)象當(dāng)前綁定元素的有序列表,可以很容易地定位到下一個(gè)綁定元素。

主站蜘蛛池模板: 阜宁县| 承德市| 荃湾区| 曲水县| 肇源县| 类乌齐县| 屯昌县| 昌都县| 当雄县| 灵石县| 华阴市| 安福县| 通化县| 牡丹江市| 达州市| 讷河市| 老河口市| 安康市| 行唐县| 嘉兴市| 泽州县| 泸西县| 株洲市| 张家川| 宁化县| 保亭| 巩留县| 深水埗区| 娱乐| 绥中县| 罗源县| 菏泽市| 天峨县| 独山县| 永泰县| 桓仁| 讷河市| 米泉市| 拉萨市| 安阳市| 三门县|