Как увеличить / уменьшить количество экземпляров службы 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