使用Self Host Web Api服务进行热部署

时间:2013-07-20 00:19:55

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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