星期三, 四月 22, 2009

IIS 7五大核心元件之5: 工作者處理序

Web應用程式雖然名為「應用程式」,但通常並不能直接在作業系統執行,例如IIS 7常見的ASP.NET、ASP、PHP等類型的Web應用程式,而需要另由「宿主」(host)程式加以執行。

對IIS 7而言,工作者處理序 (worker process) 就是這裡所謂的宿主程式,它是在使用者模式執行,其程式檔名為W3wp.exe,目的是提供Web伺服器的核心功能給Web應用程式,讓後者能夠在工作者處理序裡執行,並處理由HTTP.sys送來的用戶端要求,進而將回應送還HTTP.sys,再由HTTP.sys傳回用戶端。

上圖是應用程式集區的示意圖。一個工作者處理序處理一個應用程式集區,而一個工作者處理序可包含數個Web應用程式同時執行。這種作法首見於IIS 6,優點是不同應用程式集區裡的Web應用程式不會相互影響,以提高系統的容錯能力,例如Web應用程式A如果當掉,不會影響另一個集區裡的Web應用程式B,因此可以將還在測試的Web應用程式放在獨立的集區。但反之,開啟越多的應用程式集區,會耗用越多的系統資源。

IIS 7繼續沿用了應用程式集區的概念,雖然不再支援IIS 6提供的IIS 5隔離模式,但全力改善應用程式集區的安全和效能。IIS 7透過自動替應用程式集區產生的安全性識別碼(Security Identifier,SID),來自動隔離應用程式集區,並且也自動隔離伺服器層級的設定,讓設定只能由影響所及的應用程式集區讀取,而達到更為獨立的Web應用程式執行環境。IIS 7也降低了工作者處理序所消耗的記憶體,並且強化了工作者處理序的管理機制,這也使得IIS 7能夠增加單一Web伺服器所能使用的應用程式集區數量,因此管理者將擁有更多的應用程式集區;將各個Web應用程式部署在獨立的應用程式集區,除了有利於系統安全,也能隔離出問題的Web應用程式。

工作者處理序裡面可以有數個Web應用程式,每個.NET應用程式有自己的「應用程式定義域」(application domains,AppDomain),當.NET應用程式啟動後,AppDomain會載入應用程式的程式碼。要注意的是.NET應用程式裡若有數個虛擬目錄,那麼這些虛擬目錄的AppDomain將會與所屬的應用程式相同。

每個工作者處理序會有兩種處理要求的方式,管理者可以設定應用程式集區,來決定要以哪一種模式來處理ASP.NET要求:

  • 傳統(classic mode):,IIS 7會以兩條各自獨立的IIS和ASP.NET要求處理管線來處理ASP.NET的要求(如同IIS 6)。
  • 整合(integrated mode):IIS 7會以一條整合的要求處理管線來處理IIS和ASP.NET的要求。

設定應用程式集區的執行模式

同一部伺服器裡的各個應用程式集區,可以設定成不同的模式,而我們可以利用IIS管理員來指定應用程式集區的執行模式。作法是先展開IIS管理員左側『連線』窗格裡的伺服器節點,然後選取『應用程式集區』節點;接著在『應用程式集區』頁面選取想要設定的應用程式集區;然後點選右側『動作』窗格裡的『基本設定』(如下圖)。

接著會出現如下圖的『編輯應用程式集區』交談窗,請拉下Managed管線模式,並選取適當的管線模式,最後按下『確定』鈕即可。

0 意見: