2009-06-08 49 views
0

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

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

B)使用.NET远程处理,其中两个系统都充当主机 - 客户端将服务器注册为远程主机,并且一旦建立连接,服务器就会继续并将客户端作为远程主机注册渠道。这对于基本的消息传递来说似乎没有问题,但是有些情况下我们需要在客户端和服务器之间保持“对话”。在这种体系结构下多客户似乎有点具有挑战性。

C)忘了双向通信,并使用轮询架构来轮询新邮件的服务器 - 工作好而造成的过度健谈系统,使客户端和服务器之间的具有挑战性的“对话”。

上最好的办法思绪之中的任何?建议采用不同的方法?

回答

1

在WCF中看看Duplex Services - 这可能会得到你所需要的,而不必担心低级别的管道的一种方式。

0

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

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

1

我有不错的经历 - 与XMPP(电平“概念证明”并没有在生产中部署它尚未)作为这种双向通信的协议;虽然大多数都是以交互式聊天应用程序的角度来考虑的,但它实际上是一个通用协议,它确实有.NET实现。微软的替代品可能是MSMQ。

0

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