如果我部署WCF服务会中断服务吗?我正在部署到IIS,我的部署是使用Windows资源管理器手动复制dll,web.config,svc等。
所以我复制文件,之后会发生什么?应用程序池是否回收?是否需要重新编译(即减慢速度)?
服务在没有会话状态的情况下运行,因此如果应用程序池循环使用,只要请求不被中断,我就不在乎。
答案 0 :(得分:3)
如果该服务已被使用且旧的dll已被加载,则需要在使用新dll之前回收应用程序池 - 直到那时旧的dll保留在内存中。
虽然应用程序池回收不会导致重新编译,但是服务的第一个调用者会在必要的dll加载到内存时遇到轻微的延迟。
您可以通过在回收后立即呼叫您的服务来轻松防止此首次呼叫延迟。这样,用户遇到延迟的唯一方法是,如果他们在您部署的同时进行服务呼叫(并且在第一次呼叫时击败您) - 但延迟将是最小的。
答案 1 :(得分:1)
根据我在ASP.Net上的经验,可以监视app虚拟目录的某些特定文件更改。我相信只要任何受监视的文件\目录发生更改,应用程序就会重新启动。从ASP.Net经验来看,更改web.config和bin目录下的文件会导致application reload \ restart。我认为WCF也应该这样。您需要进行POC验证。
答案 2 :(得分:-1)
不,它不应该但正确的部署服务的方法是在发布模式下构建它,更多细节我建议这篇文章: - http://blah.winsmarts.com/2008-4-Host_a_WCF_Service_in_IIS_7_-and-amp;_Windows_2008_-_The_right_way.aspx