2010-04-17 81 views

回答

25

1。每個應用程序池是否等同於.Net AppDomain?

沒有,一個應用程序池可以有多個應用程序域。每個AppDomain表示一個正在運行的ASP.NET應用程序。許多ASP.NET應用程序可能屬於單個應用程序池。

2。或者它相當於.Net過程?

不太。見下文。

3。應用程序池如何與IIS w3wp.exe相關?

應用程序池表示有限數量的工作進程,它們可能承載可能數量更多的應用程序。這與SQL連接池如何在任意數量的請求之間共享有限數量的連接類似。

默認情況下,一個應用程序池得到一個工作進程(w3wp.exe),這是通常最好單獨離開這個設置,除非你知道自己在做什麼。不過,應用程序池可以配置爲使用任意數量的進程。

工作進程實際上是就是BEING這裏彙集的資源,而不是應用程序域。總會有相同數量的AppDomain作爲有ASP.NET應用程序(除非是關閉的中間或應用程序創建自己的應用程序域),但工作進程的數量是獨立的;應用程序池爲您提供特定數量的工作進程來處理對特定數量的AppDomain的請求。

的1(默認值),用於工作進程中的應用程序池的數目的設置意味着所有應用/池中共享應用程序域相同的工作進程。

5

這樣說是過分簡化了,但最好的方式是考慮AppPool是一個AppDomain池。所有這些AppDomain都在單個工作進程中運行(w3wp.exe)。

+0

感謝安德魯。你還可以添加什麼時候創建應用程序池?它如何幫助將您的Web應用程序放在一個池中? – shahkalpesh 2010-04-17 18:59:20

+0

@shahkalpesh:在IIS6 +我不認爲可以有一個應用程序不在應用程序池中。您也可能會發現此鏈接很有用(http://weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx) – R0MANARMY 2010-04-17 19:03:18

1

我知道這是舊的文章,但我認爲這是一個很好的口音:

1應用程序池(IIS)= 1個請求隊列中(HTTP.SYS)的w3wp.exe + 1個或多個實例。

2

另一個重要的事情要提的是Application Security

在以前的IIS版本中,工作進程的運行方式爲LocalSystem,這是一個在服務器上具有系統管理員權限的強大帳戶。由於LocalSystem可以訪問操作系統上的幾乎所有資源,因此會產生安全隱患。在IIS 6.0(引入了應用程序池),一個可以在應用程序池級別設置的工作進程的身份。應用程序池的標識是應用程序池的工作進程在其下運行的帳戶。默認情況下,應用程序池的網絡服務帳戶,該帳戶擁有低級別的用戶訪問權限下運行。

通過使用一個非常低權限的帳戶,如網絡服務運行工作進程,一方面可以減少安全漏洞。但是,通過使用IIS管理器,它可以配置應用程序池爲以下任何預定義的帳戶運行:

NetworkService 
LocalSystem 
LocalService 
相關問題