程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 什麼是.Net, IL, CLI, BCL, FCL, CTS, CLS, CLR, JIT,bclfcl

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

編輯:C#入門知識

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


 

什麼是.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.cnblogs.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.cnblogs.com/darrenji/p/4179916.html
查看是否安裝.NET Framework、.NET Framework的版本號、CLR版本號   http://www.cnblogs.com/darrenji/p/3977406.html 
CLR是如何被加載並工作的   http://www.cnblogs.com/darrenji/p/4159259.html

 

什麼是JIT?

 

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved