0

我有一个系统,我需要在客户端和服务器之间进行双向通信。在某些情况下,客户端需要启动与服务器的通信以提出问题、查询状态、获取一些数据等。{我们有一个执行重复任务、监控、报告生成、警报等的 AI 系统和客户端应用程序允许我们与服务器交互。} 在其他情况下,服务器需要向客户端报告一些状态变化或警报。我们正在使用 .NET 来实现该系统,并研究了许多不同的架构:

A) 打开 TCP 通道并在低级别管理通信。这似乎满足了我们的需求,但一直相当不稳定,主要是因为我们的团队在低级通信协议方面缺乏良好的经验。

B) 使用 .NET 远程处理,其中两个系统都充当主机 - 客户端将服务器注册为远程处理主机,一旦建立连接,服务器就会继续并将客户端注册为差异通道下的远程处理主机。这对于基本消息传递似乎可以正常工作,但在某些情况下,我们需要在客户端和服务器之间保持“对话”。在这种架构下拥有多个客户端似乎有点挑战。

C) 忘记双向通信并使用轮询架构来轮询服务器以获取新消息 - 工作正常,但创建了一个过于健谈的系统,并使客户端和服务器之间的“对话”具有挑战性。

关于最佳方法的任何想法?有什么不同的方法推荐吗?

4

4 回答 4

1

看看WCF 中的双工服务- 这可能是一种无需担心低级管道即可获得所需内容的方法。

于 2009-06-08T14:58:07.220 回答
1

我有很好的经验(在“概念验证”级别——还没有在生产中部署它)将XMPP作为这种双向通信的协议;虽然主要是从交互式聊天应用程序的角度考虑的,但它实际上是一种通用协议,并且确实具有 .NET 实现。Microsoft 的替代方案可能是 MSMQ。

于 2009-06-08T15:01:32.003 回答
0

WCF 似乎是一个不错的选择。CodeProject上有一个相当不错的教程,它描述了如何实现客户端/服务器聊天应用程序。

这里还有一系列网络广播和同一作者的

于 2009-06-08T14:59:07.623 回答
0

如果客户端是 IOS 设备或 android 设备,在 WCF 中使用双工服务怎么样?这些客户端会支持回调吗?

于 2014-04-30T07:24:18.627 回答