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























