关于WCF服务操作SayHello()案例分析

开发 后端
这里就WCF服务:定义了一个服务契约,一个操作SayHello(),具体的WCF服务类型定义和激活类型配置文章中有详细的代码。

大家对的WCF三种服务都很了解了吧,但是怎样更好的结合到实践中,想必有些人不知道怎么做,下面我们来介绍本次的示例代码,这里我们分别定义了三种激活类型的服务类:单调服务(Per-CallService),会话服务(SessionfulService),单例服务(SingletonService),托管宿主分别进行托管,这里为了测试,我们使用的绑定协议也是TCP方式,其他的协议这里没做具体的实现,有兴趣的朋友可以自己扩展修改代码,进行测试。

#T#WCF服务支持三种实例激活的类型:单调服务(Per-Call Service):每次的客户端请求分配一个新的服务实例。类似于Net Remoting的SingleCall模式;会话服务(Sessionful Service):则为每次客户端连接分配一个服务实例。类似于Net Remoting的客户端激活模式;单例服务(Singleton Service):所有的客户端会为所有的连接和激活对象共享一个相同的服务实例。类似于Net Remoting的SingleTon模式。

WCF服务:定义了一个服务契约,一个操作SayHello(),具体的WCF服务类型定义和激活类型配置如下:

  1. //此例定义了一个服务契约,三种服务分别为单调服务、会话服务、单例服务或单件服务  
  2. namespaceWCFService  
  3. {  
  4. //1.服务契约  
  5. [ServiceContract(SessionModeSessionMode=SessionMode.Allowed,Namespace="http://www.cnblogs.com/frank_xl/")]  
  6. publicinterfaceIWCFService  
  7. {  
  8. //操作契约  
  9. [OperationContract]  
  10. voidSayHello();  
  11. }  
  12. //2.服务类.单调服务  
  13. [ServiceBehavior(InstanceContextModeInstanceContextMode=InstanceContextMode.PerCall)]  
  14. publicclassWCFServicePerCall:IWCFService,IDisposable  
  15. {  
  16. //服务实例计数  
  17. privateintmCcount=0;  
  18. //构造函数  
  19. publicWCFServicePerCall()  
  20. {  
  21. Console.WriteLine("WCFServicePerCallInstanceisCreated");  
  22. }  
  23. //实现接口定义的方法  
  24. publicvoidSayHello()  
  25. {  
  26. mCcount++;  
  27. Console.WriteLine("WCFServicePerCallInstanceCountis:{0}",mCcount);  
  28. }  
  29. //实现接口定义的方法Dispose  
  30. publicvoidDispose()  
  31. {  
  32. Console.WriteLine("WCFServicePerCallInstanceisdisposed");  
  33. }  
  34. }  
  35. //3.服务类.会话服务  
  36. [ServiceBehavior(InstanceContextModeInstanceContextMode=InstanceContextMode.PerSession)]  
  37. publicclassWCFServicePerSession:IWCFService  
  38. {  
  39. //服务实例计数  
  40. privateintmCcount=0;  
  41. //构造函数  
  42. publicWCFServicePerSession()  
  43. {  
  44. Console.WriteLine("WCFServicePerSessionInstanceisCreated");  
  45. }  
  46. //实现接口定义的方法  
  47. publicvoidSayHello()  
  48. {  
  49. mCcount++;  
  50. Console.WriteLine("WCFServicePerSessionInstanceCountis:{0}",mCcount);  
  51. }  
  52. //实现接口定义的方法Dispose  
  53. publicvoidDispose()  
  54. {  
  55. Console.WriteLine("WCFServicePerSessionInstanceisdisposed");  
  56. }  
  57. }  
  58. //4.服务类.单例服务  
  59. [ServiceBehavior(InstanceContextModeInstanceContextMode=InstanceContextMode.Single)]  
  60. publicclassWCFServiceSingleTon:IWCFService  
  61. {  
  62. //服务实例计数  
  63. privateintmCcount=0;  
  64. //构造函数  
  65. publicWCFServiceSingleTon()  
  66. {  
  67. Console.WriteLine("WCFServiceSingleTonInstanceisCreated");  
  68. }  
  69. //实现接口定义的方法  
  70. publicvoidSayHello()  
  71. {  
  72. mCcount++;  
  73. Console.WriteLine("WCFServiceSingleTonInstanceCountis:{0}",mCcount);  
  74. }  
  75. //实现接口定义的方法Dispose  
  76. publicvoidDispose()  
  77. {  
  78. Console.WriteLine("WCFServiceSingleTonInstanceisdisposed");  
  79. }  
  80. }  
  81.  

 

责任编辑:田树 来源: 博客
相关推荐

2009-11-09 13:47:22

WCF Stream操

2009-11-05 17:00:34

WCF有序传递

2009-11-09 14:46:09

WCF集合契约等价

2009-11-06 10:37:57

配置WCF服务

2010-03-02 10:41:03

IIS托管WCF服务

2009-07-27 17:51:58

WCF服务ASP.NET

2009-11-05 16:01:51

WCF单调服务

2009-12-07 14:35:42

WCF异步调用

2009-11-06 10:45:47

WCF服务元数据交换

2009-11-09 13:04:53

WCF事物处理

2009-12-07 18:33:31

WCF Service

2009-11-09 16:44:18

WCF Service

2009-11-09 17:55:13

WCF缓存

2009-11-06 11:07:52

WCF事务属性

2010-03-02 09:39:11

保护WCF服务

2009-11-05 11:05:19

WCF服务合同

2009-11-05 15:25:36

WCF服务端配置

2011-12-26 16:33:02

WCF

2010-02-26 14:49:10

WCF服务实例单一性

2009-11-05 14:40:08

WCF KnownTy
点赞
收藏

51CTO技术栈公众号