为了实现使用多播向网络中的其他进程发送小型周期性消息的网络应用程序,我在.Net框架中使用API有哪些选择?除了我明显的当前选择,System.net.sockets API,WCF是否提供了更简单的方法?或者WCF纯粹是一种基于SOA的点对点IPC机制?
注意:我非常熟悉多播编程的实现细节。我感兴趣的是.Net框架提供的其他选择。
答案 0 :(得分:2)
您只需创建UDPClient
并将数据发送到多播地址224/4
,即224.0.0.0
到239.255.255.255
的任何地址。
您的客户只是照常听取此地址。
有关详细信息,请参阅我的回答here。
P.S。虽然WCF
对于这样一个简单的任务来说是相当难以理解的,但WCF
完全有可能。那里有不同的Message Exchange Patterns
,i。即沟通的方式。
对于发送者,您需要IOutputChannel
,对于侦听器,您需要IInputChannel
,这些是面向数据报的模式。
答案 1 :(得分:2)
我打算建议在WCF中使用回调通道(即发布/子类型系统),但这需要您的客户注册“服务器”。
然后我会提到像Tibco EMS(JMS实现)这样的企业级消息传递解决方案。
然后我点击谷歌并找到了这个链接:WCF Multicasting。那里有很多想法,我还没有看到我在WCF中的初始看法。
答案 2 :(得分:0)
对于你想做的事情,WCF非常重。
你最好的选择是使用套接字api中的数据报。一旦你了解API,它们就不会太可怕了,但它肯定不是最友好的。
如果您的ISP /网络管理员允许多播数据,则通过发送的地址实现多播。 WCF本身不允许多个目标AFAIK,当您创建代理时,必须将其指向IP(可以是多播地址)
答案 3 :(得分:0)
FWIW,您的初步问题具体询问WCF是否可以实现您的目标。正如Quassnoi早先指出的那样,你当然可以使用WCF来做到这一点。虽然大多数关于WCF的文献都围绕着如何使用它的契约模型,但仅使用渠道模型和约束结构是可能的,也是合理的。
如果您实现IOutputChannel和IInputChannel,您可以创建自己的基于数据报的通道。这是否作为框架的一部分提供(我认为这也是您的问题的核心)。但是,Microsoft确实提供了UDP传输的示例(他们声称支持多播)。您可以在以下网址找到他们的样本: