C# 跨平臺基礎知識以及必知的關鍵術語
跨平臺程序就是可運行在多個操作系統(tǒng)上的程序,這里的操作系統(tǒng)可以是Microsoft Windows、Android、macOS和Linux等。創(chuàng)建跨平臺程序的目標是,只編寫程序一次,然后在支持的操作系統(tǒng)上編譯,部署該程序后,代碼在每個目標操作系統(tǒng)上以相同的方式執(zhí)行,并表現(xiàn)出一致的行為。在過去,即使使用了開源庫(如Mono或Java)也很難實現(xiàn)這個目標,而且如前所述,如果使用完整的.NETFrameworic,并不能真正地創(chuàng)建跨平臺的程序。面臨的許多復雜問題源于跨平臺代碼在使用操作系統(tǒng)服務(如磁盤I/O、安全協(xié)議和網(wǎng)絡訪問)時,對不同操作系統(tǒng)的服務之間存在的細微差別進行處理的方式。
隨著程序員開始將更多注意力放在編寫能夠輕松跨平臺運行的C#代碼上,考慮這些為數(shù)眾多的“必知”概念和術語,有助于打下堅實基礎。下表列舉并描述了這些關鍵術語。
關鍵術語 | 描述 |
硬件平臺 | x86、64位、Itanium、ARM 等 |
軟件平臺 | 操作系統(tǒng):Windows、Linux、Android、macOS、iOS 等 |
跨平臺 | 編寫代碼一次,當針對目標平臺編譯代碼后,就能在任何支持的硬件和軟件平臺上運行代碼 |
生態(tài)系統(tǒng) | 社區(qū)資源、開發(fā)工具和運行時軟件的總稱 |
堆找(stack) | 在一起使用的硬件、軟件和生態(tài)系統(tǒng),用來構建和運行程序,如Windows堆棧、Linux堆找等 |
API | 應用程序編程接口(Application Programming Interface, API)公開了類、委托、枚舉、接口和結構,供其他 程序使用 |
程序集 | —個.dll文件,公開了 API,供其他程序集或可執(zhí)行文件使用 |
標準 | API的正式規(guī)范或協(xié)定 |
關鍵術語 | 描述 |
垂直模型(Verticals) | Windows Forms、ASP.NET、WPF、UWP等:常稱為應用程序模型 |
框架/庫 | API的豐富集合,用于創(chuàng)建專注于特定垂直模型的程序,以程序集的形式出現(xiàn) |
開源 | 由軟件開發(fā)人員的開放社區(qū)編寫和支持的框架和代碼庫??筛鶕?jù)特定開源庫的許可使用對應的庫 |
GitHub | 一個在線的開源代碼存儲庫,用于分享和更新公共可用的和社區(qū)支持的代碼,以及創(chuàng)建這種代碼的分支 |
分支(forking) | 也稱為branch,但暗含著開發(fā)社區(qū)的一種分歧。分支就是用現(xiàn)有的源代碼存儲庫的副本,進行新的獨立 開發(fā)。例如,.NET Core就是.NET Framework的一個分支 |
版本 | 框架的每個版本包含新的或改進的API,還可能包含對bug的修復 |
語義版本 | 此概念采用以下格式來描述修改的規(guī)模和類型:[MAJOR].[MINOR].[PATCH]8如果MAJOR數(shù)字發(fā)生變 化,則該版本的影響比MINOR發(fā)生變化時更大 |
目標框架 | 程序依賴的 API 集合,如 dotnet-sdk-2.0.4-winl0-x64 |
TFM | 目標框架名對象(Target Framework Moniker? TFM)是目標框架的精簡版本,如netstandard2.0或 netcoreapp2.0。TFM常用于讓程序面向特定的框架版本 |
依賴 | 編譯程序或完成某個任務必須用到的一組特定程序集 |
元數(shù)據(jù) | 提供了關于其他數(shù)據(jù)的信息的數(shù)據(jù),如創(chuàng)建日期、創(chuàng)建者和文件大小 |
包 | —組程序集和元數(shù)據(jù) |
元包 | —組相互依賴的包,但沒有自己的庫或程序集 |
NuGet | —個用于.NET的包管理器,可幫助開發(fā)人員創(chuàng)建和使用包 |
BCL | 基類庫(Base Class Library, BCL)是常用類、接口和值類型的一個集合。例如,System.*指令中的類、接口、方法和值類型 |
PCL | 可移植類庫(Portable Class Library, PCL)是一個類庫,不必重新編譯就可以運行在多個.NET垂直模型中 |
運行庫 | 公共語言運行庫(Common Language Runtime,CLR)。CLR管理內(nèi)存分配(垃圾回收)、編譯和執(zhí)行 |
CoreCLR | 與CLR相同,但可跨平臺運行。這是.NET Core的公共語言運行庫引擎 |
CoreFX | .NET Core System.*名稱空間,嚴重依賴于運行庫 |
CoreRT | 類似于CoreCLR運行庫,但沒有JIT編譯器。程序將預先編譯(參見.NET Native),在這個過程中,將移除所有多余的代碼和元數(shù)據(jù) |
.NET Native | 創(chuàng)建的本機代碼將被預先編譯,常用于UWP開發(fā) |
點擊加載更多評論>>