2012-03-15 60 views
0

我有一个相当复杂的windows服务(用.net 4编写)和几个并行运行的子系统。我的windows服务里面发生了什么事?

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

如果有一个gui应用程序,它会显示我感兴趣的应用程序的每个部分的状态,这将是很好的。我对如何执行此操作有一些想法,但我也想听听别人的想法。

我对一个解决方案很感兴趣,这个解决方案很容易在未来的windows服务中使用,而且我没有在寻找任何非常复杂的东西。

有没有这种东西的工具? 你自己做过吗? 进程间通信如何?

回答

1

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

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

WCF Binding Selection Flow Chart

如果您正在寻找更直接的WCF框架方法,请查看Juval Lowy的发布 - 订阅WCF框架,该框架在this MSDN article中有相当详细的描述。该代码可通过文章查看,或者您可以从Lowy的网站here下载源代码和示例。转到下载部分,按发现类别进行筛选,然后您会看到它。

+0

很好的答案,谢谢。如果没有人马上响起,我会接受。是的,最大的头部划痕是进程间通信。很有趣,我没有想到使用WCF。我习惯于在Web服务场景中使用WCF,我忘记了它有其他用途。 – 2012-03-16 01:43:22

+0

如果你已经有WCF的经验,这是一个明智之举。 ;) – 2012-03-16 01:53:25

+0

我想我是一个无脑的人! – 2012-03-16 13:32:37