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

将数据从.NET应用程序广播到另一个应用程序,.net,networking,.net,Networking,我在本地网络a和B上有两个应用程序,应用程序a应该是服务器 并向应用程序B的所有实例广播一个数据数组,如果应用程序B的任何实例接收到该数组的一项,则其他B实例将不会接收该项, 如果应用程序B能够在应用程序A启动之前或之后启动(两个应用程序之间的通信将不起作用),也可以是任何实例。 在.NET中,应用此场景的最佳技术或方法是什么?单一交付意味着这不是真正的广播:您不能“广播”并将其限制为一个接收器。需要使用A意味着它不能是TCP套接字 听起来好像中间需要一个中间件框作为工作队列。A可以将项目添加到

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

单一交付意味着这不是真正的广播:您不能“广播”并将其限制为一个接收器。需要使用A意味着它不能是TCP套接字

<>听起来好像中间需要一个中间件框作为工作队列。A可以将项目添加到队列中,B的实例可以将项目退出队列。我会使用像redis这样的东西,因为它的设置非常简单、免费,而且非常高效。在redis的上下文中,A将调用
RPUSH
(将新项目放在末尾),每个B将调用
LPOP
(从开头删除项目)。每个B可以在没有数据的情况下定期轮询;当删除数据后,它可以在循环中执行
LPOP
,直到数据用完,然后定期轮询。如果您不想紧密循环,也会出现阻塞弹出(
BLPOP
),但我个人并不喜欢这种情况;如果我需要立即知道新数据,我宁愿使用内置的pub/sub(
PUBLISH
/
SUBSCRIBE
)发送一条“there's new data”(有新数据)消息,让客户端看起来像
LPOP

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


除了上面提到的单个命令外,上述大多数命令都可以转换为任何形式的消息总线;MSMQ等。

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

<>听起来好像中间需要一个中间件框作为工作队列。A可以将项目添加到队列中,B的实例可以将项目退出队列。我会使用像redis这样的东西,因为它的设置非常简单、免费,而且非常高效。在redis的上下文中,A将调用
RPUSH
(将新项目放在末尾),每个B将调用
LPOP
(从开头删除项目)。每个B可以在没有数据的情况下定期轮询;当删除数据后,它可以在循环中执行
LPOP
,直到数据用完,然后定期轮询。如果您不想紧密循环,也会出现阻塞弹出(
BLPOP
),但我个人并不喜欢这种情况;如果我需要立即知道新数据,我宁愿使用内置的pub/sub(
PUBLISH
/
SUBSCRIBE
)发送一条“there's new data”(有新数据)消息,让客户端看起来像
LPOP

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

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