我正在编写一个托管一堆WCF服务的Windows服务 . 我正在使用NINJECT与AOP一起使用拦截器工作正常 . 我只是想知道我的实现是否会在更高的负载下保持 . 这是事情:
在我的program.Main()方法中:
ServiceBase[] servicesToRun = { kernel.Get<WcfServiceHostService>() };
ServiceBase.Run(servicesToRun);
还有WcfServiceHostService构造函数,它接受注入的接口:
public WcfServiceHostService(IVakService vakService, IRoosterService roosterService) : this()
{
var serviceList = new List<ServiceHost> { new ServiceHost(vakService), new ServiceHost(roosterService) };
this.Services = serviceList;
}
问题是 - ServiceHost构造函数方法可以用作通用的新ServiceHost或类似新的ServiceHost(SingletonInstance)(http://msdn.microsoft.com/en-us/library/system.servicemodel.servicehost.aspx) - 我的问题:通过提供实例而不是类型,从而迫使接口实现成为单例 - aren我对性能有负面影响吗?
附: IIS不是更好的选择来托管WCF服务吗?
1 回答
我在 生产环境 环境中的Windows服务中托管了100个WCF服务而没有任何问题 . 与IIS相比,部署要容易得多 . 当然,IIS提供了诸如按需加载和流程回收等功能,如here所述 .
至于Singleton与否,我认为this page有一个很好的答案,一如既往取决于你想要达到的目标: