【发布时间】:2012-07-05 16:00:17
【问题描述】:
我比较熟悉 C# 和 WCF。我已经登陆了一个项目,我正在创建作为 Windows 服务运行的自托管 WCF 服务,但我开始怀疑我是否应该改用 IIS(我们目前不使用它),因为管理所有这些服务最终可能会变得很麻烦。
尽管我尽了最大的努力,但我还没有找到任何确切的信息来说明为什么我会偏爱一种方法而不是另一种方法。这些服务主要用于实用程序,如调整图像大小、检索文件等,并由 C# 和 Java 客户端调用。
谢谢
【问题讨论】:
我比较熟悉 C# 和 WCF。我已经登陆了一个项目,我正在创建作为 Windows 服务运行的自托管 WCF 服务,但我开始怀疑我是否应该改用 IIS(我们目前不使用它),因为管理所有这些服务最终可能会变得很麻烦。
尽管我尽了最大的努力,但我还没有找到任何确切的信息来说明为什么我会偏爱一种方法而不是另一种方法。这些服务主要用于实用程序,如调整图像大小、检索文件等,并由 C# 和 Java 客户端调用。
谢谢
【问题讨论】:
最短的答案是“视情况而定”。根据您的要求。您可以毫无问题地自托管,但 IIS 将更有效地管理资源,并使您能够比自托管更轻松地微调内容。
例如,在 IIS 中部署新版本或删除旧版本会更简单。
【讨论】:
ServiceHost ->需要一些时间,这在自托管时不会产生(因为您自己正在创建和打开 ServiceHost 并保持其正常运行)
ServiceHost 之后的第一个请求 - 这可能会每小时发生几次,具体取决于您的服务的流量。
无论哪种方式都可以。
通常,使用内置的 IIS 托管功能可以使您的部署和配置更简单。您还拥有 http.sys 的激活模型 - 这意味着当适当的消息到达时 IIS 将为您启动必要的过程。
任何平台的客户端都可以连接到 WCF 服务,无论它们是自托管的还是 IIS 托管的。
ps:how to allow IIS-hosted WCF services to store their configuration data in distinct xxx.config files
【讨论】: