`
taowen
  • 浏览: 190375 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

.NET Remoting Callback

阅读更多
有三个主要的障碍:
1、服务器解析不到客户端的assembly,因为callback的代码在客户端的assembly中
2、TypeFilterLevel默认不是Full
3、普通callback代码不能访问客户端的变量,因为不是serializable的

解决办法:
1、利用AppDomain的AssemblyResolve事件,让自己来处理assembly的查找逻辑。并且让客户端在开始的时候把自己的assembly位置发给服务器。
2、
BinaryServerFormatterSinkProvider serverFormatter = new BinaryServerFormatterSinkProvider();
            serverFormatter.TypeFilterLevel = TypeFilterLevel.Full;
            Hashtable properties = new Hashtable();
            properties.Add("portName", "thoughtworks");
            IpcChannel channel = new IpcChannel(properties, null, serverFormatter);

3、把callback放在MarshalByRefObject之中。并且让客户端注册自己的channel。这样服务器就会真的callback了,callback代码也是执行在客户端中。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics