文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>.Net Remoting 1

.Net Remoting 1

时间:2011-02-18  来源:peijihui

二、客户端
1、
   客户端进程可以同时注册多个通道,但是必须用不同的通道名称。如果不指定通道名称,则系统自动命名为"http"或"tcp"
   (注意,这里是进程级别的。假如一个PC上,运行两个客户端,分别注册一个通道,名称一致也无妨)
2、
   在默认情况下,即使不主动注册通道,而直接使用Activator.GetObject去获取远程对象,系统会默认注册一个TcpClientChannel的通道,通道名称为"tcp";
   在多线程情况下,每个线程都去Activator.GetObject一个远程对象,跟踪当前应用程序的所有通道,发现也始终只有一个名称为"tcp"的通道
   注:理论上,我们在客户端可以不注册通道,而使用默认的通道。但有例外,如下3

3、但是如果使用事件机制的话,由于安全级别的限制,客户端必须使用TcpChannel,那么这时候,必须自己手动注册通道。
   原因如下:
在VS2003中,将序列化的安全级别提高了。所以,在注册通道时,应该将TypeFilterLevel设置为Full;
具体方法,在服务端注册通道的代码:
BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider();
BinaryClientFormatterSinkProvider clientProvider = new BinaryClientFormatterSinkProvider();
serverProvider.TypeFilterLevel = TypeFilterLevel.Full;

IDictionary props = new Hashtable();
props["port"] = 0;

HttpChannel channel = new HttpChannel(props,clientProvider,serverProvider);
ChannelServices.RegisterChannel(channel);

另外在项目中记得加上命名空间的引用:
using System.Runtime.Serialization.Formatters;
否则无法识别TypeFilterLevel.

 

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载