【发布时间】:2014-11-03 17:39:07
【问题描述】:
我正在创建 WCF 服务,我想在生产环境中自行托管它,这可能吗?如果可能的话,这是一个好的做法,我确实在网上搜索过,我发现了很多解释,但没有关于生产中的自托管服务的参考。请提出您的建议。
【问题讨论】:
标签: c# web-services wcf
我正在创建 WCF 服务,我想在生产环境中自行托管它,这可能吗?如果可能的话,这是一个好的做法,我确实在网上搜索过,我发现了很多解释,但没有关于生产中的自托管服务的参考。请提出您的建议。
【问题讨论】:
标签: c# web-services wcf
每种类型的托管都适合特定的业务需求。 以下是关于何时使用由 Juval Lowy 编写的 Programming WCF Services 中的自托管服务的示例:
需要进程时使用自托管 客户端和服务之间的(或机器)边界,以及当您使用 进程内服务——即与客户端在同一进程中。
简单的回答是:不,这不是一个好习惯。 但这并不意味着没有任何场景可以使用它,尤其是在一些不复杂的情况下。记住保持简单愚蠢(KISS)。不要在您的解决方案中引入复杂性。
这是另一个示例,您可以使用 Nishith Pathak 的 Pro WCF 4 Practical Microsoft SOA Implementation 第二版中的 SH:
您可能还想自托管 当您希望用户桌面上的应用程序相互通信时,您的服务 点对点场景
我认为这些是规则的例外。在其他情况下,请勿使用 SH,除非您有可以辩护的重要理由。
【讨论】:
虽然可以进行自托管,但使用主机(例如 IIS)通常要容易得多,因为在其实施中投入了大量工作和思想,从而产生了强大且可扩展的托管解决方案。
“生产”并没有多说——如果您没有窗口服务器和少量客户端,并且可用性不是大问题,那么自托管可能是一个简单、肥大、足够好的解决方案。
【讨论】:
这在技术上是可行的(主要取决于服务器的负载和所需的功能),但恕我直言,最好使用 IIS,它在许多方面更可靠、可监控和优化。
示例:如果您的自托管服务进程崩溃,您需要手动重新启动它吗?你为此写了一个守护进程? IIS 处理(当然)这个。
对于小的需求,如果您不想使用 IIS,仍然可以使用自托管,但 我认为使用 SH 而不是 IIS 没有任何真正的优势。
【讨论】: