国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

.net基礎概念

2019-11-17 03:04:53
字體:
來源:轉載
供稿:網友

.net基礎概念

.net基礎概念

1. .NET Framework

是支持生成和運行下一代應用程序和 xml Web services 的內部 Windows 組件.NET Framework 具有兩個主要組件:公共語言運行庫(Common Language Runtime.NET Framework 類庫(Framework Class Library。

2. 公共語言運行庫)(Common Language Runtime

是 .NET Framework 的基礎??梢詫⑦\行庫看作一個在執行時管理代碼的代理,它提供內存管理、線程管理和遠程處理等核心服務,并且還強制實施嚴格的類型安全以及可提高安全性和可靠性的其他形式的代碼準確性。事實上,代碼管理的概念是運行庫的基本原則。以運行庫為目標的代碼稱為托管代碼,而不以運行庫為目標的代碼稱為非托管代碼。以下是CLR提供的服務:

Ø 代碼管理(加載和執行)

Ø 應用程序內存隔離

Ø 類型安全驗證

Ø IL 到本機代碼的轉換

Ø 對元數據(增強型類型信息)的訪問

Ø 托管對象內存的管理

Ø 代碼訪問安全性的強制

Ø 異常處理,包括語言間異常

Ø 托管代碼、COM 對象和預先存在的 DLL(非托管代碼和數據)間的相互操作

Ø 對象布局的自動化

Ø 對開發人員服務的支持(分析、調試等等)

3. .NET Framework 類庫(Framework Class Library

它是一個綜合性的面向對象的可重用類型集合,可以使用它開發多種應用程序,這些應用程序包括傳統的命令行或圖形用戶界面 (GUI) 應用程序,也包括基于 asp.net 所提供的最新創新的應用程序(如 Web 窗體和 XML Web services)。它可以完成以前要通過Windows API來完成的絕大多數任務。

4. 托管代碼 (managed code)

由公共語言運行庫環境(而不是直接由操作系統)執行的代碼。托管代碼應用程序可以獲得公共語言運行庫服務,例如自動垃圾回收、運行庫類型檢查和安全支持等。這些服務幫助提供獨立于平臺和語言的、統一的托管代碼應用程序行為。托管代碼有以下優點:

Ø 平臺無關性。源代碼先編譯成中間語言,運行時由CLR將中間語言編譯成平臺專用的代碼,跟java的字節代碼一樣,這樣即可實現平臺無關性。

Ø 提高性能。首先,IL比Java的字節碼作用還要大,因為IL是即時編譯的,而Java的字節碼常常是解釋性的,在轉換為平臺可執行代碼的時候可能會導致性能損失。其次,.NET的即時編譯器(JIT)(Just In Time)并非一次把全部代碼編譯完才執行,而是只編譯調用的那部分代碼,并把得到的這部分內部可執行代碼保存起來,下次需要調用的時候無須重新編譯。Microsoft認為這個過程要比一開始編譯整個應用程序代碼的效率高得多,因為任何程序的大部分代碼實際上并不是在每次運行過程中都執行。最后,傳統的編譯器會優化代碼,但它們的優化過程是獨立于代碼所運行的特定處理器的。例如Visual Studio 6優化了一臺一般的Pentium機器,它所生成的代碼就不能利用Pentium Ш處理器的硬件特性。而JIT與平臺無關,所以它可以針對不同的機器完成不同的優化。

Ø 語言的互操作性。互操作性即能將任何一種語言編譯為中間代碼,編譯好的代碼可以與從其它語言編譯過來的代碼進行交互操作。在.NET中可以交互操作的語言有C#、VB.NET、Visual C++.NET、Visual J#、腳本語言、COM和COM+。

5. 非托管代碼(Unmanaged Code)

在公共語言運行庫環境的外部,由操作系統直接執行的代碼。非托管代碼必須提供自己的垃圾回收、類型檢查、安全支持等服務;它與托管代碼不同,后者從公共語言運行庫中獲得這些服務。

6. 中間語言(MSIL

中間語言(MSIL)在.NET Framework中有非常重要的作用,所有面向.NET的語言都要先編譯成IL,那么它們在邏輯上都需要支持IL的 主要特征。MSIL是將.Net代碼轉化為機器語言的一個中間過程。它是一種介于高級語言和基于Intel的匯編語言的偽匯編語言。當用戶編譯一 個.Net程序時,編譯器將源代碼翻譯成一組可以有效地轉換為本機代碼且獨立于CPU 的指令。當執行這些指令時,實時(JIT)編譯器將它們轉化為CPU特定的代碼。由于公共語言運行庫支持多種實時編譯器,因此同一段MSIL代碼可以被不 同的編譯器實時編譯并運行在不同的結構上。從理論上來說,MSIL將消除多年以來業界中不同語言之間的紛爭。在.Net的世界中可能出現下面的情況:一部 分代碼可以用Effil實現,另一部分代碼使用C#或VB完成的,但是最后這些代碼都將被轉換為中間語言。這給程序員提供了極大的靈活性,程序員可以選擇 自己熟悉的語言,并且再也不用為學習不斷推出的新語言而煩惱了。

7. CTS(Common Type System,通用類型系統)

類 型是數據的一種表達方式,不同編程語言定義的基本數據類型各不相同。既然要實現語言之間的“溝通”,就需要一個規范來實現“不同”數據類型(也許只是名稱 不同,而實質相同)間的映射關系。便于使用.Net Framework在各種語言之間進行交互操作。CTS就完成這個工作。

8. JIT(Just-In-Time)

從全稱也可以看出:強調實時,也就是中間代碼實時執行時,才針對本地計算機的不同,被編譯成本機代碼。

9. 程序集(Assembly)

是.NET程序的最小組成單位。每個程序集都有自己的名稱、版本等信息。程序集通常表現為一個文件(.exe或.dll文件),這樣的程序集被稱為單文件程序集,這種程序集是最常見的。程序集也可以由多個文件組成,每個文件都是一個模塊文件或者是一個資源文件,這樣的程序集被稱為多文件程序集。下面來了解一下如何生成單文件程序集和多文件程序集。

10. PE(可移植可執行Portable Executable)文件

PE文件是一個非常重要的概念,它由PE表頭、CLR表頭、元數據和IL(中間語言)代碼四部分組成。

Ø PE表頭:主要指出了文件的類型,GUI(圖形用戶)、CUI(控制臺)或是DLL(在.NET中DLL特指程序集文件的一種形式,不同于以前的動態鏈接庫文件)。另外該表頭還包括一個時間標記用于表示文件創建的時間。對于僅包含IL代碼的模塊該表頭的大部分信息會被忽略。對于包含有本地CPU代碼的模塊,該表頭還會包含有關本地CPU代碼的一些信息。

Ø CLR表頭:包含標識托管模塊的一些信息(可以被CLR或者一些使用工具解析)。這些信息包括托管模塊所需要的CLR版本號,一些標記,托管模塊入口點方法(MethodDef)元數據標記,以及有關托管模塊的元數據、資源、強命名標記和其他一些意義不是太大的信息的位置和尺寸。

Ø【元數據】(表):該表用于描述代碼中用到的類型和成員,描述的類型和成員有兩類,一是源代碼中定義,一是引用的。元數據總是和包含IL代碼的文件

相關聯,實際上元數據總是和這些代碼一起被嵌入到同一個exe/dll文件中,編譯器總是同時產生元數據和IL代碼,并且總是同時將它們嵌入到生產的托管模

塊中,兩者始終保持同步。元數據的用處:@元數據省去了源代碼編譯時對頭文件和庫文件的需求。這是因為在含有實現類型和成員的IL代碼文件中,已經包含了所有被引用的類型和成員的信息, 編譯器可以直接從托管模塊中讀取元數據來獲得這些信息。@Visual Studio.NET的智能感知(Intellisense)功能是通過分析元數據來實現的。@CLR代碼驗證過程可以利用元數據來確保代碼僅執行“安全”的操作。@利用元數據,可以將一個對象的字段序列化后發送到遠程機器,然后在遠程機器上執行反序列化,從而重新創建對象和它的狀態。@利用元數據,垃圾收集器可以追蹤對象的生存期。對于任何對象,垃圾收集器都能通過元數據來確定該對象的類型,并且可以獲知該對象的哪些字段引 用了其他對象。

ØIL代碼:編譯器在編譯源代碼是產生的指令,CLR運行時將它們編譯成本地CPU指令。

11. 托管模塊(managed module

托管模塊是一個需要CLR才能執行的可移植可執行(Portable executeable 簡稱PE) 文件。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 旌德县| 苏州市| 澜沧| 贵德县| 内江市| 仁怀市| 凤凰县| 突泉县| 汤阴县| 喀喇| 班玛县| 北流市| 万州区| 新郑市| 来安县| 澎湖县| 梅河口市| 凌海市| 新乐市| 醴陵市| 砚山县| 灯塔市| 万荣县| 内乡县| 双城市| 闻喜县| 班玛县| 青神县| 洛宁县| 隆化县| 昭觉县| 金华市| 长兴县| 区。| 怀宁县| 齐河县| 麻江县| 疏勒县| 山西省| 富阳市| 上饶市|