在生产中自行托管wcf服务是一种好的做法吗

本文关键字:一种 生产中 服务 wcf | 更新日期: 2023-09-27 18:29:01

我正在创建一个WCF服务,我想在生产中自托管它,这可能吗?如果可能的话,这是一个好的做法吗?我确实在网上搜索了一下,发现了很多关于生产中的自托管服务的解释,但没有参考。请提出你的建议。

在生产中自行托管wcf服务是一种好的做法吗

每种类型的托管都适合特定的业务需求。以下是Juval LowyProgramming WCF services中的自托管服务示例:

需要进程时使用自托管(或机器)客户端和服务之间的边界,以及何时使用进程中的服务——也就是说,与客户端处于同一进程中。

简单的答案是:不,这不是一个好的做法。但这并不意味着,没有任何场景可以使用它,尤其是在一些不复杂的情况下。记住保持简单愚蠢(KISS)。不要在你的解决方案中引入复杂性。

下面是另一个示例,当您可能使用Nishith Pathak的Pro WCF 4 Practical Microsoft SOA Implementation Secondary EDITION中的SH时:

你也可能想要自我主持当您希望用户桌面上的应用程序相互通信时,或者在对等场景

我认为这些都是规则的例外。在其他情况下,不要使用SH,除非你有重要的理由可以辩护。

虽然可以进行自托管,但使用主机(如IIS)通常要容易得多,因为在实现过程中投入了大量的工作和思想,从而形成了一个强大且可扩展的托管解决方案。

"生产"并没有说太多——如果你没有窗口服务器和少量客户端,可用性也不是什么大问题,那么自托管可能是一个简单、可靠、足够好的解决方案。

这在技术上是可能的(主要取决于服务器的负载和所需的功能),但IMHO使用IIS要好得多,它更可靠、更可监控,并在许多方面进行了优化。

示例:如果自托管服务的进程崩溃,您是否手动重新启动它?你为此写了一个守护程序吗?IIS(当然)处理这个问题。

对于较小的需求,如果您不想使用IIS,仍然可以使用自托管,但是我认为使用SH而不是IIS没有任何真正的优势。