自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

圖文講解.NET CLR是什么

開發(fā) 后端
文章主要介紹了.NET CLR是什么。兩個圖例可以讓你清晰的知道C#和.NET CLR的區(qū)別,CLR為開發(fā)者提供了哪些服務(wù),讓你深入了解其中的奧秘。

大家首先要清楚的是,.NET平臺與C#不是一回事.這點大家一定要明白,對開發(fā)人員來講他有兩個概念。第一,它是C#,VB.net等程序運行的平臺。第二,它因為為這些語言提供了豐富的類庫(稱之為基類庫),.NET CLR是什么我們現(xiàn)在來一起看看吧。

NET CLR是什么

對于一個將要面向.NET平臺進行開發(fā)的人來說,了解一下.NET平臺的整個構(gòu)成是非常有必要的,如圖1所示即說明了.NET平臺的整體結(jié)構(gòu):

.NET平臺的整體結(jié)構(gòu)

這個圖就是著名的.NET平臺結(jié)構(gòu)圖,從這個圖上可以看到,.NET Framework是在Microsoft.NET平臺上開發(fā)的基礎(chǔ),ASP.NET、Windows Forms 和VS.NET都不過是.NET平臺開發(fā)的一部分,他的用于.NET應(yīng)用程序的開發(fā)及展示。.NET平臺的核心技術(shù)為:通用語言運行時(CLR:Common Language Runtiome)、基類庫(BCL:Base Class Library)、.NET語言及Visual Studio.NET

從這個圖上可以看出,.NET Framework是架構(gòu)在Windows平臺上的一個虛擬的運行平臺,你可以想象將最下層Windows換做其他的操作系統(tǒng),例如說Linux,一樣可以實現(xiàn)使用符合CLS(Common Language Specification,通用語言規(guī)范)的.NET語言,(VB.NET、C#、JScript.NET等),來創(chuàng)建ASP.NET或Windows Form(可能會叫Linux Forms)應(yīng)用程序的功能,這其實就是Mono計劃要實現(xiàn)的功能。所以可以這么認為,理論上,C#是一種可以跨平臺的語言,這很象Java。C#另一個比較象Java的地方是,它也是一種(特殊意義上的)語言,同Java一樣,C#編寫的程序代碼也是先通過C#編譯器編譯為一種特殊的字節(jié)代碼, (Microsoft Intermediate Language,MSIL,微軟)中間語言,運行時再經(jīng)由特定的編譯器(JIT編譯器,Just In tIME,  JITer)編譯為機器代碼,以供操作系統(tǒng)執(zhí)行.
 不僅是C#語言,所有.NET語言(將會包括我們常用的幾十種現(xiàn)代的編碼語言)都可以編寫面向CLR的程序代碼,這種代碼在.NET中被稱為托管代碼(Managed Code),所有的Managed Code都直接運行在CLR上,具有與平臺無關(guān)的特性。

解釋性的語言很安全,并且可以通過他的運行平臺為其賦予更多的功能,例如自動內(nèi)存管理,異常處理等,事實上,C#語言的許多特點都是由CLR提供的,如圖2所示的CLR結(jié)構(gòu)圖說明了這一點。

CLR結(jié)構(gòu)圖

從圖2可以看到,C#所具有的許多特點都是由CLR提供的,如類型安全(Type Checker)、垃圾回收(Garbage Collector)、異常處理(Exception Manager)、向下兼容(COM Marshaler)等,具體的說,.NET上的CLR為開發(fā)者提供如下的服務(wù):
◆平臺無關(guān):CLR實際上是提供了一項使用了虛擬機技術(shù)的產(chǎn)品,他構(gòu)架在操作系統(tǒng)之上,并不要求程序的運行平臺是 Windows系統(tǒng),只要是能夠支持它的運行庫的系統(tǒng),都可以在上面運行.NET應(yīng)用。所以,一個完全由托管代碼組成的應(yīng)用程序,只要編譯一次,就可以在任何支持.NET的平臺上運行.
◆跨語言集成:CLR語序開發(fā)這以任何語言進行開發(fā),用這些語言開發(fā)的代碼,可以在CLR環(huán)境下緊密無縫的進行交叉調(diào)用,例如,可以用VB聲明一個基類對象,然后在C#代碼中直接創(chuàng)建次基類的派生類。
◆自動內(nèi)存管理:CLR提供了拉架收集機制,可以自動管理內(nèi)存。當對象或變量的生命周期結(jié)速后,CLR會自動釋放他們所占用的內(nèi)存.
◆跨語言異處理
◆版本控制
◆.NET安全
◆簡單的組件互操作性。
◆自描述組件:自描述組件是指將所有數(shù)據(jù)和代碼都放在一個文件中的執(zhí)行文件。自描訴組件可以大大簡化系統(tǒng)的開發(fā)和配置,并且改進系統(tǒng)的可靠性。

通用語言運行時(CommonLanguageRuntiome,CLR)最早被稱為下一代Windows服務(wù)運行時(NGWS Runtime).它是直接建立在操作系統(tǒng)上的一個虛擬環(huán)境,主要的任務(wù)是管理代碼的運行。CLR現(xiàn)在支持幾十種現(xiàn)代的編程語言為它編寫代碼,然后以一種中間語言(Intermediate Langeoage,IL)代碼的形成被執(zhí)行。并且,CLR還提供了許多功能以簡化代碼的開發(fā)和應(yīng)用配置,同時也改善了應(yīng)用程序的可靠性。如你所知,如果某種語言的編譯器是以運行時為目標的,那么利用該語言開發(fā)生成的代碼在.NET中被稱為托管代碼,因為這樣的代碼是直接運行在CLR上的,所以具有與平臺無關(guān)的特點。

在.NET平臺結(jié)構(gòu)圖中,CLR的上面是.NET的基類庫,這組基類庫包括從基本輸入輸出到數(shù)據(jù)訪問等各方面,提供了一個統(tǒng)一的面向?qū)ο蟮?,層次化的,可擴展的編程接口。從.NET平臺結(jié)構(gòu)圖中也可以看到,基類庫可以被各種語言調(diào)用和擴展,也就是說不管是 C#,VB.NET還是VC++.NET,都可以自由的調(diào)用,.NET的類庫,因為C#自身只有77個關(guān)鍵字,而且語法對程序員來說無需費工夫?qū)W習。 BCL則相反,它包含了4500個以上的類和無數(shù)的方法,屬性,在你的C#程序中隨時都可能會用到它來完成自己的任務(wù).

