實例模型圖分析WCF單調(diào)服務(wù)
WCF還是比較常用的,于是我研究了一下WCF單調(diào)服務(wù),在WCF分布式開發(fā)必備知識(2):.Net Remoting這篇文章里我已經(jīng)介紹過了Net Remoting相關(guān)的概念,其中也包括Net Remoting的激活方式SingleTon模式、SingleCall模式、客戶端激活方式。
#T#其實WCF服務(wù)的激活方式也與此相似。服務(wù)激活方式也是WCF借鑒Net Remoting的一個明顯的例子。Net Remoting相關(guān)的概念大家可以查閱WCF分布式開發(fā)必備知識(2):.Net Remoting這篇文章。 下面我們就來詳細(xì)的介紹WCF服務(wù)激活類型相關(guān)的知識點。在這里拿出來和大家分享一下,希望對大家有用,首先來介紹的是WCF單調(diào)服務(wù),
WCF支持三種實例激活的類型:
◆單調(diào)服務(wù)(Per-Call Service):每次的客戶端請求分配一個新的服務(wù)實例。類似于Net Remoting的SingleCall模式;
◆會話服務(wù)(Sessionful Service):則為每次客戶端連接分配一個服務(wù)實例。類似于Net Remoting的客戶端激活模式;
◆單例服務(wù)(Singleton Service):所有的客戶端會為所有的連接和激活對象共享一個相同的服務(wù)實例。類似于Net Remoting的SingleTon模式。
這里的服務(wù)激活模式是由我們定義的服務(wù)的上下文模式InstanceContextMode屬性來配置的,其代碼如下:
- public enum InstanceContextMode
- {
- PerSession,
- PerCall,
- Single
- }
WCF單調(diào)服務(wù)Call Service)
WCF單調(diào)服務(wù)(Per-Call Service):每次的客戶端請求分配一個新的服務(wù)實例。服務(wù)實例的生存周期緊緊限制于一次調(diào)用的開始與結(jié)束之間。客戶端的每次請求都會產(chǎn)生新的服務(wù)實例來響應(yīng)這個調(diào)用。類似于Net Remoting的SingleCall模式。 執(zhí)行步驟如下:
◆客戶端調(diào)用代理,代理將調(diào)用轉(zhuǎn)發(fā)給服務(wù)。
◆WCF創(chuàng)建一個服務(wù)實例,然后調(diào)用服務(wù)實例的方法。
◆當(dāng)方法調(diào)用返回時,如果對象實現(xiàn)了IDisposable接口,WCF將調(diào)用IDisposable.Dispose()方法。
◆客戶端調(diào)用代理,代理將調(diào)用轉(zhuǎn)發(fā)給服務(wù)。
◆WCF創(chuàng)建一個對象,然后調(diào)用對象的方法。
單調(diào)服務(wù)的實例化模型圖: