这种方式与COM比较更加清晰,易懂,并且也确实易于开发,例如我们可以实现一个压缩的Sink。下面是开发一个CompressionSink的骨架例程,从这来看,COM实在是望尘莫及。
using System;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Messaging;
using System.IO;
namespace CompressionSink
{
public class CompressionClientSink: BaseChannelSinkWithProperties,
IClientChannelSink
{
private IClientChannelSink _nextSink;
public CompressionClientSink(IClientChannelSink next)
{
_nextSink = next;
}
public IClientChannelSink NextChannelSink
{
get {
return _nextSink;
}
}
public void AsyncProcessRequest(IClientChannelSinkStack sinkStack,
IMessage msg,
ITransportHeaders headers,
Stream stream)
{
// TODO: Implement the pre-processing
sinkStack.Push(this,null);
_nextSink.AsyncProcessRequest(sinkStack,msg,headers,stream);
}
public void AsyncProcessResponse(IClientResponseChannelSinkStack sinkStack,
object state,
ITransportHeaders headers,
Stream stream)
{
// TODO: Implement the post-processing
sinkStack.AsyncProcessResponse(headers,stream);
}
public Stream GetRequestStream(IMessage msg,
ITransportHeaders headers)
{
return _nextSink.GetRequestStream(msg, headers);
}
public void ProcessMessage(IMessage msg,
ITransportHeaders requestHeaders,
Stream requestStream,
out ITransportHeaders responseHeaders,
out Stream responseStream)
{
// TODO: Implement the pre-processing
_nextSink.ProcessMessage(msg,
requestHeaders,
requestStream,
out responseHeaders,
out responseStream);
// TODO: Implement the post-processing
}
}
}
小结
以上就是我几天来对.NET Remoting的学习所得。我的学习主要集中在.NET Remoting的远程方法传递这方面,因为我觉得这才是RPC最关键的技术。从几天的学习所得,可以看出.NET FrameWork的确是一种技术,思想都非常先进的框架。我唯一的怀疑在于微软所谓的平台无关性,这方面,JAVA也许永远胜出一筹。
这篇文章0.1版放在我的blog上 http://blog.csdn.net/drizt/
- 第4页:.Net远程方法调用研究(4)
- 第5页:.Net远程方法调用研究(5)
- 相关阅读:
- ·向日葵远程控制工具更新 添加主机列表
//soft.zol.com.cn/560/5601151.html - ·滴滴牵手北交大 建交通大数据研究中心
//soft.zol.com.cn/559/5594133.html - ·Mugeda HTML5视频教程:图片上传方法
//soft.zol.com.cn/553/5534536.html - ·事故e处理全市推广 拍照传图远程定责
//soft.zol.com.cn/552/5529763.html - ·Google Drive免费1TB容量获取新方法
//soft.zol.com.cn/552/5520789.html