WCF單調(diào)服務(wù)開發(fā)配置注意事項(xiàng)總結(jié)
在WCF中,有很多比較重要的知識內(nèi)容,對于初學(xué)者來說要想全部掌握這些內(nèi)容,還是需要先從基礎(chǔ)知識開始學(xué)起。接下來我們先為大家介紹一下有關(guān)WCF單調(diào)服務(wù)的基本內(nèi)容,以方便大家了解。#t#
【1.1】WCF單調(diào)服務(wù)基本概念
單調(diào)服務(wù)(Per-Call Service):每次的客戶端請求分配一個新的服務(wù)實(shí)例。服務(wù)實(shí)例的生存周期緊緊限制于一次調(diào)用的開始與結(jié)束之間??蛻舳说拿看握埱蠖紩a(chǎn)生新的服務(wù)實(shí)例來響應(yīng)這個調(diào)用。類似于Net Remoting的SingleCall模式。 執(zhí)行步驟如下:
1. 客戶端調(diào)用代理,代理將調(diào)用轉(zhuǎn)發(fā)給服務(wù)。
2. WCF創(chuàng)建一個服務(wù)實(shí)例,然后調(diào)用服務(wù)實(shí)例的方法。
3. 當(dāng)方法調(diào)用返回時,如果對象實(shí)現(xiàn)了IDisposable接口,WCF將調(diào)用IDisposable.Dispose()方法。
4. 客戶端調(diào)用代理,代理將調(diào)用轉(zhuǎn)發(fā)給服務(wù)。
5. WCF創(chuàng)建一個對象,然后調(diào)用對象的方法。
【1.2】WCF單調(diào)服務(wù)開發(fā)配置:
單調(diào)服務(wù)開發(fā)配置十分簡單,我們使用[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]配置服務(wù)屬性完成。這樣的WCF服務(wù)模式為單調(diào)模式,WCF框架對自動更具設(shè)置的屬性來決定具體的服務(wù)激活類型。代碼如下所示:
- [ServiceBehavior(InstanceContextModeInstanceContextMode=
InstanceContextMode.PerCall)]- public class WCFServicePerCall : IWCFService,IDisposable
- {
- }
【1.3】WCF單調(diào)服務(wù)在使用中需要注意:
(1)[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]特性只能應(yīng)用到類上。
(2) 如果使用了昂貴的資源,如數(shù)據(jù)庫連接等非托管資源,繼承IDisposable接口, //實(shí)現(xiàn)接口定義的方法Dispose()方法顯示釋放資源。但是也有弊端,頻繁地創(chuàng)建與銷毀實(shí)例,仍然會對性能造成一定的影響。
(3)對于WCF服務(wù)而言,單調(diào)服務(wù)可以算是***的實(shí)例激活模式。 單調(diào)服務(wù)的一個最重要優(yōu)勢在于它能夠節(jié)省資源,支持系統(tǒng)的可伸縮性。另外在事務(wù)編程與隊(duì)列服務(wù)中優(yōu)勢更為明顯,在事務(wù)編程中新建服務(wù)實(shí)例,減少實(shí)例狀態(tài)的同步;而消息隊(duì)列,單調(diào)服務(wù)能夠建立服務(wù)實(shí)例與隊(duì)列消息之間的簡單映射。詳細(xì)信息會在后續(xù)文章中介紹。