2012-09-03 70 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