我们啥时候应该在 IIS 中托管 WCF 服务,啥时候应该在 Windows 服务中托管?
Posted
技术标签:
【中文标题】我们啥时候应该在 IIS 中托管 WCF 服务,啥时候应该在 Windows 服务中托管?【英文标题】:When should we host WCF service in IIS and when should we host in a windows service?我们什么时候应该在 IIS 中托管 WCF 服务,什么时候应该在 Windows 服务中托管? 【发布时间】:2011-11-25 08:49:43 【问题描述】:我需要托管我的 WCF 服务,但我无法决定是否应该在 IIS 或 Windows 服务中托管它?
请问一个比另一个有什么优点、缺点、好处?
谢谢
【问题讨论】:
【参考方案1】:版本 7 下的 IIS 对于任何严肃的托管都是不可能的......
关于 IIS7+/WAS 与 NT 服务中的自托管:
IIS7/WAS 设置将“按需加载”,例如当您的第一个请求进来时,将创建一个ServiceHost
,然后该服务主机创建服务类来处理请求。从内存的角度来看,这是有益的(如果没有请求进入,ServiceHost 不会使用内存),但是当 IIS 第一次需要启动服务主机时,这会增加第一次调用的额外开销
NT 服务允许您预先创建ServiceHost
并打开它,以便立即处理请求;更多的内存使用,但响应更快,至少在“第一次调用”时
自托管的另一个好处:您可以 100% 负责服务主机何时启动、暂停、停止等。使用 IIS/WAS,您有时会受到 IIS 的摆布,因为它有可能在最糟糕的时刻回收应用程序池......
【讨论】:
【参考方案2】:IIS 的主要优点是它为您处理服务的生命周期:激活、回收......
如果您没有 v7,它的主要缺点是没有 WAS 它只能托管基于 http 的 Web 服务
如果出现致命错误,服务需要更加小心...然后需要安装,而网站一旦创建就可以复制到其 web 文件夹中
如果您的 iis 版本 >= 7,那么我认为不使用 WAS 的兴趣不大,因为它支持所有 wcf 传输,但其他人可能有不同的看法...
【讨论】:
以上是关于我们啥时候应该在 IIS 中托管 WCF 服务,啥时候应该在 Windows 服务中托管?的主要内容,如果未能解决你的问题,请参考以下文章
在 Server 2008 上的 Windows 服务中托管 WCF 服务时应该使用啥帐户?
使用 .svc 文件和在“WCF 服务主机”中托管 WCF 服务有啥区别?
选择使用 IIS 进行 WCF 服务托管或使用 Windows 服务进行自托管