.NET多播的.NET替代品

时间:2010-01-08 06:33:23

标签: .net asp.net udp messaging multicast

我正在寻找在.NET Framework上使用UDP多播的替代方案,我正在寻找建议。

我需要向运行相当多ASP.NET应用程序的多个Web服务器发送消息。这些消息只是单向的,来自几台不同的机器。 UDP多播将是完美的,除非我因为需要管理权限而无法使用它。有关原因的详细信息,请参阅ASP.NET Multicast UdpClient problems

是否有其他类似方式可以工作,允许多个应用程序接收广播类型的消息?

5 个答案:

答案 0 :(得分:1)

您是否考虑过使用MSMQ或SQL数据库?使用SQL 2008数据库,您可以让SQL服务器通知您更改。

答案 1 :(得分:1)

我想到了一些可能性:

  1. 将您的多播UDP代码放入Windows服务。通过在端口上只有一个侦听器,您不需要提升权限。您可以使用共享内存或许多其他技术与服务进行通信。

  2. 使用与中央消息调度/中继节点的异步点对点原始TCP连接。使用异步I / O发送和接收消息可以最大限度地减少等待时间。

  3. 使用持久排队机制,例如SQL Server中的Service Broker。它仍然是单播,但您可以使用单个存储过程向所有端点发送消息。同样,使用异步I / O来最小化等待时间。

  4. 使用商业消息传递过程中的过程 - 例如Tibco Rendezvous。

答案 2 :(得分:1)

ØMQ有两个CLR bindings可能比滚动您自己的消息传递层更有效率。您可以根据需要使用PUB / SUB套接字通过TCP或IP多播来组播消息。此外,由于该库是ASP.net的外部库,因此应该删除您遇到的受限权限问题。

答案 3 :(得分:0)

ActiveMQ是一项免费服务,如msmq。它可以处理非持久性消息,例如你的消息。缺点是它需要一台服务器,因为它基本上就像辐条和集线器式的方法,你有一个中央服务器。但它在.NET中运行良好,性能卓越。我每秒都会发送数百条消息,并保持良好状态。

答案 4 :(得分:0)

Redis pubsub使用StackExchange.Redis API。

简单,卓越的性能,可扩展性,如果您选择它,您必须将其用于其他事项,如缓存/会话管理/监控或瑞士军刀工具包的任何其他常见用途。