關(guān)于三種WCF模式揭秘
我們大家都知道WCF支持三種模式,不知道的沒(méi)有關(guān)系,相信你通過(guò)本篇文章你會(huì)了解WCF模式的。單調(diào)和單例模式體現(xiàn)了兩種極端的遠(yuǎn)程對(duì)象激活方式,而CAO則是一種相對(duì)折中的方式:一個(gè)客戶端代理對(duì)象與一個(gè)遠(yuǎn)程對(duì)象一一匹配。WCF實(shí)例上下文模式與.NET Remoting的遠(yuǎn)程對(duì)象激活方式類似,同樣具有三種不同的實(shí)例上下文模式,分別與上述三種激活方式匹配。這三種實(shí)例上下文模式分別是:?jiǎn)握{(diào)(Per- Call)模式、會(huì)話(Per-Session)模式和單例(Single)模式。
1、單調(diào)(Per-Call)模式
#T#單調(diào)(Per-Call)模式.NET Remoting的SingleCall遠(yuǎn)程對(duì)象激活方式。如果采用單調(diào)實(shí)例上下文模式,對(duì)于每一個(gè)服務(wù)調(diào)用,不論是來(lái)自相同的客戶端(服務(wù)代理)還是不同的客戶端,WCF模式總是創(chuàng)建一個(gè)全新的服務(wù)實(shí)例和實(shí)例上下文對(duì)象來(lái)處理服務(wù)調(diào)用請(qǐng)求。在服務(wù)操作執(zhí)行完畢,實(shí)例上下文對(duì)象和被封裝的服務(wù)實(shí)例被回收調(diào)。圖揭示了在單調(diào)模式下實(shí)例上下文、服務(wù)實(shí)例和服務(wù)代理之間的關(guān)聯(lián)。
圖單調(diào)模式下服務(wù)代理與服務(wù)實(shí)例上下文之間的關(guān)聯(lián)
2、會(huì)話(Per-Session)模式
會(huì)話(Session)的目的在于保持來(lái)自相同客戶端(即同一個(gè)服務(wù)代理)多次服務(wù)調(diào)用之間的狀態(tài)。如果從消息交互的角度來(lái)講,通過(guò)會(huì)話可以將來(lái)自相同客戶端的多個(gè)消息關(guān)聯(lián)在一起。在會(huì)話實(shí)例上下文模式下,WCF為每一個(gè)服務(wù)代理對(duì)象分配一個(gè)單獨(dú)的服務(wù)實(shí)例上下文對(duì)象,對(duì)于來(lái)自相同服務(wù)代理的所有服務(wù)調(diào)用請(qǐng)求,都將分發(fā)給相同的服務(wù)實(shí)例上下文處理。會(huì)話模式與.NET Remoting下的CAO遠(yuǎn)程對(duì)象激活WCF模式類似,圖3揭示了會(huì)話模式下實(shí)例上下文、服務(wù)實(shí)例和服務(wù)代理之間的關(guān)系。
模式下服務(wù)代理與服務(wù)實(shí)例上下文之間的關(guān)聯(lián)
3、單例(Single)模式
單例模式意味著WCF為每個(gè)服務(wù)維護(hù)一個(gè)并且僅維護(hù)一個(gè)服務(wù)實(shí)例上下文。不論請(qǐng)求來(lái)自相同的服務(wù)代理還是不同的服務(wù)代理,處理服務(wù)調(diào)用請(qǐng)求都是同一個(gè)服務(wù)實(shí)例上下文對(duì)象。單例模式相當(dāng)于.NET Remoting下的Singleton遠(yuǎn)程對(duì)象激活方式,圖4揭示了單例模式下實(shí)例上下文、服務(wù)實(shí)例和服務(wù)代理之間的關(guān)系。
會(huì)話模式下服務(wù)代理與服務(wù)實(shí)例上下文之間的關(guān)聯(lián)