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