什么更合适:Windows服务或WCF服务?

时间:2018-08-24 02:22:48

标签: asp.net windows-services wcfserviceclient

我正在创建一个Web应用程序。我想创建一个监听服务(TCP),该服务可以连续监听并根据此更新网页。

Windows服务还是WCF服务?

最后,我只想要一个后台服务,该服务连续监听套接字并更新数据库中的数据。当数据库更新时,我将使用信号r在页面中显示该信号。

现在我正在尝试使用WCF,但是我想知道是否也可以使用Windows服务来完成。现在,该应用程序将在LAN上运行。但是将来,它也可以在云中。

1 个答案:

答案 0 :(得分:0)

首先,重要的是要了解Windows服务和WCF服务并不相同。

  • Windows服务是在Windows后台运行的专用可执行文件。
  • WCF服务是一段专门的代码,它通过定义明确的端点公开某些功能。它不是单独运行,而是必须由某些父进程托管,例如IIS,桌面应用程序甚至Windows服务。

考虑到您所描述的问题,我想问的最基本的问题是您是否可以控制将通过TCP连接接收的数据。 WCF建立在ABC(地址,绑定和合同)的概念之上,为了方便WCF端点之间的数据交换,所有这些都必须匹配。例如,如果您希望通过IIS公开WCF端点,该IIS接受来自某个远程WCF端点的TCP连接,则远程WCF端点需要使用约定的数据协定将数据发送到IIS托管的WCF端点。如果没有,WCF将无法正常工作。因此,如果您无法定义在WCF端点之间使用的数据协定,那么您将需要找到另一个选项。一种可行的选择是在Windows服务中打开TCP侦听器,处理接收到的数据,更新数据库,并侦听更多数据。

================================================ =

通过示例的方式,我在一个项目中工作,该项目具有与后端Windows服务进行通信的前端桌面应用程序。我们同时构建了应用程序和Windows服务,因此我们可以完全控制两个进程之间的数据交换。在某个时间点,我们使用WCF作为数据交换机制。 Windows服务将托管一个公开了NetNamedPipeBinding的WCF服务,我们随后将其更改为NetTcpBinding,以解决一些系统管理问题。然后,应用程序将创建自己的终结点,以与Windows服务中托管的WCF服务进行通信。

这很好。

随着我们的系统变得越来越成熟,我们需要开始从Windows服务向应用程序发送越来越多的信息。如果我没记错的话,我相信我们在WCF中进行了流式传输实验,得出的结论是我们不能容忍这些开销。因此,我们使用WCF在应用程序和Windows服务之间交换命令和状态信息,但同时使用TCP套接字连接将数据从Windows服务流传输到应用程序。

这很好。

当我们有机会更新Windows服务软件时,我们决定最好在Windows服务与应用程序之间使用单一的通信机制。因此,我们将WCF完全替换为TCP套接字连接,该套接字使用本地消息协议在两个方向(应用程序到Windows服务和Windows服务到应用程序)之间交换信息。

这很好用,这是我们几年来一直使用的方法。

HTH