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

问题描述:

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

单次投放意味着这不是一个真正的广播:你不能“广播”并将其限制在一个接收器上。工作A的需要意味着它不能是TCP套接字。

这听起来像你想要一个中间件盒子在中间作为工作队列。 A可以将项目添加到队列中,并且B的实例可以使项目出列。我会使用像redis这样的东西,因为它安装简单,免费且非常高效。在redis的上下文中,A会调用RPUSH(在最后放置新项目),并且每个B将调用LPOP(从开始删除项目)。当存在不是数据时,每个B可以只是定期轮询;当它删除数据时,它可以循环执行LPOP,直到数据用完,然后定期轮询。如果你不想紧密地循环,也会有一个阻挡流行音乐(BLPOP),但我并不是那个人的粉丝;如果我需要立即知道新数据,我宁愿使用内置的发布/订阅(PUBLISH/SUBSCRIBE)发送“有新数据”消息,使客户端看起来像LPOP

有各种可用于.NET的redis客户端。

除了上面提到的单个命令之外,上面的大部分都会转化为的任何形式的消息总线; MSMQ等