国产99福利精品视频|杨幂精品国产福利在线|国精品午夜福利视频不卡|欧美精品黄网站在线播放|精品国产乱码久久久久久久|国产大片中文字幕在线观看|国产肥熟女视频一区二区三区|国产乱码无码视频一区二区三区

應(yīng)用程序域,c#里面什么是應(yīng)用程序域?

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-04-16 13:07:12

  問:什么叫應(yīng)用程序域?

  答:應(yīng)用程序域為安全性、可靠性、版本控制以及卸載程序集提供了隔離邊界。

  操作系統(tǒng)和運行庫環(huán)境通常會在應(yīng)用程序間提供某種形式的隔離。例如,Microsoft Windows 使用進程來隔離應(yīng)用程序。為確保在一個應(yīng)用程序中運行的代碼不會對其他不相關(guān)的應(yīng)用程序產(chǎn)生不良影響,這種隔離是必需的。

  應(yīng)用程序域通常由運行庫宿主創(chuàng)建,運行庫宿主負(fù)責(zé)在運行應(yīng)用程序之前引導(dǎo)公共語言運行庫。應(yīng)用程序域提供了一個更安全、用途更廣的處理單元,公共語言運行庫可使用該單元提供應(yīng)用程序之間的隔離。

  應(yīng)用程序域 (application domain) (AppDomain)

  一種邊界,它由公共語言運行庫圍繞同一應(yīng)用程序范圍內(nèi)創(chuàng)建的對象建立(即,從應(yīng)用程序入口點開始,沿著對象激活的序列的任何位置)。應(yīng)用程序域有助于將在一個應(yīng)用程序中創(chuàng)建的對象與在其他應(yīng)用程序中創(chuàng)建的對象隔離,以使運行時行為可以預(yù)知。在一個單獨的進程中可以存在多個應(yīng)用程序域。

  以前使用進程邊界來隔離在同一臺計算機上運行的應(yīng)用程序。每一個應(yīng)用程序被加載到單獨的進程中,這樣就將該應(yīng)用程序與在同一臺計算機上運行的其他應(yīng)用程序相隔離。

  隔離這些應(yīng)用程序的原因在于內(nèi)存地址是與進程相關(guān)的;在目標(biāo)進程中,不能通過任何有意義的方式使用從一個進程傳遞到另一個進程的內(nèi)存指針。此外,您不能在兩個進程間進行直接調(diào)用。您必須代之以使用代理,它提供一定程度的間接性。

  托管代碼必須先通過一個驗證過程,然后才能運行(除非管理員已授權(quán)跳過該驗證)。此驗證過程將驗證以下內(nèi)容:這些代碼是否會嘗試訪問無效的內(nèi)存地址?是否會嘗試執(zhí)行某些導(dǎo)致進程(該代碼運行時所在的進程)無法正常進行的其他操作?通過此驗證測試的代碼將被認(rèn)為是類型安全的。由于公共語言運行庫能夠驗證代碼是否為類型安全的代碼,所以它可以提供與進程邊界一樣大的隔離級別,而其性能開銷則要低得多。

  應(yīng)用程序域提供安全而通用的處理單元,公共語言運行庫可使用它來提供應(yīng)用程序之間的隔離。您可以在具有同等隔離級別(存在于單獨的進程中)的單個進程中運行幾個應(yīng)用程序域,而不會造成進程間調(diào)用或進程間切換等方面的額外開銷。在一個進程內(nèi)運行多個應(yīng)用程序的能力顯著增強了服務(wù)器的可伸縮性。

  隔離應(yīng)用程序?qū)τ趹?yīng)用程序安全也是十分重要的。例如,您可以在單個瀏覽器進程中運行幾個 Web 應(yīng)用程序中的控件,同時使這些控件不能訪問彼此的數(shù)據(jù)和資源。

  應(yīng)用程序域所提供的隔離具有以下優(yōu)點:

  在一個應(yīng)用程序中出現(xiàn)的錯誤不會影響其他應(yīng)用程序。因為類型安全的代碼不會導(dǎo)致內(nèi)存錯誤,所以使用應(yīng)用程序域可以確保在一個域中運行的代碼不會影響進程中的其他應(yīng)用程序。

  能夠在不停止整個進程的情況下停止單個應(yīng)用程序。使用應(yīng)用程序域使您可以卸載在單個應(yīng)用程序中運行的代碼。

  注意 不能卸載單個程序集或類型。只能卸載整個域。

  在一個應(yīng)用程序中運行的代碼不能直接訪問其他應(yīng)用程序中的代碼或資源。為了強制實施此隔離,公共語言運行庫禁止在不同應(yīng)用程序域中的對象之間進行直接調(diào)用。要在各域之間傳遞對象,可以復(fù)制這些對象,或通過代理訪問這些對象。如果復(fù)制對象,那么對該對象的調(diào)用為本地調(diào)用。也就是說,調(diào)用方和被引用的對象位于同一應(yīng)用程序域中。如果通過代理訪問對象,那么對該對象的調(diào)用為遠程調(diào)用。在此情況下,調(diào)用方和被引用的對象位于不同的應(yīng)用程序域中。域間調(diào)用所采用的遠程調(diào)用結(jié)構(gòu)與兩個進程間的調(diào)用或兩臺計算機間的調(diào)用結(jié)構(gòu)相同。

上一篇:什么是托管代碼,與非托管代碼的區(qū)別?
下一篇:C++程序員容易犯的幾個C#錯誤及解決辦法

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學(xué)校地址: 長沙市天心區(qū)團結(jié)路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有

湘ICP備14017520號-3

關(guān)注我們
在線咨詢
嘿,我來幫您!