自托管WCF服务是否受到任何限制?

时间:2014-01-21 14:45:58

标签: c# wcf

在Windows服务中自托管WCF服务是否有任何限制(性能,内存,线程等)...而不是使用IIS?有很多文章显示如何做到这一点,但很少讨论如果你应该这样做。我构建的一个相当复杂的应用程序要求我自我托管WCF服务以进行点对点通信。在服务器上使用相同的自托管模式对于全局用户必须达到的“主”服务是非常诱人的。

2 个答案:

答案 0 :(得分:4)

要考虑的要点是:

  • Port Sharing:IIS为您提供免费的端口共享。要在自托管环境中使用端口共享,您需要自己处理
  • 有限可用性:只有在应用程序运行时才能访问该服务。
  • 有限功能:自托管应用程序对高可用性,易管理性,健壮性,可恢复性,版本控制和部署方案的支持有限。至少,开箱即用的WCF不提供这些,因此在自托管方案中,您必须自己实现这些功能;例如,IIS默认提供了其中一些功能。

请查看the MSDN docs,了解您需要考虑的折衷方案。

答案 1 :(得分:0)

我帮助构建了两个利用WCF自托管的系统,它运行良好(我们使用NetTCP作为底层通信协议)。这主要是一个概念证明,看看我是否可以做到并且最终工作得很好,尽管有一些性能需要考虑。首先,根据服务的数量,你的内存占用量可能会有点大 - 我设计的那个服务有大约40个单独的服务,但是接管的支持团队不断添加新服务,最后我听到了92个。这开始引入一些缓慢的启动时间,除非你打开初始化过程,因为在它自己的AppDomain(你肯定想要做的事情)下打开每一个都有一些额外的开销。我无法谈论性能是否比IIS托管更好/更糟,但总的来说,它确实运行良好 - 只是准备好了解背景线程和AppDomains作为流程的一部分。