2011-04-06 270 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