接收者:通道侦听器
和它们的名字暗示的一样,通道侦听器就是为了创建通道并侦听传入的消息 。这个模型借鉴了伯克利Socket编程API。在WCF里,这个模型可以在 Windows Socket(Winsock) API里看到。在.NET Framework编程里,这个模型存在于 System.Net.Sockets命名空间里。在这个模型里,TcpListener或Socket会绑定 一个地址,然后被动侦听连接传入的消息。当连接建立以后(例如,客户端链接 到侦听器),会有一个以Accept开头的方法返回一个TcpListener或Socket的实 例,程序可以使用这个对象来接受数据。
在WCF里,通道侦听器做着相同的工作。它们会绑定一个URI,然后等待传入 的消息,当连接建立以后一个以Accept开头的方法会返回一个通道的实例。然后 程序可以使用这个通道对象来接收消息。尽管所有的通道都定义了以Accept 开 头的方法,但是只有侦听器类型的侦听器才会侦听消息。举例说明一下,考虑一 下通道侦听器的堆栈。通道侦听器处于堆栈的最底层。传输通道侦听器是唯一的 一个绑定地址并且开始侦听连接消息的通道。堆栈处于上面通道侦听器会依次调 用下一个通道侦听器的Accept方法,直到调用最底层的传输通道侦听器。
图7-1:传输通道堆栈
但是也不是所有的传输通道侦听器都是这样工作的。因为各自传输层固有的 差别,导致了他们之间存在很大的不同。例如,面向连接的传输通道侦听器(例 如 TCP/IP和named pipe)在接收了一个消息以后会返回一个通道。面向非连接 的传输通道侦听器(例如MSMQ)会立即返回一个通道,因为不需要等待请求消息 。
The IChannelListener Interface
时间: 2024-10-28 07:41:33