Как увеличить / уменьшить количество экземпляров службы Windows?

У меня есть служба Windows, которая делает одну конкретную работу. Теперь, если бы было два или более экземпляров (говоря гипотетически), каждый экземпляр отличался бы только конфигурацией, но в основном выполнял бы одну и ту же работу. Они будут ссылаться только на разные базы данных, таблицы в соответствии с конфигурацией.

Но я ищу подход к тому, как я могу увеличить / уменьшить количество таких услуг? Ищете небольшую архитектуру для управления этим...

PS: это очень просто сделать в Windows Azure; разница в том, что вы увеличиваете / уменьшаете количество экземпляров виртуальных машин, и вы можете настроить в базе данных, что должен делать каждый экземпляр виртуальной машины.

1 ответ

Решение

Я думаю, что проблема, с которой вы сталкиваетесь, заключается в том, что несколько экземпляров служб не могут иметь одно и то же имя. Я работаю над этим, устанавливая экземпляры под разными именами. Вы можете сделать так, чтобы ваш класс установщика сервиса принял параметр:

[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
Другие вопросы по тегам