3

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

在创建我们自己的 Windows 服务来托管我们的 WCF 服务时,我应该注意什么?诸如生命周期管理和请求限制之类的功能是 IIS 托管免费提供的,所以我还想知道我们如何能够有效地自行托管我们的服务,而无需 IIS 为我们完成繁重的工作。谢谢!:)

4

2 回答 2

11

因此,由于您无法使用 WAS 进行托管,因此需要实现几件事。

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

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

您可以在 Windows 服务中请求限制,它是 WCF 配置的一部分。请注意,默认值非常低,您可能必须增加这些值。

于 2008-09-26T05:28:09.483 回答
2

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

如果您可以在 Vista 上托管您的服务,您还可以从 Windows Process Activation Service (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

于 2008-09-26T05:05:23.547 回答