首页 文章

Windows服务作为WCF服务的主机 - 依赖注入策略

提问于
浏览
0

我正在编写一个托管一堆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 回答

  • 0

    我在 生产环境 环境中的Windows服务中托管了100个WCF服务而没有任何问题 . 与IIS相比,部署要容易得多 . 当然,IIS提供了诸如按需加载和流程回收等功能,如here所述 .

    至于Singleton与否,我认为this page有一个很好的答案,一如既往取决于你想要达到的目标:

    “单例服务是可伸缩性的死敌 . 问题在于,当多个客户端连接到单例时,它们可能同时进行[...] . 单例必须同步访问其状态以避免状态损坏 . [ ......]这可能降低吞吐量,响应能力和可用性“

相关问题