我有一个执行一项特定工作的 Windows 服务。现在,如果有两个或更多实例(假设地说),每个实例只会在配置上有所不同,但它们基本上会做相同的工作。他们只会根据配置引用不同的数据库、表。
但我正在寻找一种方法来增加/减少此类服务的实例?正在寻找一个小型架构来管理这个......
PS:在windows azure中做这个很简单;不同之处在于您将增加/减少 VM 实例的数量,并且您可以在数据库中配置每个 VM 实例应该做什么。
我有一个执行一项特定工作的 Windows 服务。现在,如果有两个或更多实例(假设地说),每个实例只会在配置上有所不同,但它们基本上会做相同的工作。他们只会根据配置引用不同的数据库、表。
但我正在寻找一种方法来增加/减少此类服务的实例?正在寻找一个小型架构来管理这个......
PS:在windows azure中做这个很简单;不同之处在于您将增加/减少 VM 实例的数量,并且您可以在数据库中配置每个 VM 实例应该做什么。
我认为您面临的问题是多个服务实例不能共享相同的名称。我解决这个问题的方法是以不同的名称安装实例。您可以让您的服务安装程序类吸收一个参数:
[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