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

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

什么是.Net, IL, CLI, BCL, FCL, CTS, CLS, CLR, JIT

2019-11-17 02:25:10
字體:
來源:轉載
供稿:網友

什么是.Net, IL, CLI, BCL, FCL, CTS, CLS, CLR, JIT

什么是.NET?

起源:比爾蓋茨在2000年的PRofessional Developers Conference介紹了一個嶄新的平臺叫作Next Generation Windows Service,也就是后來的.NET。

軟件層:.NET可以被看作是介于操作系統和編程語言之間的軟件層,它可以支持多種編程語言,包括C#,VB.NET,C++,F#,等等。

用來產生托管代碼的框架、平臺:傳統的編譯方式是"源代碼→編譯→可執行文件",在.NET中編譯方式是"源代碼→編譯→程序集→可執行文件"。編譯后的程序集包含IL代碼和元數據,在運行時再轉換成機器代碼。

按開發到執行階段來說:開發階段.NET提供了龐大的類庫,在程序執行階段,.NET提供了一個CLR運行時環境幫助我們實時編譯程序、進行安全檢查、執行垃圾回收,管理內存等。

規范:.NET包含了眾多的規范,比如CIL,BCL, FCL, CTS, CLS,等等。

什么是IL?

IL,Intermediage Language,中間語言,并不是CPU可以直接執行的本地機器語言,在轉換成計算機可以識別的指令之前,還要進行一個被稱為"Just in time"的二次編譯過程。在.NET框架下,任何語言,比如C++,VB.NET,C#,等等,在經過各自的編譯器編譯之后,都會被轉換成中間語言。IL還有另外的2種叫法:CIL,Common Intermediate Language;MSIL, Microsoft Intermediate Language。

查看IL代碼,參考這里:http://www.survivalescaperooms.com/darrenji/p/3967669.html

什么是CLI?

CLI,Common Language Infrastructure, 公用語言基礎, .NET的各種規范都遵循了這個標準。

什么是BCL?

BCL, Basic Class Library, .NE為我們提供的基類庫。

創建一個控制臺項目。

把鼠標停留在Console上,并按F12。

發現Console是System的成員,點擊System。

發現System是mscorlib的成員,點擊mscorlib。

發現mscorlib是一個程序集,位于C:/Program Files (x86)/Reference Assemblies/Microsoft/Framework/.NETFramework/v4.5/mscorlib.dll

也就是mscorlib包含了.NET的基類庫。

string類型是否屬于基類庫呢?

把鼠標停留在string關鍵字上,并按F12。

發現string實際上是System.String類型,原來.NET為我們把關鍵字string和CLI標準System.String作了映射。

依此類推, btye映射了System.Byte, short映射了System.Int16, 等等。

像string, byte, short,等等,這些都是基元類型。所以,凡是把語言本省的關鍵字與CLI的類型映射起來的,都叫基元類型。

什么是FCL?

FCL, Framework Class Library, 框架類庫,提供的類庫更多,BCL是FCL的子集。比如,在asp.net MVC下提供了System.Web.MVC。

什么是CTS?

CTS, Common Type System, 公共類型系統。CTS規定了在編程語言中可以定義的方面,包括:類、結構、委托,類中的方法、字段、屬性、事件等,還定義了一些約束,比如所有類型都隱式繼承自System.Object類型。

什么是CLS?

CLS, Common Language Specification, 公共語言規范,必須完全符合CTS的標準,是CTS的子集。比如C#編譯生成的程序集有很多類,VB編譯生成的程序集也有很多類,現在VB編譯需要引用C#程序集的某個類,怎么辦呢?

我們需要讓C#程序集中,需要被引用的這個類符合CLS規范,.NET為我們準備了CLSCompliant特性。

[assembly:CLSCompliant(true)]
public class SomeClass
{    
}

什么是CLR?

CLR, Common Language Runtime, 公用語言運行時。IL代碼需要通過CLR進行即時編譯才能轉換成機器代碼。大致過程是:

編程語言代碼編譯生成程序集。程序集中的PE/COFF頭包含了供Windows操作系統查看和使用的信息;CLR頭告訴操作系統這是一個.NET程序集;程序集清單描述了程序集本身的信息,比如程序集標識、程序集包含的資源、組成程序集的文件,等等;元數據描述了程序集包含的內容,比如包含的模塊、類型、類型成員、類型成員的可見性,等等。

CLR開始工作:管理應用程序域,加載和運行程序集, 安全檢查, 將IL代碼JIT編譯成機器代碼,異常處理, 垃圾回收,等等。

相關文章:

CLR如何加載程序集以及程序集版本策略 http://www.survivalescaperooms.com/darrenji/p/4179916.html查看是否安裝.NET Framework、.NET Framework的版本號、CLR版本號 http://www.survivalescaperooms.com/darrenji/p/3977406.htmlCLR是如何被加載并工作的 http://www.survivalescaperooms.com/darrenji/p/4159259.html

什么是JIT?

JIT, just in time, 即時編譯。在CLR中,把IL轉換成機器代碼的工作交給了JIT編譯器。即時編譯只在方法第一次被調用時發生。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 神木县| 天全县| 巴林右旗| 清原| 天气| 临洮县| 牙克石市| 福清市| 将乐县| 万州区| 清涧县| 泸定县| 凉山| 荥经县| 奉化市| 军事| 旬邑县| 教育| 宁阳县| 新乡县| 浦东新区| 迁西县| 区。| 个旧市| 文登市| 遂平县| 隆德县| 天长市| 长沙县| 博爱县| 白水县| 山阴县| 龙州县| 千阳县| 永仁县| 安仁县| 九台市| 喜德县| 承德县| 阳山县| 凭祥市|