【问题标题】:WCF - Self hosted or IIS Preference?WCF - 自托管或 IIS 首选项?
【发布时间】:2012-07-05 16:00:17
【问题描述】:

我比较熟悉 C# 和 WCF。我已经登陆了一个项目,我正在创建作为 Windows 服务运行的自托管 WCF 服务,但我开始怀疑我是否应该改用 IIS(我们目前不使用它),因为管理所有这些服务最终可能会变得很麻烦。

尽管我尽了最大的努力,但我还没有找到任何确切的信息来说明为什么我会偏爱一种方法而不是另一种方法。这些服务主要用于实用程序,如调整图像大小、检索文件等,并由 C# 和 Java 客户端调用。

谢谢

【问题讨论】:

    标签: c# wcf iis


    【解决方案1】:

    最短的答案是“视情况而定”。根据您的要求。您可以毫无问题地自托管,但 IIS 将更有效地管理资源,并使您能够比自托管更轻松地微调内容。

    例如,在 IIS 中部署新版本或删除旧版本会更简单。

    【讨论】:

    • ...而且考虑回收、关闭 w3wp 会更容易 - 是的,不是吗:)
    • 另一方面:(1) 您可能必须处理 IIS 中断和应用程序池回收,以及 (2) IIS 将在第一个请求进入时启动 ServiceHost ->需要一些时间,这在自托管时不会产生(因为您自己正在创建和打开 ServiceHost 并保持其正常运行)
    • @marc_s,是的,我在回答时没有想到这一点。但是性能。仅在第一个请求期间命中。
    • @BrunoBrant:每次 IIS 决定丢弃您的 ServiceHost 之后的第一个请求 - 这可能会每小时发生几次,具体取决于您的服务的流量。
    • @marc_s,确实如此。无论如何,这就是权衡:自托管使您能够将所有服务保存在内存中。 可能意味着用你不使用的东西浪费内存。无论如何,我编写了一个小程序来检查使用自托管的每个服务的内存消耗。它在我的机器上非常小,每项服务大约需要 102.000 字节。我从来没有执行过他们。当然,您的里程可能会有所不同。
    【解决方案2】:

    无论哪种方式都可以。

    通常,使用内置的 IIS 托管功能可以使您的部署和配置更简单。您还拥有 http.sys 的激活模型 - 这意味着当适当的消息到达时 IIS 将为您启动必要的过程。

    任何平台的客户端都可以连接到 WCF 服务,无论它们是自托管的还是 IIS 托管的。

    ps:how to allow IIS-hosted WCF services to store their configuration data in distinct xxx.config files

    【讨论】:

    • 并且你被绑定到作为你的主机的 IIS - 所有的问题与回收、关机等等,只要你不使用你的 wcf 服务作为读取一个巨大的数据存储启动时的数据集,那很好......
    猜你喜欢
    • 2011-07-01
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    相关资源
    最近更新 更多