Custom Channel Sink征服之旅二
来源:互联网 发布:淘宝店怎么关闭店铺 编辑:程序博客网 时间:2024/05/16 10:01
接上一篇《Custom Channel Sinks被我征服了》
.Net 的Channel Sink是一个很系统的框架,在了解Custom Channel Sink的原理及主要接口后,接下来的内容将讨论Channel Sink相关的知识,这也算第二步吧。
在我学习的过程中,我有一个心得想和大家分享:学习的过程是一个登山的过程,你得脚踏实地,一步一步向前,如果你认为这样的速度很慢,你想找一个“速成”的方法,那么结果只有一个,你永远也不能自己爬上去,因为世界上没有这种方法。
接下来我想讨论的是如何创建Channel Sink。Channel Sink分为两种,一种在客户端上工作,执行接口为IClientChannelSink;一种在服务器上工作,执行接口为IServerChannelSink。在这两个接口中,最关键的方法是ProcessMessage。
先看一下IClientChannelSink的ProcessMessage方法定义
void ProcessMessage(
IMessage* msg,
ITransportHeaders* requestHeaders,
Stream* requestStream,
[Out] ITransportHeaders** responseHeaders,
[Out] Stream** responseStream
);
msg:需要处理的消息
requestHeaders:添加到外发消息的头信息,其目标是服务器
requestStream:发送到传输层的字节流
以上3个参数是传入参数,其作用就是将客户端的数据发往服务器。下面两个参数是返回参数,其作用是返回来自服务器的响应。
responseHeaders:返回来自服务器的头信息
responseStream:返回来自于传输层的流
再看一下IServerChannelSink的ProcessMessage方法定义
ServerProcessing ProcessMessage(
IServerChannelSinkStack* sinkStack,
IMessage* requestMsg,
ITransportHeaders* requestHeaders,
Stream* requestStream,
[Out] IMessage** responseMsg,
[Out] ITransportHeaders** responseHeaders,
[Out] Stream** responseStream
);
sinkStack:被当前Channel Sink所调用的Channel Sinks栈
requestMsg:包含请求的消息
requestHeaders:从来自于客户端的消息中检索出来的头信息
requestStream:需要被处理然后传输给反序列化Sink的流
以上3个参数为传入参数,处理的是从客户端发送过来的数据,以下三个参数为返回参数,处理的是服务器的处理结果,要返回给客户端的数据。
responseMsg:返回服务器的回应消息
responseHeaders:返回发往客户端的头信息
responseStream:返回发送给传输Sink到客户端的流。
从上面的分析,我们可以很直观的发现,客户端的ProcessMessage方法和服务器端的ProcessMessage方法构成了一个消息处理环。其处理顺序为:客户端调用代理对象->[客户端的Sinks].ProcessMessage->[服务器端的Sinks].ProcessMessage->服务器创建堆栈处理数据->[服务器端Sinks].ProcessMessage->[客户端的Sinks].ProcessMessage->客户端调用代理对象返回值。在上面的顺序表达中,客户端和服务器端的ProcessMessage顺然都被标注了两次,实际上他们只执行了一次,第二次标注,实际上是第一次调用的返回,其返回值就是上面提到的out参数。
---------------------------
这一节就写道这里吧,还是由于工作原因,不能静下心来写blog,之所以写在这里,也是想和关注.net remoting框架的朋友交流一下,剩下的还是下周写出来,有什么问题,请QQ联系我:64528619,欢迎批评!
- Custom Channel Sink征服之旅二
- Flume笔记二之source,channel,sink
- Custom Channel Sinks被我征服了
- flume之source,channel,sink
- 从无到有系列之flume的source-channel-sink汇总03
- Channel, Sink, Sink Chain and Channel Sink Provider(转)
- 二、Nio之Channel
- Channel Sink Chain研究有感
- Java 之NIO(二) - Channel
- 【十八掌●武功篇】第十二掌:Flume之Source、Channel、Sink
- flume的source, channel, sink 列表
- flume组件汇总 (source, channel, sink)
- Flume单Channel多Sink配置
- flume的source, channel, sink 列表
- Flume组件汇总 source、sink、channel
- flume中几种常见的source、channel、sink
- flume 自定义source,sink,channel,拦截器
- NIO边看边记 之 channel(二)
- 日本人是这样解释中国近年来的流行语的
- 信息花园
- 在Windows下管理Oracle9i 服务
- ARP病毒攻击技术分析与防御
- ASP URL重写
- Custom Channel Sink征服之旅二
- X Window 系统使用指南——使用X的字型和色彩
- JSF in Action读书笔记一
- 侵入,无侵入? Annotation vs Interface
- 使用HttpHandler实现URL重写
- 自定义事件实现不同窗体间的通讯Delphi篇
- 利用Visual C#打造一个平滑的进度条
- bios常见中英文对照
- 将我们的请求发向我们想去的地方