2011-12-13 221 views
18

應用程序域和應用程序池有什麼區別?應用程序域和應用程序池之間的區別?

我已經閱讀了許多關於這兩個術語的文章。但仍然無法得到正確的理解。

請用簡單的描述來闡述它。

謝謝

+1

http://weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx – Prisoner

+0

http://social.msdn.microsoft.com/Forums/en/ clr/thread/fd865e35-a2ee-41b8-b112-5913f15c96f2 – Prisoner

+1

http://forums.asp.net/t/1688586.aspx/1 – Prisoner

回答

26

IIS進程是w3wp; IIS中的每個應用程序池都使用它自己的進程; AppPool1使用進程3784,AppPool2使用進程5044 Asp.net中的不同應用程序將使用不同的應用程序域 ;

AppTest1和AppTest2在不同的AppDomain中,但在 中的過程相同。

使用它們有什麼用?

應用程序池和AppDomain,它們都可以提供 隔離,但使用不同的方法。應用程序池 使用該過程來隔離不使用.NET的情況下運行 的應用程序。但是AppDomain是.NET提供的另一種隔離方法 。 如果您的服務器託管成千上萬的網站,您將不會使用 成千上萬的應用程序池來隔離網站, 僅僅是因爲運行過多的進程會終止該操作系統。 但是,有時您需要應用程序池。應用程序池的 優勢之一是,您可以爲應用程序池配置 標識。你也有更靈活的 選項來回收應用程序池。至少現在, IIS沒有提供顯式選項來回收appdomain。

應用程序池是一組一個或多個網址爲 的不同Web應用程序和網站。可以將任何Web目錄 或虛擬目錄分配給應用程序池。 一個應用程序池的股票中的每個應用程序相同的 工作進程可執行文件,程序w3wp.exe,那 服務一個應用程序池從工人 過程中分離的工作進程服務的其他[如啓動MS Word和 開放許多Word文檔] 。每個單獨的工作進程 提供了一個進程邊界,以便當應用程序分配給一個應用程序池的 時,其他 應用程序池中的問題不會影響應用程序。此 可確保如果工作進程失敗,則不會影響在其他應用程序池中運行的應用程序 。如 例如,如果Word文檔有問題,它不應該 邏輯上影響您的Excel表格是不是。 應用程序域是一種機制(類似於操作系統中的進程),用於將執行的應用程序相互隔離,使得它們彼此不影響 。即MS WORD的打開不會影響MS EXCEL 您可以隨時打開和關閉這兩個應用程序,因爲 應用程序之間沒有依賴關係。每個 應用程序域都有其自己的虛擬地址空間,其中 使用該地址空間來爲應用程序域範圍。

由於this鏈接

+0

「應用程序池使用該進程來隔離沒有工作的應用程序爲了清楚起見,.NET應該以「帶有或不帶有.NET」結尾。此外,應用程序池可以有多個工作進程(web garden)。儘管這不是一個推薦的方法,但您的答案反映了它的存在。 –

+0

請您澄清單個應用程序池可以託管各種應用程序的場景嗎?這可能是因爲應用程序是.Net應用程序,因此在單個應用程序池過程中支持應用程序域級隔離? – Sumith

-1

以簡單的方式

  • 應用程序池是爲每一個網站的創建。

  • 涉及一個應用程序域目的的應用程序域。

+1

我還沒有模糊的想法,你的第二點要說的是什麼。 –

相關問題