将.NET应用程序中的数据广播到另一个

时间:2013-03-14 07:23:56

标签: .net networking

我在本地网络A和B上有两个应用程序,应用程序A应该是服务器 并向应用程序B的所有实例广播数据数组,如果应用程序B的任何实例收到此数组的项目,则另一个B实例将不会收到此项目, 还有任何实例,如果应用程序B能够在应用程序A启动之前或之后启动(两个应用程序之间的通信将不起作用)。 .NET中应用此方案的最佳技术或方法是什么?。

1 个答案:

答案 0 :(得分:1)

单次发送意味着这不是真正的广播:您不能“广播”并将其限制为一个接收者。工作A的需要意味着它不能是TCP套接字。

听起来你想要一个中间的中间件盒作为工作队列。 A可以将项添加到队列中,B的实例可以使项目出列。我会使用类似redis的东西,因为设置,免费且非常高效是微不足道的。在redis的上下文中,A会调用RPUSH(将新项目放在最后),每个B都会调用LPOP(从一开始就删除项目)。当不是数据时,每个B都可以定期轮询;当它删除数据时,它只能在循环中LPOP直到数据用完,然后定期轮询。如果你不想紧紧地循环,还有一个阻塞弹出(BLPOP),但我不是那个人的粉丝;如果我需要立即知道新数据,我宁愿使用内置的pub / sub(PUBLISH / SUBSCRIBE)发送“有新数据”的消息,只是让客户看到{ {1}}。

.NET可以使用各种redis客户端。

除了提到的各个命令之外,上述大多数命令都会转换为任何形式的消息总线; MSMQ等