【问题标题】:hot-deployments with Self Host Web Api Services使用自托管 Web Api 服务进行热部署
【发布时间】:2013-07-20 00:19:54
【问题描述】:

上下文:我的公司一直在开发一个由 IIS 托管的 WebAPI 应用程序,单个静态内容文件的请求延迟约为 60 毫秒。我们调查了使用 WebAPI Self 主机对同一应用程序进行基准测试,同一内容文件的延迟约为 15 毫秒,这真的让我们大吃一惊。

从部署过程来看,我们喜欢 IIS,因为它通过将 DLL 直接复制到我们的 Web 服务器来为我们进行热部署提供了极大的灵活性,这不需要我们进行任何形式的排空。

问题:使用自托管应用程序进行类似的热部署(只是复制 dll)是否可行?

【问题讨论】:

    标签: c# iis-7 asp.net-web-api


    【解决方案1】:

    不,当 self-host 正在执行时,DLL 将被锁定,因此您必须先停止 self-host。您可以执行其他技巧,例如部署到另一个文件夹,然后重新路由请求等,但这与 IIS 部署不同。

    【讨论】:

      【解决方案2】:

      自主机允许您做一些简洁的事情,例如在同一地址上运行辅助服务,当主服务关闭时会响应。例如它可以返回带有 retry-after 标头的 503。停止和启动服务以启用文件复制只需几秒钟。

      另一方面,如果 IIS 提供静态内容的时间比自托管时间长,那么您就做错了。 IIS 可以使用 http.sys 的内核模式函数来传递静态内容。其中一个基于 Owin 的主机已为自主机启用此功能,但默认自主机不允许这样做。根据我的经验,对于小文件,IIS 绝对应该快于 60 毫秒。

      【讨论】:

        猜你喜欢
        • 2012-02-14
        • 1970-01-01
        • 2018-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-26
        • 1970-01-01
        • 2016-01-21
        相关资源
        最近更新 更多