双向客户端服务器体系结构/实现

时间:2009-06-08 14:51:33

标签: .net client-server

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

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

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

C)忘记双向通信并使用民意调查体系结构来轮询服务器以获取新消息 - 工作正常但会创建一个过于繁琐的系统,并使客户端和服务器之间的“对话”充满挑战。

最好的办法是什么?建议使用任何不同的方法吗?

4 个答案:

答案 0 :(得分:1)

在WCF中查看Duplex Services - 这可能是获取所需内容的一种方式,而不必担心低级管道。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

同一作者还有一系列网络直播herebook

答案 3 :(得分:0)

如果客户端是IOS设备或Android设备,那么在WCF中使用Duplex Service怎么样?这些客户会支持回调吗?