0

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

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

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

4

5 回答 5

1

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

于 2010-12-15T01:59:06.303 回答
1

想到了几种可能性:

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

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

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

  4. 使用超出进程的商业消息传递总线——比如 Tibco Rendezvous。

于 2010-01-08T09:20:56.927 回答
1

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

于 2010-01-08T06:37:21.583 回答
0

ActiveMQ 是一个类似于 msmq 的免费服务。它可以处理非持久消息,例如您的消息。缺点是它需要一个服务器,因为它基本上是作为辐条和集线器风格的方法,你有一个中央服务器。但它在 .NET 中运行良好并且具有出色的性能。我每秒通过它发送数百条消息,并且保持正常。

于 2010-11-24T19:06:28.320 回答
0

Redis pubsub使用StackExchange.Redis API。

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

于 2016-04-03T15:30:21.320 回答