服务与用户交互的最佳方式

时间:2011-02-10 21:41:39

标签: .net vb.net service

我的应用程序需要是一个服务(无论用户是否登录都需要运行),但我还需要某种客户端控制/监督它正在做什么。这样做的最佳方式是什么?

  1. 编写一个单独的应用程序与服务应用程序进行通信 - 我认为这是稳定性方面的最佳解决方案,因为应用程序将在某种程度上解耦

  2. 在服务应用程序中使用系统事件的回调来直接从服务应用程序加载UI表单 - 我认为这更容易部署。

  3. 你认为我应该走哪条路?

2 个答案:

答案 0 :(得分:2)

我过去曾使用过第一个选项,因为在尝试从服务加载UI表单时会遇到问题(如选项2所示)。您需要启动另一个应用程序才能向用户显示表单,因此根据用户的会话而不是从服务启动应用程序更有意义。

答案 1 :(得分:1)

前者通常更理想。 Serivces确实意味着在没有设计的用户交互的情况下运行,并且试图用它们做UI事情可能是一个巨大的痛苦。

Windows窗体应用程序和服务可以通过多种方式进行通信:命名管道,套接字,dde等。过去我使用命名管道来控制/与服务交互,而且很容易上手特别是如果你只是需要服务来每隔一段时间吐出一些随机数据。所有客户都必须做的就是倾听。

至于部署,Windows窗体应用程序可能没有很多(如果有的话)服务本身没有的依赖项,因此部署只包含安装程序包中的另一个.exe。