C# 本質論


托管執行和公共語言基礎結構

       處理器不能直接解釋一個程序集.程序集采用的是另一種語言,即公共中間語言(Common Intermediate Language, CIL),或者簡稱為中間語言(IL).

       注意 CIL的另一種說法即MSIL, 即Microsoft IL.

       C#編譯器只是將C#源代碼文件轉換成為CIL.為了將CIL代碼轉換成處理器能夠理解的機器碼,還要執行一個額外的步驟(該步驟通常是在執行時完成的).這個步驟涉及C#執行中的一個重要元素:VES(Virtual Execution System,虛擬執行系統).VES也被人稱為“運行時”,它根據需要來編譯CIL代碼,這個過程稱為即時編譯或者JIT編譯(just-in-time compilation).

      

       托管代碼(managed code) :代碼在"運行時"這樣一個"代理"的上下文中執行.

       托管執行(managed execution):在"運行時"的控制下執行的過程.

       非托管代碼(unmanaged code):在執行過程中不需要"運行時"的代碼.

     

       CLI(common Languageinfrastructure,公共語言基礎結構)

       VES規范被包含在一個包容面更廣的規范中,即CLI(common Languageinfrastructure,公共語言基礎結構)規范.作為一個國際行標准,CLI包含了以下幾方面的規范.

  1.  VES或"運行時".
  2.  CIL
  3.  為語言互操作性提供支持的一個類型系統,成為CTS(Common Type System,公共類型系統).
  4.  如何編寫能通過各種CLI兼容語言訪問的庫的指導原則,這部分內容具體放在公共語言規范(Common Language Specification CLS)中.
  5.  市各種服務能被CLI(包括程序集的布局或文件格式規范)識別的元數據
  6.  一個公共編程框架,稱為基類庫(Base Class Library, BCL),所有語言的開發者都能利用它.
  7.  語言互操作性:不同源語言之間的互操作性.語言編譯器將每一種源語言轉換成相同的中間語言(CIL),從而實現這種互操作性.
  8.  類型安全:檢查類型間的轉換,確保只有相互兼容的類型才會進行轉換.這有助於防止發生緩沖區溢出.造成安全問題的一個主要誘因.
  9.  代碼訪問安全性:程序集開發者的代碼有權在計算機上執行的證明.
  10.  垃圾回收
  11.  平台可移植性
  12.  BCL


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM