私は、数十を超える WCF サービスを単一の Windows サービスに移行する任務を負っています。Windows サービス テンプレートを使用して Windows サービスを作成し、次のコードを ServiceHostController に追加しました。
public partial class ServiceHostController : ServiceBase
{
private List<ServiceHost> serviceHosts;
public ServiceHostController()
{
InitializeComponent();
this.ServiceName = "WCFServices";
this.CanStop = true;
this.AutoLog = true;
}
protected override void OnStart(string[] args)
{
if (serviceHosts != null)
{
foreach (var service in serviceHosts)
{
service.Close();
}
}
InitializeServices();
foreach (var service in serviceHosts)
{
service.Open();
}
}
protected override void OnStop()
{
if (serviceHosts != null)
{
foreach (var service in serviceHosts)
{
service.Close();
}
serviceHosts.Close(); = null;
}
foreach (var service in serviceHosts)
{
service.Close();
}
}
private void InitializeServices()
{
serviceHosts = new List<ServiceHost>()
{
new ServiceHost(typeof(WCFService1)),
new ServiceHost(typeof(WCFService2)),
// add dozens of services here
};
}
}
ここで自分自身を繰り返さないルールに従わないことに加えて (実際のコードは異なります)、これは Windows サービス コードでこれらの WCF サービスをホストする方法ですか?