【问题标题】:Why .NET Remoting server can't send event to internet clients为什么 .NET Remoting 服务器无法向 Internet 客户端发送事件
【发布时间】:2010-03-05 09:56:20
【问题描述】:

如您所知,.NET Remoting 有一些限制,其中之一是服务器无法通过 NAT/防火墙向 Internet 客户端发送事件。

这是一个证据:http://social.msdn.microsoft.com/forums/en-US/netfxremoting/thread/6a91626a-3c44-45a1-b0f8-dbf4042f51e4/

今天,我计划改进 .NET Remoting,以便服务器可以向 Internet 客户端发送事件。我没有深入研究.NET Remoting,所以不知道.NET Remoting 出现这个问题的原因。谁能给我解释一下?

我不知道我是否可以解决这个问题?

请帮助我。谢谢。

【问题讨论】:

    标签: .net remoting


    【解决方案1】:

    .NET Remoting 确实有其局限性,例如不同网络之外的事件和外部客户端无法访问不同网络内部的服务器,因为使用套接字在网络上相互通信,因为序列化/ MarshalByRef 对象的反序列化与网络本身相关联,因此无法通过适当的防火墙从外部访问......而且它已经很老了,但是,有四种方法可以解决这个问题,尽管有 workarounds 来获取事件到位...

    • 使用绕过防火墙限制的第三方,例如DotNetRemotingGenuineChannels。使用过 GenuineChannels,有一些关于公司本身的问题,听它的声音,遇到麻烦,因为我购买了他们的组件,但存在内部问题......第三方组件有一个学习曲线,因为它不遵循远程处理的常规约定。事件处理机制功能强大且确实有效,但它违反了 Microsoft 在 Remoting 与 .NET 1.1 一起提供时所指示的逻辑。
    • 我在CodeProject 上写了一篇文章,这可能有助于绕过远程处理框架的限制......通过将流量从外部 IP 地址重定向到内部网络......这可以帮助你绕过限制您的情况下的防火墙结构...
    • 修改 Mono 的 Remoting 框架源以消除限制并实现事件...但是 AFAIK,MarshalByRef 对象的序列化/反序列化存在一个障碍,因为它们与 Remoting 的序列化/反序列化不是 100% 兼容。
    • 与时俱进,学习/使用取代旧 Remoting 框架的 WCF(Windows 通信框架)...

    如果应用程序是旧版应用程序,可能值得您先试验一下我的流量重定向代码并检查它是否适用于您的情况...即发送/接收事件...

    【讨论】:

    • 请帮我在我的项目中选择解决这个问题的最佳解决方案。一切都很好,除了服务器无法向 Internet 客户端发送事件。谢谢。
    【解决方案2】:

    .NET Remoting 不提供任何安全性或控制权,如果您使用 .NET remoting,则预计您的所有系统都会受到损害。它只能在允许跨应用程序域边界通信的进程中使用。

    改为使用 WCF。 WCF 提供能够跨越防火墙等的标准和自定义传输。当您开始学习曲线时,请从有前途的东西开始。

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2011-05-12
      • 1970-01-01
      • 2012-05-08
      • 2014-08-12
      相关资源
      最近更新 更多