WCF控制服务对象释放特殊方式介绍

开发 开发工具
我们在这篇文章中为大家介绍的WCF控制服务对象释放的方法主要通过设置OperationBehavior.ReleaseInstanceMode 来实现。

相信大多数使用过WCF开发工具的朋友们都会运用一个比较直接的方式来进行WCF服务的对象释放。那么,今天我们将要给大家介绍另外一种比较特殊的应用,希望可以增加大家在实际应用中的选择应用。#t#

通过设置 OperationBehavior.ReleaseInstanceMode 也能达到控制服务对象释放的目的,一种有四种方式可供选择。

None : 缺省参数,表示不做任何处理。

BeforeCall : 如果在方法调用开始前,Session 中已经有服务实例,则先释放该实例,然后创建新实例完成方法调用。

AfterCall : 调用完方法后,释放当前服务实例。

BeforeAndAfterCall : 调用前释放 Session 中的已有服务实例,然后创建新实例完成调用,结束调用后释放新实例。

测试WCF控制服务对象释放原型

 

  1. [ServiceContract(SessionMode = SessionMode.Required)]  
  2. public interface IMyService  
  3. {  
  4. [OperationContract]  
  5. void Test();  
  6. [OperationContract]  
  7. void TestBeforeCall();  
  8. [OperationContract]  
  9. void TestAfterCall();  
  10. [OperationContract]  
  11. void TestBeforeAndAfterCall();  
  12. }  
  13. [ServiceBehavior(InstanceContextMode = 
    InstanceContextMode.PerSession)]  
  14. public class MyServie : IMyService, IDisposable  
  15. {  
  16. public MyServie()  
  17. {  
  18. Console.WriteLine("Constructor");  
  19. }  
  20. [OperationBehavior]  
  21. public void Test()  
  22. {   
  23. }  
  24. [OperationBehavior(ReleaseInstanceModeReleaseInstanceMode=
    ReleaseInstanceMode.BeforeCall)]  
  25. public void TestBeforeCall()  
  26. {  
  27. Console.WriteLine("TestBeforeCall");  
  28. }  
  29. [OperationBehavior(ReleaseInstanceMode = 
    ReleaseInstanceMode.AfterCall)]  
  30. public void TestAfterCall()  
  31. {  
  32. Console.WriteLine("TestAfterCall");  
  33. }  
  34. [OperationBehavior(ReleaseInstanceMode = 
    ReleaseInstanceMode.BeforeAndAfterCall)]  
  35. public void TestBeforeAndAfterCall()  
  36. {  
  37. Console.WriteLine("TestBeforeAndAfterCall");  
  38. }  
  39. public void Dispose()  
  40. {  
  41. Console.WriteLine("Dispose");  
  42. }  
  43. }  
  44. public class WcfTest  
  45. {  
  46. public static void StartServer()  
  47. {  
  48. AppDomain.CreateDomain("Server").DoCallBack(delegate  
  49. {  
  50. ServiceHost host = new ServiceHost(typeof(MyServie), 
    new Uri("http://localhost:8080/MyService"));  
  51. host.AddServiceEndpoint(typeof(IMyService), new WSHttpBinding(), "");  
  52. host.Open();  
  53. });  
  54. }  

以上就是对WCF控制服务对象释放的相关方法的介绍。

责任编辑:曹凯 来源: 豆豆网
相关推荐

2009-12-22 15:14:33

WCF调用

2010-02-26 15:24:27

WCF释放服务对象

2010-02-22 14:18:34

WCF服务验证

2010-06-24 17:29:03

chkconfig 工

2010-02-22 17:43:19

WCF服务启动

2010-03-02 16:09:53

WCF框架

2009-12-04 17:35:51

WCF 服务

2009-12-15 15:19:30

Ruby访问控制

2010-02-22 14:09:08

WCF Dispose

2013-04-01 10:36:10

2014-01-08 16:43:20

Hypervisor服务器电源消耗

2023-06-20 08:10:00

2009-11-05 16:12:09

WCF会话服务

2009-09-03 14:27:15

RHEL 5.0版本控制服务器红帽

2009-02-20 13:24:32

SUSE控制服务器蔓延势头

2010-02-26 13:34:50

WCF编码机制

2009-11-05 14:47:35

WCF Stream对

2010-03-02 09:32:54

WCF服务消息

2009-02-07 13:23:36

服务器蔓延虚拟化Novell SUSE

2010-02-22 15:13:04

WCF分布式事务
点赞
收藏

51CTO技术栈公众号