2009-09-01 58 views
1

我正在开发一个C#自定义Windows服务,它将管理多个实例.NET应用程序的状态。我如何通过ServiceController将数据(如令牌)传递给服务?将数据传递到自定义Windows服务

这是可能的还是我不完全理解Windows服务背后的设计意图?

回答

6

JonnyD,

只是为了确保我们在同一页上:如果您要创建自己的服务,你会从ServiceBase类的System.SystemProcess派生命名空间。可以使用ServiceController与Windows服务(例如您正在创建的服务)进行交互,但类的意图是它主要用于服务控制,方式与Windows服务控制管理器(SCM)启动,停止,暂停等Windows服务。你也许可以开展某种形式的“业务往来”与通过的ServiceControllerExecuteCommand方法为您服务的,但是这不是真正的主要目的。

大多数旨在与其他应用程序进行交互的Windows服务通常会建立侦听程序和其他众所周知的端点,供调用程序用于交互目的。这些监听器可以通过远程处理,Web服务,WCF等进行处理,并且可以在服务启动时创建(例如,OnStart方法启动)并在服务顶部(OnStop)上被拆除。

我不知道您试图满足您的服务的具体要求,但您表示您正在寻找创建状态管理服务。这些是相对常见的服务,并且通常将它们创建为单例,以确保所有调用者访问所需状态管理类/类型的一个实例。以下链接可能会为您提供一些关于如何使用远程实现此类服务的想法和指导。如果你比较熟悉的WCF,你也可以用它来代替NET远程的:

http://www.codeproject.com/KB/IP/Chat_Application.aspx

代替的ChatServer(如上例所示),你就会有一个状态管理服务器/类型。

我希望这有助于!

+0

感谢您的信息肖恩。 – JonnyD 2009-09-01 18:03:38

相关问题