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