2011-04-06 227 views
4

如果我部署了一个WCF服务,它会中断服务吗?我正在部署到IIS,我的部署是使用Windows资源管理器手动复制dll,web.config,svc等。部署WCF服务

因此,我复制的文件,之后会发生什么?应用程序池是否回收?是否需要重新编译(即放慢速度)?

服务在没有会话状态的情况下运行,所以如果应用程序池回收,我不关心只要请求没有中断。

回答

3

如果该服务已使用和旧的DLL已经加载后,您将需要在新的dll被使用之前回收应用程序池 - 直到那些旧的dll停留在内存中。

虽然不会因应用程序池回收而导致重新编译,但您的服务的第一个来电者将会遇到轻微的延迟,而必要的dll将加载到内存中。

通过在回收后立即致电您的服务,您可以轻松防止第一次通话延迟。这样,用户遇到延迟的唯一方法就是他们在您部署的同时进行服务呼叫(并将您打到第一个呼叫) - 但延迟很小。

+0

因此,即使在高负载下,所有请求都会被处理? (如果请求在回收期间到达,会发生什么情况?它会排队吗?) – 2011-04-06 09:00:55

+1

@ Xavier:不,请求不会排队。一旦准备就绪,新的请求将被路由到新打开的工作进程。在新流程准备就绪之前,现有流程继续处理命令。因此,请求总是在收到后立即处理。 – 2011-04-06 09:19:53

1

根据我在ASP.Net上的经验,应用程序虚拟目录会被监视某些特定的文件更改。我相信,只要有任何受监控的文件\目录发生变化,应用程序就会重新启动。从ASP.Net经验更改web.config和bin目录下的文件导致应用程序重新加载\重新启动。我认为WCF也会发生同样的情况。你需要做一个POC来验证这一点。

+0

正确地重新更改web.config(以及asp.net中的aspx文件),但dll不受监视。 – 2011-04-06 06:33:14