【问题标题】:Control windows service using WCF使用 WCF 控制 Windows 服务
【发布时间】:2014-09-23 21:18:50
【问题描述】:

我正在创建 Windows 服务,该服务必须能够接收来自位于其他计算机上的客户端的命令。

到目前为止,使用 WCF 进行通信似乎是一个好主意。但是我无法在服务器端将任何参数传递给我的服务。所有关于 WCF 的教程都只展示了基本的方法,它们不与窗口服务交互。

有什么方法可以与windows服务通信吗? - 能够调用返回一些数据的方法。使用 WCF 感觉就像我只有一步之遥。我可以调用服务器上的方法并取回数据。但是,我无法访问服务的参数来修改它们。

基本上我想要的是让一个线程在windows服务中运行,定期执行一些操作,并能够与它进行远程交互(仅传递数字代码是不够的,我需要能够至少传递字符串(最好是自定义类型)并获得答案(字符串或自定义类型))

谢谢

【问题讨论】:

  • 我相信你至少需要两个线程。一个用于处理服务所做的工作,另一个用于通过 WCF(套接字、命名管道、tcp 等)响应请求。也许如果您发布您正在做的事情的示例,则可以发布更具体的答案。
  • 示例:我有在机器启动时自动启动的 Windows 服务。此服务创建一个线程,该线程周期性地执行一些操作。我希望能够远程修改线程的操作(例如,将文件添加到该线程正在使用的文件列表中)并获取服务的状态(文件列表)。到目前为止,我已经在服务器端的 Windows 服务中托管了 WCF,但是通过这个 WCF 服务,我无法与同一台机器上的 Windows 服务进行通信——我认为我可以很容易地从那个 WCF 与托管 WCF 的服务进行通信。我可以通过 File 进行交互,但是...

标签: c# .net wcf windows-services


【解决方案1】:

如果您可以传递数字,您可以修改服务合同以使用(自定义)数据合同,包括字符串和更复杂的类型。您需要检查 [DataContract] 以了解更多这些复杂类型。

此链接涵盖了基础知识:http://www.codeproject.com/Articles/653493/WCF-Hosting-with-Windows-Service

首先创建服务并为 Windows 服务创建安装程序。

从第四个模块开始,它解释了如何在客户端完成编码。 您需要公开服务元数据以供服务参考,以完成对客户端的编程。

如果您有元数据交换,您还可以使用 WCFtestclient 等工具检查是否可以找到托管的 WCF 服务。

【讨论】:

  • 您的 WCF 服务主机和 WCF 测试客户端是否正在运行并提供预期的结果?
  • 我能够做到这一点 - 在 Windows 服务中托管 WCF 并从客户端与其通信。但是我需要与 Windows 服务交互才能更改它的一些参数。使用给定的示例,我能够响应客户端,但不能修改底层(或其他)Windows 服务。
猜你喜欢
  • 1970-01-01
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多