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

4

我正在尝试确定我们新应用程序所需的客户端/服务器技术(即.NET Framework的哪一部分)。我们将使用.NET 3.5 SP1和C#编写该应用程序。

该应用程序将包括一个作为“服务器”运行的中央服务,以及分布在多台机器上的几个客户端应用程序。客户端应用程序是一个托盘应用程序,将从服务器接收通知,并向服务器发送一些信息。因此,通信将是双向的,需要快速进行。服务器需要知道要向哪个客户端发送通知。

我一直在考虑可以使用套接字。我也遇到了TcpListener和TcpClient类。另一种选择是使用WCF,但我不确定如何使用它进行快速的双向通信。


1
请看这里:http://realfiction.net/go/113 - NoWar
3个回答

4

使用NetTcp绑定的WCF。

您应该编写一个双向服务。


2
你能否详细介绍一下WCF和NetTcp的优缺点,以及双工服务应该被使用的高级概述等方面的内容? - Raynos
@Ray:这并不是非常必要。除非有一个真正的好理由,否则应该在所有这样的工作中使用WCF;netTCPBinding是.NET到.NET WCF通信的明显选择;而双工服务是使用WCF进行双向通信的唯一方法。 - John Saunders

3

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

我使用WCF进行非周期性数据交换。例如,当Windows服务发生事件时,我使用WCF将事件通信到UI。特别是对于这种基于事件的机制,我强烈推荐Juval Lowy的发布-订阅框架,可以在这里免费获取。我还使用WCF将配置更改从UI传输到Windows服务。对于这种数据交换,WCF是完美的解决方案。

当用户要求我的Windows服务执行某些操作时,从Windows服务发送大量数据到UI。为此,我使用TCP套接字。我知道WCF具有流传输功能,并且我强烈考虑使用它。但是在做出决定之前,我没有时间熟悉它,所以我选择了我熟悉的方法。
尽管我希望在整个对称性方面(即针对非周期性和流数据)使用WCF,但这种混合方法已经为我服务得很好。
希望这可以帮助你。

1

如果我是你,我会避免使用套接字,因为关于它们有很多需要了解的内容。只需看看在 SO 上所有 套接字问题。如果你不知道如何正确使用它们,这可能会成为一场噩梦。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接