您好,登錄后才能下訂單哦!
CLR(Common Language Runtime):公共語言運行時,是一個可由多種編程語言使用的"運行時";
在運行時,CLR根本不關心開發人員用的是哪一種語言來變寫代碼,它只關注語言是否是面向CLR(面向運行時)的.
內存管理、程序集加載、安全性、異常處理和線程同步。
3:如圖:
無論是用的是哪一種編譯器,結果都是一個托管模塊(managed module),托管代碼時一個標準的32位/64位Microsoft Windows可移植執行體(PE32/PE32+)文件.
本地代碼編譯器,生成的是面向特定CPU架構(X86,X64或IA64)的代碼.相反,每個面向CLR的編譯器生成的都是IL(中間語言)代碼,IL代碼也被稱為托管代碼.
除了生成IL,面向CLR的每個編譯器還要在每個托管模塊中生成完整的元數據,元數據是一組數據表.其中一些數據表描述了模塊中定義的內容,元數據其實就是編譯器所生成的一些完整數據.
4:CLR實際是不和模塊一起工作的,它是和程序集一起工作的.
5:加載公共語言運行時
我們生成的每個程序集既可以是一個可執行應用程序,也可以是一個DLL,最終是由CLR管理這些程序集中的代碼的執行,所以必須在運行機器中安裝.NET FrameWork.WIndows一些版本系統已經內置打包了好了.NET FrameWork.不過需要我們手動的開啟.可以在控制面板中進行啟動在此就不做詳細解釋.作為開發人員,這是不需要解釋的.
執行一個方法,第一必須把它的IL轉換為本地CPU指令,這是CLR的JIT的本質.
如圖:
就在Main方法執行之前,CLR會檢測Main的代碼引用的所有的類型,這導致CLR分配一個內部數據結構,用于管理對所引用的類型的訪問.
一個方法只有在首次調用時,才會造成一些性能損失,以后對該方法的所有調用都以本地代碼的形式全速運行.無需重新驗證IL并把它編譯成本地代碼.
JIT編譯器將本地CPU指令存儲到動態內存中,一旦應用程序終止,編譯好的代碼也會被丟棄,所以,如果將來再次運行應用程序,或者同時啟動應用程序的兩個實例,JIT編譯器必須再次將IL編譯成本地指令.
IL是基于棧的,所以它的所有指令都要將操作數壓入(push)一個執行棧,并從棧彈出(POP)結果.由于IL沒有提供操作寄存器的指令,所以人們可以很容易地創建新的語言和編譯器,生成CLR的代碼.IL指令是無類型的.IL的好處在于是健壯和安全的,因為它編譯為CPU指令,CPU會進行驗證是否安全.
FCL(Framework Class Library):是一組DLL程序集的統稱,其中含有很多的類型定義,每個類型都公開了一些功能.
Web服務:Web service 技術或者WCF技術,可以非常簡單的處理通過Internet發送的消息.
Web窗體應用程序:Web Form
Windows應用程序:開發windows GUI應用程序.
富Internet應用程序:Silverlight技術,可以構建通過Internet來部署的GUI應用程序.這種程序能在Web瀏覽器的內部或外部運行,還可以在非Windows操作系統與移動設備傻瓜運行.
Window控制臺:提供簡單快捷方便的方式,生成應用程序,編譯器.
Window服務:可以通過.NET FrameWork 生成"服務"應用程序.
數據庫存儲過程:編寫存儲過程
組件庫:.NET FrameWord允許生成獨立的程序集(組件),其中包含的類型可以輕松集成到任意的程序庫中.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。