我有一个Windows服务,可以完成一项特定的工作。现在,如果有两个或更多实例(假设说),每个实例仅在配置上有所不同,但它们基本上会做同样的工作。他们只是根据配置引用不同的数据库,表。
但我正在寻找一种方法来增加/减少此类服务的实例?寻找一个小型架构来管理这个...
PS:在windows azure中执行此操作非常简单;不同之处在于您增加/减少了VM实例的数量,您可以在数据库中配置每个VM实例应该执行的操作。
答案 0 :(得分: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