WCF實(shí)例停用基本應(yīng)用技巧分享
WCF中有很多比較高深的應(yīng)用技巧是值得我們?cè)趯W(xué)習(xí)和實(shí)踐的過程中去深入研究的。那么,今天我們就先從WCF實(shí)例停用開始了解,從而使我們對(duì)這一開發(fā)工具有一個(gè)更加深入的了解程度。#t#
WCF實(shí)例停用只針對(duì)會(huì)話服務(wù)而言。單例服務(wù)雖然也可以應(yīng)用,但卻無效。
“會(huì)話實(shí)際要做的不僅是關(guān)聯(lián)客戶端消息,同時(shí)還要關(guān)聯(lián)托管了服務(wù)的上下文。啟動(dòng)會(huì)話時(shí),宿主會(huì)創(chuàng)建一個(gè)新的上下文。會(huì)話終止時(shí),上下文也隨之而終止。默認(rèn)情況下,上下文的生命周期與發(fā)布的服務(wù)實(shí)例的生命周期相同。然而,出于優(yōu)化的目的,WCF為服務(wù)設(shè)計(jì)者提供了一個(gè)分離兩種生命周期的選項(xiàng),該選項(xiàng)允許WCF獨(dú)立地停用實(shí)例,而不必依賴于它的上下文。實(shí)際上,WCF還允許不包含實(shí)例的上下文存在。”
這種實(shí)例管理技術(shù)稱為上下文停用(Context Deactivation)。控制上下文停用的最常見辦法是通過OperationBehavior特性的ReleaseInstanceMode屬性:
- public enum ReleaseInstanceMode
- {
- None, BeforeCall, AfterCall, BeforeAndAfterCall,
- }
- [AttributeUsage(AttributeTargets.Method)]
- public sealed class OperationBehaviorAttribute : Attribute,...
- {
- public ReleaseInstanceMode ReleaseInstanceMode
- {
- get;set;
- }
- //More members
- }
“通常,我們只需要將WCF實(shí)例停用應(yīng)用到部分服務(wù)方法上,而不是全部方法;或者為不同的方法設(shè)置不同的值。”例如:
- class MyService : IMyContract,IDisposable
- {
- [OperationBehavior(ReleaseInstanceModeReleaseInstanceMode =
ReleaseInstanceMode.AfterCall)]- public void MyMethod( )
- {
- ...
- }
- public void MyOtherMethod( )
- {
- ...
- }
- public void Dispose( )
- {
- ...
- }
- }
以上就是對(duì)WCF實(shí)例停用的相關(guān)內(nèi)容的介紹。