使用netTCPBinding的双向通信

时间:2012-07-05 06:58:36

标签: c# wcf .net-4.0 windows-services nettcpbinding

我是WCF的新手(只需一天或两天)。我打算创建一个具有Client / Server的应用程序

WCF服务(在作为Windows服务托管的服务器上):

  1. 将使用(Process.Start())
  2. 调用某些命令
  3. 将从我的数据库发送一些信息
  4. 问题:

    1. 我应该使用什么WCF绑定? WsDualhttp或netTCP(请详细说明,如果可以)
    2. WCF是否适用于SqlServer + EF 4.1
    3. 服务器用户界面:

      这将主要用于

      1. 开始停止上述服务
      2. 更改地址(localhost到[我的IP地址])和端口
      3. 显示服务状态(正在运行或已停止)
      4. 问题:

        1. 如何从此UI更改我的WCF服务的地址和端口(它将是一个不同的项目,因此不同的配置文件)。
        2. 客户端应用

          1. 用于向WCF服务发出命令。
          2. 了解服务是否正在运行或已停止。
          3. 接收任务完成或故障的状态消息。
          4. 此外,是否可以组合Windows安装程序来安装ServerUI + WCF服务+ Windows服务?

2 个答案:

答案 0 :(得分:1)

WCF服务

  1. 以下是选择正确装订的几个链接。根据您描述的情景,我会选择netTCP。
  2. WCF和SQL Server彼此独立,因此我不希望使用Windows服务与您的数据库交互时出现任何问题。
  3. 我建议您阅读how to start a process from a Windows service
  4. 服务器用户界面

    1. 我建议您在Windows服务中托管另一个WCF服务,以便与您的服务器UI进行交互。您可以使用netNamedPipeBinding,因为此通信通道始终是本地的,即在同一个盒子上。因此,您的Windows服务将托管两个WCF服务 - 一个用于与客户端进行外部通信,另一个用于与配置UI进行本地通信。
    2. <强>安装

      1. 是的,可以使用Windows安装程序,但这可能对您所描述的内容有些过分。在服务器UI,WCF服务和Windows服务中,唯一绝对需要安装的是Windows服务。其他理论上可以简单地通过将程序集复制到目标系统来运行。您可以考虑通过命令行安装Windows服务。这样,您就可以使用WinZip之类的软件来解决自解压可执行文件。这可能不如正式安装那么重量级。如果你走这条路,请看一步一步here

答案 1 :(得分:0)

了解WCF双工服务: http://msdn.microsoft.com/en-us/library/ms731064.aspx

为什么要使用Windows服务的界面?如果您有权访问IIS7和WAS,我建议您在Windows服务中使用它而不是自托管。

这是WCF配置管理的一个很好的起点: http://msdn.microsoft.com/en-us/library/ff650534.aspx

是的,您可以使用Windows安装程序。

干杯 --Jocke