【问题标题】:.NET Windows Service - multiple services in one project.NET Windows 服务 - 一个项目中的多个服务
【发布时间】:2009-09-10 19:23:49
【问题描述】:

目前,我有一个带有 Windows 服务的项目。我还创建了另一个安装 Windows 服务的“安装项目”。

我的问题是:我可以在同一个项目中添加另一个 Windows 服务吗? (这样,我可以使用 1 个安装程序,并更轻松地在服务之间共享一些代码。)如果可以,这是否意味着当一个服务遇到错误时两个服务都将停止,或者它们是否相互独立地出错?

每个项目编写 1 个服务或在一个项目中编写多个服务之间还有其他区别吗?

【问题讨论】:

    标签: c# .net windows service


    【解决方案1】:

    是的,您可以在同一个项目中拥有多个服务。尽管它们都使用相同的 exe,但它们被加载到不同的内存空间并彼此独立运行。

    【讨论】:

    • 那么:相同的安装,但也有单独的错误处理?将它们分成不同的项目的唯一好处是您可以安装一个而不安装另一个吗?
    • 如果您有不同的进程需要运行并且不会相互影响。您可以在打开另一个服务的同时关闭服务。我们的服务共享一些相同的代码,但具有不同的功能并以不同的时间间隔运行。通过分离它们,我们不必担心处理单独的线程。它不一定适用于所有场景,但有可能。
    【解决方案2】:

    我知道这已经回答了,但是如果您想要一个如何在同一个项目中运行两个服务的示例(代码),请查看我对类似问题的回答:

    Can I have multiple services hosted in a single windows executable

    谢谢!

    【讨论】:

      【解决方案3】:

      我是名为 Daemoniq 的开源 Windows 服务托管框架的开发人员。在一个进程中运行多个服务是其功能之一。可以从http://daemoniq.org下载

      目前的功能包括:

      • 通过 CommonServiceLocator 与容器无关的服务位置
      • 通过 app.config 设置常用服务属性,如 serviceName、displayName、description 和 serviceStartMode
      • 在同一进程上运行多个 Windows 服务
      • 通过 app.config 设置恢复选项
      • 通过 app.config 设置依赖的服务
      • 通过命令行设置服务进程凭据
      • 通过命令行安装、卸载、调试服务

      谢谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-23
        • 1970-01-01
        • 2011-08-17
        • 2014-12-21
        • 1970-01-01
        • 2012-09-02
        相关资源
        最近更新 更多