【发布时间】:2013-01-09 18:49:46
【问题描述】:
我正在进行关于 IIS 托管的内部辩论。对于给定的企业应用程序,我们有 N 个 WCF 服务。
一种选择是将每个 WCF 服务托管在其自己的 IIS 应用程序中。这意味着每个服务都有自己的 web.config 和 [可能] 自己的应用程序池。
另一种选择是在一个 IIS 应用程序中使用所有 WCF 服务。这意味着所有这些服务的一个 web.config 和一个应用程序池。
单个选项可以灵活地为每个服务进行不同的配置(IIS 和 web.config)。单独的应用程序池可以更精细地控制重置进程。
共享选项更简单并且可行,因为每个服务的 IIS 和应用程序配置 (web.config) 应该相同。
我正在寻找这两个选项之间的建议\最佳实践。
【问题讨论】:
-
为多个 WCF 服务共享同一个 web.config 文件的优点是您将能够定义 WCF 服务使用的 serviceBehaviors、endpointBehaviors、自定义绑定等在一个地方,而不是在多个文件中复制和粘贴它们。这并不意味着您应该使用一个 IIS 应用程序来托管数十个 WCF 服务。也许一个好的解决方案是按功能对服务进行分组并创建几个定义明确的 IIS 应用程序。
-
谢谢托马斯。更清楚地说,在这个场景中,我说的是针对单个企业应用程序的 5 个服务。
-
这是一个权衡停机时间和易于配置的决定。这不是“最佳实践”类型的问题。这两个方向都有其优点,都不是坏习惯。
-
话虽如此,作为一般规则,我将所有与相同业务需求相关的服务分组到相同的应用程序和池中。订单服务一起,跟踪服务一起,产品服务一起等等。这样,只有相关的服务会被一起部署或其他问题。
-
@SeanM 我自己一直在内部辩论这个问题。我选择了我认为最好的选择。似乎应该首选每个服务 1 个应用程序池,因为如果 1 个服务锁定了一个应用程序池或其他什么,其他服务不会受到影响。不过,我不确定这种说法的真实性。