双向沟通服务器/客户端架构?

时间:2011-05-19 20:59:28

标签: c# wcf sockets architecture client-server

我正在试图弄清楚哪个客户端/服务器技术(即.NET Framework的哪个部分)用于我们的新应用程序。我们将使用.NET 3.5 SP1在C#中编写应用程序。

它将由一个将作为“服务器”运行的中央服务组成,并且几个客户端应用程序分布在多台计算机上。客户端应用程序是一个trayapp应用程序,它将从服务器接收通知,并将一些信息发送回服务器。因此,沟通将是双向的,而且需要快速。服务器需要知道将通知发送到哪个客户端。

我一直在想我可以使用套接字。我也遇到过TcpListener和TcpClient类。另一种选择是使用WCF做一些事情,但我不确定如何与它进行快速双向通信。

3 个答案:

答案 0 :(得分:4)

使用NetTcp绑定的WCF。

您应该编写双工服务。

答案 1 :(得分:3)

在不知道您计划交换多少数据的情况下,很难做出精确的建议。我使用WCF和TCP套接字在我的UI和我的Windows服务之间交换数据。以下是我的考虑因素。

我将WCF用作非周期性数据交换。例如,当我的Windows服务中发生事件时,我使用WCF将事件传递给UI。特别是对于这种基于事件的机制,我强烈推荐Juval Lowy的Publish-Subscribe Framework,它是免费的here。我还使用WCF将配置更改从UI传递到Windows服务。 WCF是我这种数据交换的完美解决方案。

当用户告诉我的Windows服务执行某些操作时,会有大量数据从Windows服务发送到UI。为此,我使用TCP套接字。我知道WCF有流媒体功能,我强烈考虑使用它。在我做出决定之前,我没有时间适应它,所以我选择了我所知道的。

虽然我希望我全面使用WCF来实现对称性,即对于非周期性和流数据,但这种混合方法对我有用。

希望这有帮助。

答案 2 :(得分:1)

如果我是你,我会避免使用插座,因为有很多东西需要了解它们。只需在SO处查看所有socket questions。如果您不知道如何正确使用它们,这可能是一场噩梦。

WCF将为您处理所有较低级别。

相关问题