Common Language Runtime

來源:互聯網
上載者:User


CLR是什嗎?
上次講到運行在.NET Framework中的代碼叫做managed code,反之叫做unmanaged code。相比unmanaged code,managed code 有很多好處,比如可以用多種程式設計語言編寫、提高安全性、易於版本控制和程式發布等等。這些都是由CLR提供的。但也有一些不利點,最容易想到的就是代碼運行速度問題了。

要為managed code提供以上功能,CLR必須知道代碼中的資料類型、類和與她有關連的assembly的定義。這些資訊叫做metadata,而metadata就包含在代碼中的某個部分(編譯後)。CLR利用這個metadata載入程式碼片段、管理記憶體、執行方法調用等操作。

.NET出來以前,在不同程式設計語言之間共用原代碼,簡直是不可能的事情。因為每個程式設計語言定義的資料類型不同,而且文法也不同。微軟大師們想到了把資料類型統一的好辦法。這個技術叫CTS(common type system)。現在做項目開發就比較簡單了(用不同語言),比如一個項目組裡有會用VB的,會用C++的。可能以前的方法是把兩個人之間互相調用的功能寫成DLL或COM。但現在不用這麼麻煩了,你直接就可以使用其他語言編寫的代碼了。具體一點,用VB.NET可以繼承C++.NET寫的類,反過來也是可以的。

我們安裝軟體的時候常碰到這樣的提示 - 系統中的組件比要安裝的組件的新,你要替換還是保留?是不是很討厭?!現在開始你就用.NET吧,她不會因為這個“小”問題而打擾你了。因為每個代碼都包含與她相關的metadata,CLR會根據這個資訊來管理代碼的不同版本。而且因為不用把代碼的資訊註冊到註冊表,所以可以用X-COPY的方式安裝代碼(就是簡單的拷貝粘貼了)。

是用VB做好呢?還是用C++做好呢?這些問題是我們做項目的時候常要考慮的問題。但在.NET用什麼程式設計語言已經變得不重要了(但還是有一定的差別,在特定項目中),因為CLR提供CTS(還有base class library),而且都運行在CLR上面。在.NET中VB,C++等語言都有了相當多的提高,而且有了新的語言C#。C#已經申請了標準而且通過,可想而知她的POWE了。大家知道borland也發布了相關的開發工具C# builder。

做個小結

1、.NET代碼都包含與自己相關的資訊叫做metadata。

2、 CLR提供CTS(CLS也有功勞),所以可以在不同程式設計語言之間共用原代碼。

3、 用metadata管理代碼資訊(不是利用註冊表),所以代碼易於安裝。

4、 使用統一的資料類型和類庫,所以程式設計語言的選擇變得不重要了,而且易於團隊開發。

代碼在CLR中的運行過程

1、選擇編譯器

首先CLR選擇編譯器,因為CLR中可以運行不同語言開發出來的代碼。

2、把代碼編譯成MSIL

CLR利用選擇的編譯器產生MSIL(Microsoft intermediate language)和metadata把她們載入到PE(portable executable file)。

MSIL:解釋語言,包含代碼資訊,讓JIT易於編譯成機器語言。與作業系統和程式設計語言無關。

PE:可執行檔格式,windows就是DLL或EXE了。

3、用JIT編譯器把MSIL編譯成機器語言

有兩種方式一種是只編譯當前執行的程式碼片段,另一種是把整個代碼一次性編譯。JIT會檢測代碼的安全性。

4、 執行代碼

代碼首次調用就會編譯成機器代碼,再次調用的時候就不再重新編譯了。

相關工具

-MSIL產生器 - MSIL Assembler(ilasm.exe)

-MSIL反編譯器 - MSIL Assembler(ildasm.exe)

使用法

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpconmsilassemblerilasmexe.asp

相關資料

-PE結構

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconmetadatapefilestructure.asp

參考資料

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconsourcecodelanguage.asp




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。