将WCF服务从IIS移动到Windows服务

时间:2008-09-26 04:54:29

标签: wcf iis windows-services

我们有一个现有的WCF服务,它使用wsDualHttpBinding来启用对客户端的回调。我正在考虑将其移至netTcpBinding以获得更好的性能,但我非常谨慎地从IIS托管的服务(我们目前喜欢的“舒适区”)转变为拥有我们自己的Windows服务来托管它。我希望我们仍然可以在IIS 7上托管这个,但Win2K8在一段时间内不会成为现实。

在创建我们自己的Windows服务来托管我们的WCF服务时,我应该注意哪些事项?生命周期管理和请求限制等功能是IIS托管免费提供的功能所以我也想知道如何有效地托管我们的服务,而不会让IIS为我们付出艰苦的努力。谢谢! :)

2 个答案:

答案 0 :(得分:11)

因为你无法使用WAS主持,所以有几件事要实现。

  • 如果服务崩溃,默认情况下不会重新启动(尽管您可以在服务属性中更改此设置)
  • 如果应用程序池挂起或变得太大,IIS将回收该应用程序池;如果你想要相同的可靠性,你必须自己这样做。
  • 您必须为要在其下运行的服务创建帐户,或使用其中一个默认服务。停止以SYSTEM或管理员帐户运行服务的诱惑;如果您想使用内置帐户,请使用NETWORK SERVICE。
  • 现场调试变得更加困难。
  • 考虑使用错误记录器,例如log4net

说过我9个月前为客户部署了一个WCF / Windows服务组合;它被大量使用,并没有死过一次。

您可以在Windows服务中request throttle,它是WCF配置的一部分。请注意,默认值非常低,您可能需要增加这些默认值。

答案 1 :(得分:2)

在Windows服务应用程序(http://msdn.microsoft.com/en-us/library/ms734781.aspx)中托管是一个良好的开端。

如果您可以在Vista上托管您的服务,您还可以从Windows进程激活服务(WAS)中受益。 WAS是IIS进程激活的一般化,可用于通过非HTTP端点(TCP,命名管道,MSMQ)激活进程。要了解有关WAS中托管的WCF的更多信息,请阅读http://msdn.microsoft.com/en-us/library/ms733109.aspx。要了解如何安装和配置WAS,请阅读http://msdn.microsoft.com/en-us/library/ms731053.aspx