我们开发了一个 WCF 服务,并希望部署它。
我们的客户将使用它basicHttpBinding
但我们的内部团队将使用它namedPipesBinding
.
我们想知道将其托管在 IIS 7 中或使用 Windows 服务是否更好。
我们运行了一些测试,发现当我们在 IIS 中添加绑定时,它不会更新我们服务的配置文件。这意味着我们需要在两个不同的地方维护配置。这不符合逻辑,对吧?
我们还在 StackOverflow 上了解到,当 WCF 服务托管在 IIS 中时,基址将被忽略(请参阅关于 的 WCF 服务配置文件问题)
在 IIS 中托管有很多优点,也有很多缺点。
是的,IIS 为您提供按需加载——这可能是优点,也可能是缺点。当请求到来时,将构造 ServiceHost,然后实例化所托管的服务类,并处理请求。没有什么需要全天候运行。但与此同时,每次收到消息时,这种设置都需要更多的时间和精力,而且作为程序员,您实际上对服务主机没有太多控制权。
是的,对于 IIS,*.svc 文件所在的虚拟目录定义了您的地址 - 配置中的任何基地址或显式定义的地址都将被忽略。无需付出太多努力,您就无法更改服务地址的布局 - 它们始终会是http://服务器名称/虚拟目录/YourService.svc(包括 .svc 扩展名)。
自托管通常会快很多倍,因为您的 ServiceHost 已经启动并正在运行 - 但由您来确保它确实已启动并正在运行,每当消息传入时都不会“按需”加载 - 要么已启动并正在运行可以服务该请求,也可以不服务。但是您对服务主机有更多的控制权 - 何时以及如何构建等,并且您可以根据需要选择和定义服务地址。
我个人几乎总是选择使用自托管 - 在控制台应用程序中进行测试,在 NT 服务中进行生产。对我来说,这似乎是更合适的方式,也是更可控的方式。你必须做更多的工作——但你确切地知道你在做什么。
Marc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)