.net remoting 是在.net 平台上对原来的进程间通信的一种更高级的抽象,编码更简单,更具伸缩性。是实现远程调用分布式应用的一种可选方案。
要编写客户服务器程序,可以有两种方式。
1*可以用纯编码的方式,把信道的配置信息写到代码中。
先声明并实例化通信信道。(服务器端要指明通信端口)
值得注意的是信道构造函数的重载参数。其中之一:一个是字典类型(封状信道信息),一个是比如Soap(Server/Cllent)ormatterSinkProvide 类型的信道格式化描述符号收发器的提供程序,它有一个方法能返回比如Soap(Server/Cllent)FormatterSink对象,这个对象就能利用.net Framework提供给我们的SoapFormatter和BinaryFormatter对象。利用这两个对象的Serialize和DeSerialize方法,以及SyncProcessMessage()和AsncProcessMessage()实现客户端与服务器端数据
串行化和并行化。
例:服务器信道初始化和注册方式
a/简单方式:TcpServerChannel schannel=new TcpServerChannel("8086")
channelService.RegisterChannel(schannel,false);
在这种方式下,信道的其他属性值采用了默认值。比如信道名字,信道优先权等。
b*详细方式;
Dictionary<string,string> properties=new Dictionary<string,string>();
properties["name"]="Http....";
properties["priority"]="15";
properties["port"]="8086";
BinaryFormatterSinkProvider prod=new BinaryFormatterProvidor();
TcpServerChannel ch=new TcpServerChannel(properties,prod);
ChannelServices.RegisterChannel(ch);
其实信道的属性数据都存储在一个ChannelDataStore这个对象中,他可以通过channel的ChannelData属性获得,然后可以从ChannelDataStore这个对象查询channel相关的信息。
注意,channelServices这个对象的强大功能,可以利用它实现对信道的管理。比如HttpChannel ch=channelServices.getchannel("http");ch.StopListening(null);可以拒绝监听http信道。
2*种方式是利用应用程序的配置文件,存储信道的配置信息。
并利用RemotionConfiguration.Config("*.exe.config",false);即可,很简洁的方式。
详细的配置设置可以查阅相关的资料。
.