Windows Service Plus GUI / C#

时间:2009-12-21 21:19:14

标签: c# windows-services

我已经看到一些应用程序作为Windows服务运行,但仍然可以提供一个GUI,允许用户查看实际发生的情况。

例如,我们有一个构建报告的Windows服务。管理员希望看到许多统计信息,例如排队的报告数量,使用的ram数量,平均构建时间等。

我们想要做的是为管理员提供一种方法来查看此内容 - 例如可以连接到窗口服务以收集和显示此信息的应用程序......或者可能是应用程序本身可以使用的方式提供自己的GUI并在需要时显示它。现在,应用程序唯一能够创建日志文件。

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:8)

几种。

  1. 有一些挂钩到您的Windows服务的组件,并通过远程处理将信息发送到另一个应用程序。如果你有一个IoC容器,聪明地使用装饰器可以做到这一点
  2. 使用服务总线,MSMQ,WCF,Growl或类似的东西来广播有趣的信息。应用程序只需要知道如何挂钩。
  3. 公开HTTP端点或某人可以连接的内容并下载有关Windows服务的信息
  4. 或者只是创建一个单页的WinForms应用程序,它经常读取日志文件并显示有趣的结果。
  5. (请注意,最后一个是迄今为止最简单的提示提示,请执行此操作。)

答案 1 :(得分:0)

理想情况下,服务与用户界面完全分开,原因很多,我不会介入。

但是,您可以使用某种方式查看此类信息。我的建议是使用Remoting从服务中请求所需的数据,然后根据需要将任何报告或图表构建到单独的应用程序中。

答案 2 :(得分:0)

不允许服务进行UI API调用(除了一种特定形式的消息框)。所以看起来具有wser接口的服务实际上是两个进程。服务进程使用某种专有的反向通道与标准Windows APP进行通信。可以是命名管道,套接字或命名共享内存块。