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