【问题标题】:Multicast support in .Net.Net 中的多播支持
【发布时间】:2009-02-05 11:51:33
【问题描述】:

为了实现一个使用多播向网络中的其他进程发送小的周期性消息的网络应用程序,对于在 .Net 框架中使用 API,我有哪些选择?除了我当前明显的选择 System.net.sockets API 之外,WCF 是否提供了一种更简单的方法?还是 WCF 纯粹是一种基于 SOA 的点对点 IPC 机制?

注意:我非常熟悉多播编程的实现细节。我感兴趣的是 .Net 框架提供的其他选择。

【问题讨论】:

    标签: .net multicast


    【解决方案1】:

    我打算建议使用 WCF 中实现的回调通道(即发布/订阅类型系统),但这需要您的客户端向“服务器”注册。

    然后我将提到企业级消息传递解决方案,例如 Tibco EMS(一种 JMS 实现)。

    然后我点击谷歌并找到了这个链接:WCF Multicasting。那里有很多我在最初看 WCF 时还没有遇到过的想法。

    【讨论】:

    • 我之前查看了最后一个链接,特别是阅读了有关 PeerChannels 的内容,但后来发现这对于我试图完成的简单事情来说有点太多了。 PeerChannels 似乎是实现 P2P 网络的理想选择。
    【解决方案2】:

    您只需创建一个UDPClient 并将数据发送到一个多播地址(224/4,即从224.0.0.0239.255.255.255 的任何地址)。

    您的客户只是照常收听此地址。

    查看我的回答here了解更多详情。

    附:尽管WCF 对于这样一个简单的任务来说是相当大的杀伤力,但使用WCF 完全有可能。那里有不同的Message Exchange Patterns,我。 e.沟通的方式。

    您需要的是发送者的IOutputChannel 和侦听器的IInputChannel,这些都是面向数据报的模式。

    【讨论】:

      【解决方案3】:

      WCF 对于你想做的事情来说真的很重。

      您最好的选择确实是在套接字 api 中使用数据报。一旦您了解了 API,它们就不会太可怕了,但它肯定不是最友好的。

      如果您的 ISP/网络管理员允许多播数据,则多播是通过发送到的地址实现的。 WCF 本质上不允许多个目标 AFAIK,当您创建代理时,您必须将其指向一个 IP(可能是多播地址)

      【讨论】:

      • WCF 是否明确支持多播类型通信?是否有一些我可以查看的文档?
      • 正如我所说,多播是 Internet 协议的属性,而不是 WCF 或任何其他库的属性。是否支持多播由 ISP/网络管理员决定。我不相信您可以使用 TCP 写入多播地址,因此无法使用 WCF :(.
      • 我很确定 WCF 支持 UDP。
      【解决方案4】:

      FWIW,您最初的问题是专门询问 WCF 是否可以实现您的目标。正如 Quassnoi 之前指出的,您当然可以使用 WCF 执行此操作。虽然大多数关于 WCF 的文献都集中在您如何使用它的合同模型上,但仅使用通道模型和绑定结构是可能且合理的。

      如果您实现 IOutputChannel 和 IInputChannel,您可以创建自己的基于数据报的通道。这是作为框架的一部分提供的吗(我认为这也是您问题的核心)。但是,Microsoft 确实提供了一个 UDP 传输示例(他们声称支持多播)。您可以在以下 URL 找到他们的示例:

      http://msdn.microsoft.com/en-us/library/ms751494.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-15
        相关资源
        最近更新 更多