<iframe align="right" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog02.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>
Channel, Sink, Sink Chain and Channel Sink Provider
为了扩展.Net Remoting,定制接收器(Sink)和信道接受提供程序(Channel Sink Provider),改变.Net Remoting的缺省行为,需要先了解.Net Remoting的相关概念及其运行机制。
下面先了解一些基本概念:
信道(Channel)-是跨远程处理边界(无论是在应用程序域、进程还是计算机之间)在应用程序之间传输消息的对象。信道可以在终结点上侦听入站消息,向另一个终结点发送出站消息,或者两者都可以。
信道必须实现 IChannel 接口,该接口提供诸如 ChannelName 和 ChannelPriority 这样的属性。专用于在特定端口上侦听特定协议的信道实现 IChannelReceiver,而专用于发送信息的信道实现 IChannelSender(注:IChannelReceiver和IChannelSender接口都继承IChannel 接口)。TcpChannel 和 HttpChannel 对象都实现这两种接口,因此它们可用于发送或接收信息。
.Net Remoting Framework提供了TcpChannel 和 HttpChannel两个信道的实现。
在发送消息之前或接收消息之后,信道(Channel)沿着信道接收对象链(a chain of channel sink objects)发送每个消息。该接收链(sink chain)包含基本信道功能所需的接收器(Sink)(如格式化程序接收器FormatterSink、传输接收器TransportSink或堆栈生成器接收器StackBuilderSink),但是您可以自定义信道接收链以便用消息或流执行特殊任务。
信道接收链(Sink Chain)处理任何发送到应用程序域或从应用程序域发送的消息。此时,您只有消息,但是您可以任意操作该消息,而后面的处理将使用您在处理之后返回给系统的消息。这是实现日志记录服务、任何种类的筛选器或者客户端或服务器上的加密或其他安全措施的理所当然的位置。以下插图显示基本信道接收链的结构。
每个信道接收器(Channel Sink)都处理流,然后将流传递到下一个信道接收器,这意味着您的接收器之前或之后的对象应当知道该如何处理传递给它们的流。(Sink/Channel Sink是同一个描述。)
StackBuilderSink 对象是服务器上远程对象前的最后一个消息接收器。
每个信道接收器(Channel Sink)或者实现 IClientChannelSink,或者实现 IServerChannelSink。客户端上的第一个信道接收器还必须实现 IMessageSink。它通常实现 IClientFormatterSink(它从 IMessageSink、IChannelSinkBase 和 IClientChannelSink 继承),并被称作格式化程序接收器(Formatter Sink),因为它将传入的消息转换为流(IMessage 对象)。
信道接收提供程序(Channel Sink Provider)-(实现 IClientChannelSinkProvider、IClientFormatterSinkProvider 或 IServerChannelSinkProvider 接口的对象)负责创建远程处理消息所流过的信道接收器(Channel Sink)。当远程类型被激活后,将从信道(Channel)中检索信道接收提供程序(Channel Sink Provider);然后在该接收提供程序上调用 CreateSink 方法以检索链上的接收器中的第一个Sink。
信道接收器(Channel Sink)还负责在客户端和服务器之间传输消息。信道接收器也链接在一起而形成一个链。当在接收提供程序上调用 CreateSink 方法时,该方法应该执行以下操作:
· 创建它自己的信道接收器。
· 在链中的下一个接收提供程序上调用 CreateSink。
· 确保下一个接收器和当前的接收器链接在一起。
· 将其接收器返回到调用方。
信道接收器负责将在它们上面进行的所有调用转发到链中的下一个接收器,并且应当提供用于存储对下一个接收器的引用的机制。
自定义信道接收器(Custom Channel Sinks)
自定义信道接收器被插入到格式化程序接收器(FormatterSink)和最后一个传输接收器(TransportSink)之间的对象链中。
传输接收器(TransportSink)
传输接收器是客户端上的链中最后一个接收器和服务器端上的链中第一个接收器。除了传输序列化的消息,传输接收器还负责将标头(Header)发送到服务器并在调用从服务器返回时检索标头和流。这些接收器内置在信道中,并且无法扩展。
简要总结.Net Remoting Infrastructure机制:
1,代理对象(Proxy)负责转发对Remote Objects的调用。
2,消息对象(Message Objects)用来调用Remote Methods的数据。
3,信道接收器(Sink/Channel Sink)用来远程方法调用(Remote method calls)处理消息。
4,信道接收提供程序(Channel Sink Provider)-一般用来将接收器(Sink)插入到信道接收链(Sink Chain)中。
5,格式化程序接收器FormatterSink-用来序列化/反序列化消息格式,进行传递。
6,传输接收器TransportSink-用来在进程或AppDomain之间传递序列化的消息。
Reference:
1, MSDN, .NET Framework 开发员指南, 接收器和接收链
相关推荐
电信设备-欧洲数字音频广播接收器的信道解码器及其信道解码方法.zip
行业分类-设备装置-具有带有增强的电感器的独立时钟恢复模块的集成的多信道接收器
现代电磁信号环境越来越复杂密集,要求电子战接收机必须具有很宽的处理带宽、高灵敏度、大动态范围、多信号并行处理和大量信息实时处理的能力。而数字信道化接收机不仅可以较好地满足上述要求,还可实现监视信道内...
电信设备-接收器相邻信道过载保护.zip
电信设备-WCDMA移动通信系统指示信道空时发射分集接收器及其接收方法.zip
多信道接收机中语用网格码的卷积译码器的网格去映象器.zip
在UF-OFDM系统中,接收器接收各用户信息时通常因受到信道特性的影响而失真。为恢复发送的比特信息,在接收机必须对信道的影响进行估计和补偿。要求在UF-OFDM系统中,采用已知的前导或者导频信息完成信道估计,并利用...
电信设备-具有交叉耦合信道参数估计的分集接收器.zip
在移动通信系统中,MIMO系统利用多个天线来发送和接收信号,能够增加信道容量, 并且在使用相同的总功率和带宽的条件下,比SISO系统有着更高的频谱利用率。理想条件 下,MIMO系统容量随天线数目线性增加。...
电信设备-CDMA接收器快速前向功率优化信道系统.zip
电信设备-CDMA接收器快速前向功率优化信道的方法.zip
基于FFT的短波信道化器FPGA实现,蔡金平,李绍胜,作为软件无线电系统的关键技术之一,如何高效的实现信道化过程是通信领域研究的热点和难点。信道化技术用于提取包含在接收带宽内
大学数值分析算法,基于多相结构的信道化接收机,pwm整流器的建模仿真。
此外,对于MMSE和ZF接收器,特征在于瑞利积MIMO信道可实现的分集复用折衷(DMT)。 研究结果表明,更大数量的散射体将改善具有线性接收器的瑞利积MIMO信道的性能,并且在高SNR体制下,ZF接收器可达到与瑞利积MIMO...
电信设备-单载波接收机的信道均衡器及其均衡方法.zip
通过无线衰落信道与全双工接收器进行秘密通信
matlab开发-QPsk调制和解调传输和信道损伤的存在。一个QPSK发送器和一个包含实际损害(AWGN、相邻信道等)的接收器。
电信设备-包含信道跟踪器的数字通信接收机及其运行方法.zip
在这个传播模型中,信源,信道和接收信号这三者,通常能知二求一,具体应用诸如利用海洋环境参数和接收到的信号来定位声源,或者通过计算发射信号和接收信号之间的差异,反演海洋环境参数。 而在接收器方面,我们...