我的任務是將幾十個WCF服務轉移到單個Windows服務。我已經使用Windows服務模板創建一個Windows服務,並添加以下代碼ServiceHostController:在單個Windows服務中託管幾十個WCF服務的正確方法是什麼?
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服務?
我寧願每個主機WCF服務的一個窗口服務,而不是2合1,原因找茬,並延伸服務是通過這種方式更容易。 –
爲什麼選擇Windows服務而不是IIS或WAS? –
@Terry - 從Rambo引用Murdock第一部血液第二部分「我沒有下訂單,我就像你一樣......」據我所知,這是由於部署使用Win XP的機器。 – 5StringRyan