1

私は1つの特定の仕事をするWindowsサービスを持っています。これで、(仮に)2つ以上のインスタンスが存在する場合、各インスタンスの構成のみが異なりますが、基本的には同じジョブを実行します。それらは、構成ごとに異なるデータベース、テーブルのみを参照します。

しかし、そのようなサービスのインスタンスをどのように増減できるかについてのアプローチを探していますか?これを管理するための小さなアーキテクチャを探しています...

PS:WindowsAzureでこれを行うのは非常に簡単です。違いは、VMインスタンスの数を増減することと、各VMインスタンスが実行する必要があることをデータベースで構成できることです。

4

1 に答える 1

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
于 2012-09-03T05:58:36.193 に答える