3

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

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

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

4

2 回答 2

1

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

于 2013-07-20T00:57:23.880 回答
0

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

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

于 2013-07-20T13:31:19.960 回答