WCF信道监听器代码示例解析

开发 开发工具
WCF信道监听器的创建,可以用于在某种特定模式下进行请求的监听。那么接下来我们将会通过一段代码示例来为大家详细讲解相关内容。

WCF是一个功能比较强大的开发工具,可以帮助我们创建一个功能稳定,安全性高的解决方案。在这里,我们创建一个自定义的信道监听器:SimpleReplyChannelListner。#t#

该WCF信道监听器用于在请求-回复消息交换模式下进行请求的监听。在本案例中,我们来创建与之相对的信道工厂:SimpleChannelFactory< TChannel>,用于请求-回复消息交换模式下进行用于请求发送信道的创建。由于SimpleChannelFactory< TChannel>的实现相对简单,将所有代码一并附上。

SimpleChannelFactory< TChannel>直接继承自抽象基类SimpleChannelFactoryBase< TChannel>。字段成员_innerChannelFactory表示信道工厂栈中后一个信道工厂对象,该成员在构造函数中通过传入的BindingContext对象的BuildInnerChannelFactory< TChannel>方法创建。OnCreateChannel是核心大方法,实现了真正的信道创建过程,在这里我们创建了我们自定义的信道:SimpleRequestChannel.。构建SimpleRequestChannel. 的InnerChannel通过­­­_innerChannelFactory的CreateChannel方法创建。对于其他的方法(OnOpen、OnBeginOpen和OnEndOpen),我们仅仅通过PrintHelper输出当前的方法名称,并调用­_innerChannelFactory相应的方法。

WCF信道监听器代码示例:

 

  1. public class SimpleChannelFactory< TChannel> : 
    ChannelFactoryBase
    < TChannel> 
  2. {  
  3. public IChannelFactory< TChannel> _innerChannelFactory;  
  4. public SimpleChannelFactory(BindingContext context)  
  5. {  
  6. PrintHelper.Print(this, "SimpleChannelFactory");  
  7. this._innerChannelFactory = context.BuildInnerChannelFactory
    < TChannel>();  
  8. }   
  9. protected override TChannel OnCreateChannel
    (EndpointAddress address, Uri via)  
  10. {  
  11. PrintHelper.Print(this, "OnCreateChannel");  
  12. IRequestChannel innerChannel = this._innerChannelFactory.
    CreateChannel(address, via) as IRequestChannel;  
  13. SimpleRequestChannel. channel = new SimpleRequestChannel.
    (this, innerChannel);  
  14. return (TChannel)(object)channel;  
  15. }  
  16. protected override IAsyncResult OnBeginOpen
    (TimeSpan timeout, AsyncCallback callback, object state)  
  17. {  
  18. PrintHelper.Print(this, "OnBeginOpen");  
  19. return this._innerChannelFactory.BeginOpen(timeout, callback, state);  
  20. }   
  21. protected override void OnEndOpen(IAsyncResult result  
  22. {  
  23. PrintHelper.Print(this, "OnEndOpen");  
  24. this._innerChannelFactory.EndOpen(result);  
  25. }  
  26. protected override void OnOpen(TimeSpan timeout)  
  27. {  
  28. PrintHelper.Print(this, "OnOpen");  
  29. this._innerChannelFactory.Open(timeout);  
  30. }  

以上就是对WCF信道监听器的相关介绍。

责任编辑:曹凯 来源: 博客园
相关推荐

2009-11-09 10:03:09

WCF通道监听器

2010-02-24 13:38:18

WCF PreCal模

2010-02-22 15:00:02

WCF信道工厂

2011-03-21 16:21:49

Oracle监听口令监听器

2009-07-08 17:39:23

Servlet监听器

2009-09-27 17:46:22

Hibernate监听

2011-05-16 10:14:11

Hibernate

2011-06-01 14:55:24

Android Service 监听器

2010-01-13 09:49:09

注释监听器Listener

2009-01-03 13:37:26

Oracle监听器Oracle服务器Oracle网络配置

2009-07-06 13:48:53

Servlet监听器

2010-04-23 18:00:31

2009-11-18 18:28:27

Oracle监听器

2023-01-06 08:55:00

2010-03-02 14:41:00

WCF行为控制

2012-02-03 13:27:16

2010-04-19 15:38:10

2010-08-09 11:06:01

Flex事件机制

2010-04-23 10:13:18

Oracle监听

2020-04-20 11:09:49

过滤器监听器 Web
点赞
收藏

51CTO技术栈公众号