题
我正在开发一个使用 Windows 2008、.NET 3.5 和 WCF 来提供一些内部服务的项目,并且出现了如何托管这些服务的问题。
由于我们使用的是 Windows 2008,我认为利用 Windows Process Activation Service (WAS) 会很好,尽管该项目的感觉似乎是使用 Windows 服务会更好。
那么与 Windows 服务相比,使用 WAS 托管 WCF 服务有什么不足呢?使用 Windows 服务有什么真正的优势吗?还是 WAS 才是正确的选择?
解决方案
最近我不得不回答非常类似的问题,这就是我决定使用 IIS 7.0 和 WAS 而不是 Windows 服务基础设施的原因。
- IIS 7.0 是更强大的主机,它具有许多使调试变得容易的功能。失败的请求跟踪、工作进程回收、进程孤立等等。
- IIS 7.0 为您提供了更多选项来指定工作进程在某些情况下应发生的情况。
- 如果您将服务托管在 IIS 下,则在第一个请求之前不会为其分配工作进程。从我的角度来看,这是一种理想的行为,但在您的情况下可能有所不同。Windows 服务使您能够以更确定的方式启动服务。
- 根据我的经验,WAS 本身并没有提供更高的可靠性。它的最大优点是它向使用不同于 HTTP 的协议的应用程序展示了 IIS 的丰富功能。我所说的不同是指:TCP、命名管道和 MSMQ。
- 据我所知,使用 WAS 的唯一缺点是您的服务暴露的地址需要符合某种模式。描述了 MSMQ 的情况 这里
不隶属于 StackOverflow