C/C++,  C#

搞懂 C++/CLI CLR 等相關名詞定義

在公司需要用 C++ 來做 UI 介面,其中遇到一些關鍵字,想說順便了解一下好了,原本這是要寫在上一篇的內容,只是我手殘沒存到,只好重新寫一篇記下 CLI CLR 等不專業名詞定義XD,由於是寫給自己看,如有錯誤請不吝指導。

C++/CLI

這只是披著 C++ 的皮來連接 .NET Framework API,其實用這個開發程式資源少的可憐,尤其是要開發 UI 更是少之又少,下方參考第一個連結,是我覺得為數不多用 C++/CLI 開發 UI 的教學好網站,因為官方自己也都說直接去用 C# 來開發…

圖內容取自微軟官方文檔

回到正題XD,簡單講 C++/CLI 就是用來規範出連接 .NET Framework 的標準,以使用相關 .NET 類別 (class) 及資料 類型 (type)。

CLI、CLR、CIL

通用語言基礎架構 (Common Language Infrastructure,CLI)

制定一系列程式執行規範、標準。其詳細規範涵蓋以下內容

  • 通用型別系統(Common Type System, CTS)
  • 元資料系統(Metadata)
  • 通用語言規範(Common Language Specification, CLS)
  • 虛擬執行系統(Virtual Execution System, VES)
  • 通用中間語言(Common Intermediate Language, CIL)
  • 框架(Framework)

通用中間語言 (Common Intermediate Language,CIL)

將 C#、VB 等 .NET 框架程式語言編譯成 CLR 要執行的低階語言。

通用語言運行庫 (Common Language Runtime,CLR)

用來實現 CLI 架構,我自己理解將不同平台程式處理成機器碼。主要功能如下:

  • 基礎類別庫支援 Base Class Library Support
  • 記憶體管理 Memory Management
  • 執行緒管理 Thread Management
  • 垃圾回收 Garbage Collection
  • 安全性 Security
  • 類型檢查 Type Checker
  • 異常管理 Exception Manager
  • 除錯管理 Debug Engine
  • 中間碼(MSIL)到機器碼(Native)編譯
  • 類別裝載 Class Loader

CLI 執行機制

.NET 框架架構

除了藍色區塊,其他都是基於 CLI 制定。

圖取自[Adapted] How to understand .NET Framework (CLI, CLS, CTS, CLR, FCL, BCL) – Programmer Sought

框架類別函式庫 (Frameworl Class Library,FCL)

用於 .NET 的類別函式庫,主要可區分為兩部分,一部分是基礎類別,另一部分稱為其他類別。

基礎類別 (Base Class Library,BCL),顧名思義,就是並易一些基本功能,如:IO、String、Net …等。

其他類別,基本上是基於 BCL 進行功能擴展。如:ADO.NET、ASP.NET、Windows Forms …等,而這些類別讓我們更家容易編寫自己的程式。

Common Language Specification (CLS)、Common Type System (CTS)

通用語言規範 (Common Language Specification,CLS) 與通用類型系統 (Common Type System,CTS),是屬於 CLI 部分的內容,主要目的是確保不同平台的程式語言可以相容於 .NET 框架。例如:C# int 及 VB integer 映射到System.Int32。

結語

關於 .NET 還是有許多東西不明白,本來是因為工作遇到 C++/CLI 的應用程式介面開發,才開始去查 .NET 的相關知識,沒想到迸出一堆新名詞,雖說我其實也不太需要用 C# 寫程式,所以不懂 .NET 應該也沒差XD,而且目前工作上還是以 C 語言及 Python 為主,但 .NET 框架算是最常被使用的技術,許多公司也是以 C# 來開發應用程式,所以了解一下應該不吃虧吧!!

Refer

留下一個回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *