当“费用”这个话题出现时,我和同事正在讨论WFC服务。
问题是:
鉴于IIS托管的WCF服务和Windows服务托管的WCF服务完全相同,如果它们都接受相同的负载,哪个服务在内存和CPU周期方面会更“昂贵”?
我们并不关心初始启动编码,安装或配置(IIS似乎旨在提供更简单的体验),而只是运行服务的简单成本。
答案 0 :(得分:3)
我无法提供具体的数字,但如果这是一个大问题,你肯定应该进行性能测试。对于典型的基于HTTP的WCF服务,所有请求最初将由Windows内的http.sys处理,然后分派到适当的进程。无论您的服务是在IIS中还是在独立服务中托管都与您使用的WCF特定配置设置无关,就每次调用,每会话或单一配置以及请求大小限制和请求限制而言。 / p>
我会专注于可用性,而不是严格意义上的性能数据,因为它们应该几乎相同。
底线:在必要时使用更方便的性能测试。
答案 1 :(得分:2)
基于IIS或Windows服务的WCF托管之间的一个非常重要的性能考虑因素是绑定类型。 IIS仅支持通过HTTP运行的WCF绑定,例如wsHttpBinding
。 basicHttpBinding
等等。
通常已知非Http绑定具有更好的性能,例如netTcpBinding(要求服务和客户端都是基于WCF的我认为)或netNamedPipeBinding(最快,但服务/客户端)必须在同一台机器上)。这些当然有其自身的局限性,尤其是灵活性。
以下是一个很好的概述:http://weblogs.asp.net/spano/archive/2007/10/02/choosing-the-right-wcf-binding.aspx
这里有一个非常类似的讨论:WCF Binding Performance
答案 2 :(得分:2)
我知道这完全没有回答你的问题,但我想分享一下我的经验。
我有一个Windows控制台应用程序,在计划时调用IIS中托管的WCF服务。在这种架构中,IIS实际上是完全没必要的,只是整个解决方案的一个附加组件。出于营销原因,它确实包含在解决方案中,以加强产品,而不是出于技术原因。
这些是我面临的主要问题,以及为什么我会出于技术原因避免使用IIS,这适用于我的经验。请注意:我不是说在IIS中托管WCF服务是个坏主意。我只是从我目前正在处理的产品中提出我的想法。
根据我的经验减少系统=减少可能出错。但您需要决定是否具备实施可靠的自托管服务的技能。这反过来又与开发,部署和维护的成本直接相关。