還有一個很重要的概念你需要明白,這就是公共語言架構(gòu)(Common Language Infrastructure,CLI).CLI是CLR的一個子集,也就是.NET中最最終對編譯成MSIL代碼的應(yīng)用程序的運行環(huán)境進行管理的那一部分。在CLR結(jié)構(gòu)圖中CLI位于下半部分,主要包括類加載器(Class Loader)、實時編譯器(IL To Native Compilers)和一個運行時環(huán)境的垃圾收集及將使用任何語言編寫的代碼,通過其特定的編譯器轉(zhuǎn)換為MSIL代碼之后運行其上,甚至還可以自己寫 MSIL在CLI上運行.以上就是介紹.NET CLR是什么。

【編輯推薦】

  1. 使用CLR存儲過程來傳回訊息實戰(zhàn)案例
  2. 經(jīng)典案例之創(chuàng)建CLR存儲過程
  3. 概括Visual Studio CLR調(diào)試器兩種方法
  4. Visual Studio中SQL SERVER CLR代碼調(diào)試工具使用講解
  5. 全面概括SQL SERVER調(diào)用CLR類庫實現(xiàn)步驟
責任編輯:田樹 來源: cnblogs
相關(guān)推薦

2009-09-17 18:27:40

CLR是什么

2009-10-29 09:48:12

DAO.NET Dat

2009-09-17 18:40:12

CLR是什么

2009-11-03 15:24:14

ADO.NET對象模型

2009-11-04 13:20:28

ADO.NET Dat

2009-09-18 13:05:59

.NET CLR

2009-10-23 09:36:25

.Net Compac

2009-10-23 10:50:04

CLR安全性

2009-09-18 10:40:05

CLR存儲過程

2009-09-25 17:03:29

Hibernate是什

2009-10-22 09:29:23

CLR是什么

2009-10-13 17:08:10

CLR VB.NET

2010-09-08 17:40:56

協(xié)議棧是什么

2009-10-22 11:25:08

CLR函數(shù)壓縮

2010-09-06 16:53:38

Windows PPP

2012-06-12 09:46:21

Linux碎片整理

2009-09-18 11:13:09

.Net CLR

2009-03-17 16:29:53

SQL ServerCLR.NET Framew

2009-09-18 11:29:23

.NET CLR

2009-10-23 11:12:21

SQL Server
點贊
收藏

51CTO技術(shù)棧公眾號