选择使用 IIS 进行 WCF 服务托管或使用 Windows 服务进行自托管

Posted

技术标签:

【中文标题】选择使用 IIS 进行 WCF 服务托管或使用 Windows 服务进行自托管【英文标题】:Choice for WCF Service Hosting with IIS or Self Hosting with Windows Service 【发布时间】:2012-03-21 08:22:12 【问题描述】:

由于我们想使用 Asp.Net MVC 3 开发新产品。这里的关键是我们通过 WCF Web 服务与数据库通信的所有内容。

我们正处于需要决定是在 IIS 中托管 WCF Web 服务还是使用 Windows 服务自托管的阶段。

我提出这个问题只是因为我想知道,在满足以下条件的情况下,托管 WCF 服务的更好选择是什么。

我们预计每秒有 120 个并发请求。 (可能是每天 12,000 次请求/访问) 安全方面(特别是 WCF 服务安全) 可维护性 同时处理用户的并发请求(与 IIS 相比,Windows Service 可以处理多个并发请求吗?)

请让我知道我是使用 IIS 托管还是使用 Windows 服务自行托管。

提前致谢。

(任何人都可以就此提出建议,因为这是决定进一步处理的非常关键的部分。)

【问题讨论】:

如果您能够编写比 IIS/App Fabric 更好的主机,并且可以在合理的预算和时间范围内完成,您可以编写自己的 Windows 服务。在大多数其他情况下,没有充分的理由模仿 IIS。 ***.com/q/1560619/47672的可能重复 (与 IIS 相比,Windows 服务可以处理多个并发请求吗?) - 当然可以! 这就是 WCF 运行时为您所做的 - 无论是您是自托管的,或者 IIS 是否托管您的 WCF 服务 - 在并发方面并不重要 IIS/AppFabric 非常适合我们。我会在 Windows 服务上再次使用它。 在列出的条件之外,我只会使用 IIS,因为我想像安装会更容易。无论主机是 IIS 还是 WinService,您的所有条件都是 WCF 的蛋糕 【参考方案1】:

您可能会感兴趣,这是来自“Programming WCF Services”的“一般决策树”,Juval Lowy。

为 Internet 服务选择主机: 对于 Internet 应用程序(即通过 Internet 接收来自客户端的呼叫的应用程序)

为 Intranet 服务选择主机: 对于 Intranet 应用程序(即,接收来自内部客户端的调用的应用程序) 同一个内网),

【讨论】:

以上是关于选择使用 IIS 进行 WCF 服务托管或使用 Windows 服务进行自托管的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Azure Web 应用程序与 IIS 中本地托管的 WCF 服务进行通信?

如果我要在 IIS 中托管 WCF 服务,使用 WCF 服务而不是 WCF 库有啥好处?

由 IIS 7 和全局变量(单例)托管的 WCF 服务

服务器拒绝了会话建立请求:WCF 托管在 IIS 上

从 Windows 应用程序访问托管在 IIS 上的 WCF 服务时出现问题

在 IIS 中托管 WCF 服务时如何避免 CommunicationObjectFaultedException?