.NET Framework自带的TcpChannel和HttpChannel不支持跨越防火墙的Event Callback。这是因为.NET内部的协议通道只支持单向通信,Callback和原始方法调用需要两个独立通道。Remoting要为事件回调的Session建立一个独立的协议通道,但是因为防火墙的关系没法得到Client的确切IP地址,这个Channel也就建立不起来。
Http在概念上不支持Push模式,这种设计算是可以接受。但这对于TcpChannel特别的不可思议,因为Client在初始化到Server的Remoting连接的时候已经建立一个可用的(穿越防火墙的)TcpChannel,为什么回调过程不能复用这个已经存在的通道呢?
解决的方法是编写一个可以双向通信的TcpChannel,这里有一个可用的共享版本。这里还有一个商业化(Read: $$$)的版本。
打印 | 张贴于 2003-09-17 00:36:00 | Tag:.NET
留言反馈
请问如何在remoting访问远程服务器时使用代理
谢谢!