2012-09-03 39 views
1

我有一个windows服务来完成一项特定的工作。现在如果有两个或更多的实例(假设地说)每个实例只会在配置上有所不同,但他们基本上会做同样的工作。他们只是指根据配置不同的数据库,表格。如何增加/减少Windows服务的实例数量?

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

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

回答

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