我有一个系统,我需要在客户端和服务器之间进行双向通信。在某些情况下,客户端需要启动与服务器的通信以提出问题、查询状态、获取一些数据等。{我们有一个执行重复任务、监控、报告生成、警报等的 AI 系统和客户端应用程序允许我们与服务器交互。} 在其他情况下,服务器需要向客户端报告一些状态变化或警报。我们正在使用 .NET 来实现该系统,并研究了许多不同的架构:
A) 打开 TCP 通道并在低级别管理通信。这似乎满足了我们的需求,但一直相当不稳定,主要是因为我们的团队在低级通信协议方面缺乏良好的经验。
B) 使用 .NET 远程处理,其中两个系统都充当主机 - 客户端将服务器注册为远程处理主机,一旦建立连接,服务器就会继续并将客户端注册为差异通道下的远程处理主机。这对于基本消息传递似乎可以正常工作,但在某些情况下,我们需要在客户端和服务器之间保持“对话”。在这种架构下拥有多个客户端似乎有点挑战。
C) 忘记双向通信并使用轮询架构来轮询服务器以获取新消息 - 工作正常,但创建了一个过于健谈的系统,并使客户端和服务器之间的“对话”具有挑战性。
关于最佳方法的任何想法?有什么不同的方法推荐吗?