【发布时间】:2018-10-17 19:18:54
【问题描述】:
C# Restful Web 服务(在 Windows Server 2012 标准上)需要通过我在同一台服务器上运行的 C# 套接字服务器程序向设备发送命令。当网络服务试图向选定的设备发送命令时,相关设备的线程可以拾取该命令并将其发送给该设备。被选中后,应该被这个线程删除。同时,与设备n关联的线程n也可以拾取设备n的命令,线程n可以在拾取并发出该命令后删除该命令。请参考下面的系统架构图。
我的问题是什么是最好的方式(最有效、最可靠的解决方案)让 Web 服务发送命令数据并且这些套接字线程可以选择它们的关联命令,然后在发出这些命令后删除这些命令?这些命令可以保存到数据库中,socket线程可以定期检查数据库,但这不是有效的方法,尤其是在设备和用户量很大的情况下。命名管道是否适合这种情况,并且线程可以检查这些管道实例以找到关联的命令?
【问题讨论】:
-
@JohnWu 是的,相关,但不是很具体。我认为“Message Broker”的快速谷歌可能会显示您正在寻找的模式。我知道 Azure 服务总线可以做你想做的事,每个设备都有一个主题和该主题内的订阅。我确信其他主要的消息代理服务也可以做到这一点。
标签: c# multithreading multiprocessing ipc data-sharing