您的位置:首頁(yè) > 軟件資訊 > 編程技巧 > 網(wǎng)站開(kāi)發(fā)
來(lái)源:北大青鳥(niǎo)飛迅校區(qū)|發(fā)布時(shí)間:2013-04-16 13:07:12
問(wèn):什么叫應(yīng)用程序域?
答:應(yīng)用程序域?yàn)榘踩浴⒖煽啃、版本控制以及卸載程序集提供了隔離邊界。
操作系統(tǒng)和運(yùn)行庫(kù)環(huán)境通常會(huì)在應(yīng)用程序間提供某種形式的隔離。例如,Microsoft Windows 使用進(jìn)程來(lái)隔離應(yīng)用程序。為確保在一個(gè)應(yīng)用程序中運(yùn)行的代碼不會(huì)對(duì)其他不相關(guān)的應(yīng)用程序產(chǎn)生不良影響,這種隔離是必需的。
應(yīng)用程序域通常由運(yùn)行庫(kù)宿主創(chuàng)建,運(yùn)行庫(kù)宿主負(fù)責(zé)在運(yùn)行應(yīng)用程序之前引導(dǎo)公共語(yǔ)言運(yùn)行庫(kù)。應(yīng)用程序域提供了一個(gè)更安全、用途更廣的處理單元,公共語(yǔ)言運(yùn)行庫(kù)可使用該單元提供應(yīng)用程序之間的隔離。
應(yīng)用程序域 (application domain) (AppDomain)
一種邊界,它由公共語(yǔ)言運(yùn)行庫(kù)圍繞同一應(yīng)用程序范圍內(nèi)創(chuàng)建的對(duì)象建立(即,從應(yīng)用程序入口點(diǎn)開(kāi)始,沿著對(duì)象激活的序列的任何位置)。應(yīng)用程序域有助于將在一個(gè)應(yīng)用程序中創(chuàng)建的對(duì)象與在其他應(yīng)用程序中創(chuàng)建的對(duì)象隔離,以使運(yùn)行時(shí)行為可以預(yù)知。在一個(gè)單獨(dú)的進(jìn)程中可以存在多個(gè)應(yīng)用程序域。
以前使用進(jìn)程邊界來(lái)隔離在同一臺(tái)計(jì)算機(jī)上運(yùn)行的應(yīng)用程序。每一個(gè)應(yīng)用程序被加載到單獨(dú)的進(jìn)程中,這樣就將該應(yīng)用程序與在同一臺(tái)計(jì)算機(jī)上運(yùn)行的其他應(yīng)用程序相隔離。
隔離這些應(yīng)用程序的原因在于內(nèi)存地址是與進(jìn)程相關(guān)的;在目標(biāo)進(jìn)程中,不能通過(guò)任何有意義的方式使用從一個(gè)進(jìn)程傳遞到另一個(gè)進(jìn)程的內(nèi)存指針。此外,您不能在兩個(gè)進(jìn)程間進(jìn)行直接調(diào)用。您必須代之以使用代理,它提供一定程度的間接性。
托管代碼必須先通過(guò)一個(gè)驗(yàn)證過(guò)程,然后才能運(yùn)行(除非管理員已授權(quán)跳過(guò)該驗(yàn)證)。此驗(yàn)證過(guò)程將驗(yàn)證以下內(nèi)容:這些代碼是否會(huì)嘗試訪問(wèn)無(wú)效的內(nèi)存地址?是否會(huì)嘗試執(zhí)行某些導(dǎo)致進(jìn)程(該代碼運(yùn)行時(shí)所在的進(jìn)程)無(wú)法正常進(jìn)行的其他操作?通過(guò)此驗(yàn)證測(cè)試的代碼將被認(rèn)為是類(lèi)型安全的。由于公共語(yǔ)言運(yùn)行庫(kù)能夠驗(yàn)證代碼是否為類(lèi)型安全的代碼,所以它可以提供與進(jìn)程邊界一樣大的隔離級(jí)別,而其性能開(kāi)銷(xiāo)則要低得多。
應(yīng)用程序域提供安全而通用的處理單元,公共語(yǔ)言運(yùn)行庫(kù)可使用它來(lái)提供應(yīng)用程序之間的隔離。您可以在具有同等隔離級(jí)別(存在于單獨(dú)的進(jìn)程中)的單個(gè)進(jìn)程中運(yùn)行幾個(gè)應(yīng)用程序域,而不會(huì)造成進(jìn)程間調(diào)用或進(jìn)程間切換等方面的額外開(kāi)銷(xiāo)。在一個(gè)進(jìn)程內(nèi)運(yùn)行多個(gè)應(yīng)用程序的能力顯著增強(qiáng)了服務(wù)器的可伸縮性。
隔離應(yīng)用程序?qū)τ趹?yīng)用程序安全也是十分重要的。例如,您可以在單個(gè)瀏覽器進(jìn)程中運(yùn)行幾個(gè) Web 應(yīng)用程序中的控件,同時(shí)使這些控件不能訪問(wèn)彼此的數(shù)據(jù)和資源。
應(yīng)用程序域所提供的隔離具有以下優(yōu)點(diǎn):
在一個(gè)應(yīng)用程序中出現(xiàn)的錯(cuò)誤不會(huì)影響其他應(yīng)用程序。因?yàn)轭?lèi)型安全的代碼不會(huì)導(dǎo)致內(nèi)存錯(cuò)誤,所以使用應(yīng)用程序域可以確保在一個(gè)域中運(yùn)行的代碼不會(huì)影響進(jìn)程中的其他應(yīng)用程序。
能夠在不停止整個(gè)進(jìn)程的情況下停止單個(gè)應(yīng)用程序。使用應(yīng)用程序域使您可以卸載在單個(gè)應(yīng)用程序中運(yùn)行的代碼。
注意 不能卸載單個(gè)程序集或類(lèi)型。只能卸載整個(gè)域。
在一個(gè)應(yīng)用程序中運(yùn)行的代碼不能直接訪問(wèn)其他應(yīng)用程序中的代碼或資源。為了強(qiáng)制實(shí)施此隔離,公共語(yǔ)言運(yùn)行庫(kù)禁止在不同應(yīng)用程序域中的對(duì)象之間進(jìn)行直接調(diào)用。要在各域之間傳遞對(duì)象,可以復(fù)制這些對(duì)象,或通過(guò)代理訪問(wèn)這些對(duì)象。如果復(fù)制對(duì)象,那么對(duì)該對(duì)象的調(diào)用為本地調(diào)用。也就是說(shuō),調(diào)用方和被引用的對(duì)象位于同一應(yīng)用程序域中。如果通過(guò)代理訪問(wèn)對(duì)象,那么對(duì)該對(duì)象的調(diào)用為遠(yuǎn)程調(diào)用。在此情況下,調(diào)用方和被引用的對(duì)象位于不同的應(yīng)用程序域中。域間調(diào)用所采用的遠(yuǎn)程調(diào)用結(jié)構(gòu)與兩個(gè)進(jìn)程間的調(diào)用或兩臺(tái)計(jì)算機(jī)間的調(diào)用結(jié)構(gòu)相同。
全程面授,不高薪都難
申請(qǐng)成功后,我們將在24小時(shí)內(nèi)與您聯(lián)系
招生熱線: 4008-0731-86 / 0731-82186801
學(xué)校地址: 長(zhǎng)沙市天心區(qū)團(tuán)結(jié)路6號(hào)
Copyright © 2006 | 湖南大計(jì)信息科技有限公司 版權(quán)所有
湘ICP備14017520號(hào)-3