freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

net體系結(jié)構(gòu)(編輯修改稿)

2025-07-22 07:13 本頁面
 

【文章內(nèi)容簡介】 的垃圾回收系統(tǒng)。,是因?yàn)橹虚g語言已用來處理進(jìn)程。其規(guī)則要求,第一,不能引用已有的對(duì)象,除非復(fù)制已有的引用。第二,中間語言是類型安全的語言。在這里,其含義是如果存在對(duì)對(duì)象的任何引用,該引用中就有足夠的信息來確定對(duì)象的類型。垃圾回收機(jī)制不能和諸如非托管C++的語言一起使用,因?yàn)镃++允許指針自由地轉(zhuǎn)換數(shù)據(jù)類型。垃圾回收的一個(gè)重要方面是它的不確定性。換言之,不能保證什么時(shí)候會(huì)調(diào)用垃圾回收器:CLR決定需要它時(shí),就可以調(diào)用它。但可以重寫這個(gè)過程,在代碼中調(diào)用垃圾回收器。垃圾回收過程的詳細(xì)信息可參見第13章。3. 安全性.NET很好地彌補(bǔ)了Windows提供的安全機(jī)制,因?yàn)樗峁┑陌踩珯C(jī)制是基于代碼的安全性,而Windows僅提供了基于角色的安全性。基于角色的安全性建立在運(yùn)行進(jìn)程的賬戶的身份基礎(chǔ)上,換言之,就是誰擁有和運(yùn)行進(jìn)程。另一方面,基于代碼的安全性建立在代碼實(shí)際執(zhí)行的任務(wù)和代碼的可信程度上。由于中間語言提供了強(qiáng)大的類型安全性,因此CLR可以在運(yùn)行代碼前檢查它,以確定是否有需要的安全權(quán)限。.NET還提供了一種機(jī)制,使代碼可以在運(yùn)行前,預(yù)先指定需要什么安全權(quán)限?;诖a的安全性非常重要,原因是它降低了運(yùn)行來歷不明的代碼的風(fēng)險(xiǎn)(如代碼是從Internet上下載的)。即使代碼運(yùn)行在管理員賬戶下,也有可能使用基于代碼的安全性,來確定這段代碼是否仍不能執(zhí)行管理員賬戶一般允許執(zhí)行的某些類型的操作,例如讀寫環(huán)境變量、。安全問題詳見第21章。4. 應(yīng)用程序域,它用于減少運(yùn)行應(yīng)用程序的系統(tǒng)開銷,這些應(yīng)用程序需要與其他程序分離開來,但仍需要彼此通信。典型的例子是Web服務(wù)器應(yīng)用程序,它需要同時(shí)響應(yīng)許多瀏覽器請(qǐng)求。因此,要有許多組件實(shí)例同時(shí)響應(yīng)這些同時(shí)運(yùn)行的請(qǐng)求。,可以讓這些實(shí)例共享同一個(gè)進(jìn)程,但此時(shí)一個(gè)運(yùn)行的實(shí)例就有可能導(dǎo)致整個(gè)網(wǎng)站的崩潰;也可以把這些實(shí)例孤立在不同的進(jìn)程中,但這樣做會(huì)增加相關(guān)性能的系統(tǒng)開銷。到現(xiàn)在為止,孤立代碼的唯一方式是通過進(jìn)程來實(shí)現(xiàn)的。在啟動(dòng)一個(gè)新的應(yīng)用程序時(shí),它會(huì)在一個(gè)進(jìn)程環(huán)境內(nèi)運(yùn)行。Windows通過地址空間把進(jìn)程分隔開來。這樣,每個(gè)進(jìn)程有4GB的虛擬內(nèi)存來存儲(chǔ)其數(shù)據(jù)和可執(zhí)行代碼(4GB對(duì)應(yīng)于32位系統(tǒng),64位系統(tǒng)要用更多的內(nèi)存)。Windows利用額外的間接方式把這些虛擬內(nèi)存映射到物理內(nèi)存或磁盤空間的一個(gè)特殊區(qū)域中。每個(gè)進(jìn)程都會(huì)有不同的映射,虛擬地址空間塊映射的物理內(nèi)存之間不重疊,如圖12所示。一般情況下,任何進(jìn)程都只能通過指定虛擬內(nèi)存中的一個(gè)地址來訪問內(nèi)存——即進(jìn)程不能直接訪問物理內(nèi)存,因此一個(gè)進(jìn)程不可能訪問分配給另一個(gè)進(jìn)程的內(nèi)存。這樣就可以確保任何執(zhí)行出錯(cuò)的代碼不會(huì)損害其地址空間以外的數(shù)據(jù)(注意在Windows 95/98上,這些保護(hù)措施不像在Windows NT/2000/XP/2003/Vista/7上那樣完備,所以理論上存在應(yīng)用程序因?qū)懭氩徽_的內(nèi)存而導(dǎo)致Windows崩潰的可能性)。進(jìn)程不僅是運(yùn)行代碼的實(shí)例相互隔離的一種方式,在Windows NT/2000/XP/2003/Vista/7系統(tǒng)上,它們還可以構(gòu)成分配了安全權(quán)限和許可的單元。每個(gè)進(jìn)程都有自己的安全標(biāo)識(shí),明確地表示W(wǎng)indows允許該進(jìn)程可以執(zhí)行的操作。進(jìn)程對(duì)確保安全有很大的幫助,而它們的一大缺點(diǎn)是性能。許多進(jìn)程常常在一起工作,因此需要相互通信。一個(gè)常見的例子是進(jìn)程調(diào)用一個(gè)COM組件,而該COM組件是可執(zhí)行的,因此需要在它自己的進(jìn)程上運(yùn)行。在COM中使用代理時(shí)也會(huì)發(fā)生類似的情況。因?yàn)檫M(jìn)程不能共享任何內(nèi)存,所以必須使用一個(gè)復(fù)雜的編組過程在進(jìn)程之間復(fù)制數(shù)據(jù)。這對(duì)性能有非常大的影響。如果需要使組件一起工作,但不希望性能有損失,唯一的方法是使用基于DLL的組件,讓所有的組件在同一個(gè)地址空間中運(yùn)行—— 其風(fēng)險(xiǎn)是執(zhí)行出錯(cuò)的組件會(huì)影響其他組件。應(yīng)用程序域(application domain)是分離組件的一種方式,它不會(huì)導(dǎo)致因在進(jìn)程之間傳送數(shù)據(jù)而產(chǎn)生的性能問題。其方法是把任何一個(gè)進(jìn)程分解到多個(gè)應(yīng)用程序域中。每個(gè)應(yīng)用程序域大致對(duì)應(yīng)一個(gè)應(yīng)用程序,執(zhí)行的每個(gè)線程都運(yùn)行在一個(gè)具體的應(yīng)用程序域中,如圖13所示。 圖 12 圖 13如果不同的可執(zhí)行文件都運(yùn)行在同一個(gè)進(jìn)程空間中,顯然它們就能輕松地共享數(shù)據(jù),因?yàn)槔碚撋纤鼈兛梢灾苯釉L問彼此的數(shù)據(jù)。雖然在理論上這是可以實(shí)現(xiàn)的,但是CLR會(huì)檢查每個(gè)正在運(yùn)行的應(yīng)用程序的代碼,以確保這些代碼不脫離它自己的數(shù)據(jù)區(qū)域,保證不發(fā)生直接訪問其他進(jìn)程的數(shù)據(jù)的情況。這初看起來是不可能的,不真正運(yùn)行程序,如何告訴程序要做什么工作?實(shí)際上,這么做通常是可能的,因?yàn)橹虚g語言擁有強(qiáng)大的類型安全功能。在大多數(shù)情況下,除非代碼明確使用不安全的特性,例如指針,否則它使用的數(shù)據(jù)類型可以確保內(nèi)存不會(huì)被錯(cuò)誤地訪問。例如,.NET數(shù)組類型執(zhí)行邊界檢查,以確保禁止執(zhí)行超出邊界的數(shù)組操作。如果運(yùn)行的應(yīng)用程序的確需要與運(yùn)行在不同應(yīng)用程序域中的其他應(yīng)用程序通信或共享數(shù)據(jù)。被驗(yàn)證不能訪問超出其應(yīng)用程序域的數(shù)據(jù)(而不是通過明確的遠(yuǎn)程處理機(jī)制)的代碼就是內(nèi)存類型安全的代碼。這種代碼與運(yùn)行在同一個(gè)進(jìn)程中但應(yīng)用程序域不同的類型安全代碼一起運(yùn)行是安全的。 通過異常處理錯(cuò)誤.NET Framework可以與Java和C++使用相同的基于異常的機(jī)制處理錯(cuò)誤情況。C++開發(fā)人員應(yīng)注意到,由于IL有非常強(qiáng)大的類型系統(tǒng),因此在IL中不像C++那樣存在因使用異常帶來的相關(guān)性能問題。另外,.NET和C也支持finally塊,這是許多C++開發(fā)人員長久以來的愿望。第15章會(huì)詳細(xì)討論異常。簡要地說,代碼的某些領(lǐng)域被看作是異常處理例程,每個(gè)例程都能處理某種特殊的錯(cuò)誤情況(例如,找不到文件,或拒絕執(zhí)行某些操作)。這些條件可以定義得很寬或很窄。異常結(jié)構(gòu)確保在發(fā)生錯(cuò)誤情況時(shí),執(zhí)行進(jìn)程立即跳到最有針對(duì)性的異常處理例程上,來處理錯(cuò)誤情況。異常處理的結(jié)構(gòu)還提供了一種簡便的方式,可以將包含異常情況的準(zhǔn)確信息的對(duì)象傳遞給錯(cuò)誤處理例程。這個(gè)對(duì)象包括給用戶提供的相應(yīng)信息和在代碼的什么地方檢測到錯(cuò)誤的確切信息。大多數(shù)異常處理結(jié)構(gòu),包括異常發(fā)生時(shí)的程序流控制,都是由高級(jí)語言處理的,例如C、Visual Basic 2010和C++,任何中間語言中的命令都不支持它。例如,C使用try{}、catch{}和 finally{}代碼塊來處理它,詳見第15章。,語言的互操作性則允許異常處理代碼解釋被拋出的異常對(duì)象,無論異常處理代碼使用什么語言編寫,都是這樣。語言的無關(guān)性沒有體現(xiàn)在C++和Java的異常處理中,但在COM的錯(cuò)誤處理機(jī)制中有一定限度的體現(xiàn)。COM的錯(cuò)誤處理機(jī)制包括從方法中返回錯(cuò)誤代碼以及傳遞錯(cuò)誤對(duì)象。在不同的語言中,異常的處理是一致的,這是促進(jìn)多語言開發(fā)的重要一環(huán)。 特性的使用特性(attribute)是使用C++編寫COM組件的開發(fā)人員很熟悉的一個(gè)功能(在Microsoft的COM接口定義語言(Interface Definition Language,IDL)中使用特性)。特性最初是為了在程序中提供與某些項(xiàng)相關(guān)的額外信息,以供編譯器使用。.NET支持特性,因此現(xiàn)在C++、C和Visual Basic 2010也支持特性。,對(duì)特性的革新是可以在源代碼中定義自己的自定義特性。這些用戶定義的特性將和對(duì)應(yīng)數(shù)據(jù)類型或方法的元數(shù)據(jù)放在一起,這對(duì)于文檔記錄十分有用,它們和反射技術(shù)一起使用,以根據(jù)特性執(zhí)行編程任務(wù)。另外,特性也可以在一種語言的源代碼中定義,而被用另一種語言編寫的代碼讀取。第14章將詳細(xì)介紹特性。 程序集程序集(assembly)是包含編譯好的、 Framework的代碼的邏輯單元。本章不詳細(xì)論述程序集,而在第18章中論述,下面概述其中的要點(diǎn)。程序集是完全自描述性的,它是一個(gè)邏輯單元而不是物理單元,可以存儲(chǔ)在多個(gè)文件中(動(dòng)態(tài)程序集的確存儲(chǔ)在內(nèi)存中,而不是存儲(chǔ)在文件中)。如果一個(gè)程序集存儲(chǔ)在多個(gè)文件中,其中就會(huì)有一個(gè)包含入口點(diǎn)的主文件,該文件描述了程序集中的其他文件。注意可執(zhí)行代碼和庫代碼使用相同的程序集結(jié)構(gòu)。唯一的區(qū)別是可執(zhí)行的程序集包含一個(gè)主程序入口點(diǎn),而庫程序集不包含。程序集的一個(gè)重要特性是它們包含的元數(shù)據(jù)描述了對(duì)應(yīng)代碼中定義的類型和方法。程序集也包含描述程序集本身的元數(shù)據(jù),這種程序集元數(shù)據(jù)包含在一個(gè)稱為“清單(manifest)”的區(qū)域中,可以檢查程序集的版本及其完整性。ildasm是一個(gè)基于Windows的實(shí)用程序,可以用于檢查程序集的內(nèi)容,包括程序集清單和元數(shù)據(jù)。第18章將介紹ildasm。程序集包含程序的元數(shù)據(jù),表示調(diào)用給定程序集中的代碼的應(yīng)用程序或其他程序集不需要引用注冊(cè)表或其他數(shù)據(jù)源,就能確定如何使用該程序集。這與以前的COM有很大的區(qū)別,以前,組件和接口的GUID必須從注冊(cè)表中獲取,在某些情況下,方法和屬性的詳細(xì)信息也需要從類型庫中讀取。把數(shù)據(jù)分散在3個(gè)以上的不同位置上,可能會(huì)出現(xiàn)信息不同步的情況,從而妨礙其他軟件成功地使用該組件。有了程序集后,就不會(huì)發(fā)生這種情況,因?yàn)樗械脑獢?shù)據(jù)都與程序的可執(zhí)行指令存儲(chǔ)在一起。注意,即使程序集存儲(chǔ)在幾個(gè)文件中,數(shù)據(jù)也不會(huì)出現(xiàn)不同步的問題。這是因?yàn)榘绦蚣肟诘奈募泊鎯?chǔ)了其他文件的細(xì)節(jié)、散列和內(nèi)容,如果一個(gè)文件被替換,或者被篡改,系統(tǒng)肯定會(huì)檢測出來,并拒絕加載程序集。程序集有兩種類型:私有程序集和共享程序集。 私有程序集私有程序集是最簡單的一種程序集類型。
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1