如何增加/减少Windows服务的实例数?

时间:2012-09-03 05:44:38

标签: windows-services

我有一个Windows服务,可以完成一项特定的工作。现在,如果有两个或更多实例(假设说),每个实例仅在配置上有所不同,但它们基本上会做同样的工作。他们只是根据配置引用不同的数据库,表。

但我正在寻找一种方法来增加/减少此类服务的实例?寻找一个小型架构来管理这个...

PS:在windows azure中执行此操作非常简单;不同之处在于您增加/减少了VM实例的数量,您可以在数据库中配置每个VM实例应该执行的操作。

1 个答案:

答案 0 :(得分:2)

我认为您面临的问题是多个服务实例无法共享同一个名称。我解决这个问题的方法是以不同的名称安装实例。您可以让服务安装程序类吸收参数:

[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
    public ProjectInstaller()
    {
        InitializeComponent();
    }
    public override void Install(IDictionary stateSaver)
    {
        ResolveServiceName();
        base.Install(stateSaver);
    }

    private void ResolveServiceName()
    {
        serviceInstaller1.ServiceName = Context.Parameters["ServiceName"];
        serviceInstaller1.DisplayName = Context.Parameters["ServiceName"];
    }
    public override void Uninstall(IDictionary savedState)
    {
        ResolveServiceName();
        base.Uninstall(savedState);
    }
}

当您安装该服务时,您提供ServiceName参数:

installutil.exe /ServiceName=foo YourService.exe