如您所知,.NET Remoting 有一些限制,其中之一是服务器无法跨 NAT/防火墙向 Internet 客户端发送事件。
这是一个证据:http://social.msdn.microsoft.com/forums/en-US/netfxremoting/thread/6a91626a-3c44-45a1-b0f8-dbf4042f51e4/ http://social.msdn.microsoft.com/forums/en-US/netfxremoting/thread/6a91626a-3c44-45a1-b0f8-dbf4042f51e4/
今天,我计划改进 .NET Remoting,以便服务器可以向 Internet 客户端发送事件。我对.NET Remoting研究不深,所以不知道.NET Remoting出现这个问题的原因。有人可以给我一些解释吗?
而且我不知道我是否可以解决这个问题?
请帮我。谢谢。
.NET Remoting 确实有其局限性,例如不同网络外部的事件和外部客户端无法访问不同网络内部的服务器,因为使用套接字在网络上相互通信,因为 MarshalByRef 的序列化/反序列化对象与网络本身绑定在一起,因此无法通过防火墙从外部访问......而且它已经很老了,但是,有四种方法可以处理这个问题,尽管有解决方法 http://www.codeproject.com/KB/dotnet/DotNetRemotingEventsExpl.aspx使活动到位...
- 使用可以绕过防火墙限制的第三方,例如DotNet远程处理 http://dotnetremoting.com/ or 正版频道 http://www.genuinechannels.com。使用过 GenuineChannels,有一些关于公司本身的问题,从它的声音来看,当我购买他们的组件时,遇到了麻烦,但存在内部问题......第三方组件有一个学习曲线,因为它不遵循远程处理的常规约定。事件处理机制功能强大且确实有效,但它违背了 Microsoft 在 Remoting 随 .NET 1.1 一起提供时所规定的逻辑。
- 我写过一篇文章代码项目 http://www.codeproject.com/KB/IP/redirsrvr.aspx这可能有助于绕过远程框架的限制..通过将流量从外部IP地址重定向到内部网络...这可以帮助您绕过您的案例中防火墙结构的限制...
- 修改 Remoting 框架的 Mono 源代码以消除限制并实现事件...但是据我所知,MarshalByRef 对象的序列化/反序列化存在一个障碍,因为它们与 Remoting 的序列化/反序列化不 100% 兼容。
- 与时俱进,学习/使用 WCF(Windows 通信框架),它取代了旧的远程处理框架......
如果应用程序是遗留应用程序,那么可能值得您首先尝试我的流量重定向代码并检查它是否适合您的情况...也就是说,发送/接收事件...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)