我的Windows服务内部发生了什么?

时间:2012-03-15 18:49:14

标签: windows-services

我有一个相当复杂的Windows服务(用.net 4编写),有几个并行运行的子系统。

我已经实现了相当不错的日志记录,但我觉得我需要更多关于每个子系统当前正在做什么的信息。这对于我需要停止升级/错误修复服务的时间非常有用。

有一个gui应用程序可以向我显示我感兴趣的应用程序的每个部分的状态会很好。我已经有了一些关于我将如何做到这一点的想法,但是我我也想听听别人的想法。

我对一个很容易在未来的Windows服务中解决的解决方案感兴趣,而且我不是在寻找任何非常复杂的解决方案。

这种东西有什么工具吗? 你自己做过吗? 进程间通信怎么样?

1 个答案:

答案 0 :(得分:1)

由于Windows服务无法再与用户会话交互,因此您需要有一个单独的应用程序来为您进行交互。根据你问题的细节,我想你明白这一点。

最大的问题是如何促进Windows服务和应用程序之间的通信。有各种方法 - 共享内存,套接字,管道,远程处理等。我成功使用的是WCF。如果您的UI将与服务驻留在同一台计算机上,请使用NetNamedPipeBinding。如果您需要从远程计算机访问,则可以更改为NetTcpBinding。我发现这个flow chart对绑定选择很有帮助。

WCF Binding Selection Flow Chart

如果您正在寻找一种更直接的WCF的更正式的框架方法,请查看Juval Lowy的Publish-Subscribe WCF框架,该框架在this MSDN article中有相当详细的描述。可以通过文章查看代码,也可以从Lowy的网站here下载源代码和示例。转到“下载”部分,按发现类别进行过滤,您将在那里看到它。