位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C# > 問(wèn)題詳情

C# 跨平臺(tái)基礎(chǔ)知識(shí)以及必知的關(guān)鍵術(shù)語(yǔ)

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-09

    跨平臺(tái)程序就是可運(yùn)行在多個(gè)操作系統(tǒng)上的程序,這里的操作系統(tǒng)可以是Microsoft Windows、Android、macOS和Linux等。創(chuàng)建跨平臺(tái)程序的目標(biāo)是,只編寫程序一次,然后在支持的操作系統(tǒng)上編譯,部署該程序后,代碼在每個(gè)目標(biāo)操作系統(tǒng)上以相同的方式執(zhí)行,并表現(xiàn)出一致的行為。在過(guò)去,即使使用了開(kāi)源庫(kù)(如Mono或Java)也很難實(shí)現(xiàn)這個(gè)目標(biāo),而且如前所述,如果使用完整的.NETFrameworic,并不能真正地創(chuàng)建跨平臺(tái)的程序。面臨的許多復(fù)雜問(wèn)題源于跨平臺(tái)代碼在使用操作系統(tǒng)服務(wù)(如磁盤I/O、安全協(xié)議和網(wǎng)絡(luò)訪問(wèn))時(shí),對(duì)不同操作系統(tǒng)的服務(wù)之間存在的細(xì)微差別進(jìn)行處理的方式。

    隨著程序員開(kāi)始將更多注意力放在編寫能夠輕松跨平臺(tái)運(yùn)行的C#代碼上,考慮這些為數(shù)眾多的“必知”概念和術(shù)語(yǔ),有助于打下堅(jiān)實(shí)基礎(chǔ)。下表列舉并描述了這些關(guān)鍵術(shù)語(yǔ)。

關(guān)鍵術(shù)語(yǔ)

描述

硬件平臺(tái)

x86、64位、Itanium、ARM 

軟件平臺(tái)

操作系統(tǒng):Windows、Linux、AndroidmacOS、iOS 

跨平臺(tái)

編寫代碼一次,當(dāng)針對(duì)目標(biāo)平臺(tái)編譯代碼后,就能在任何支持的硬件和軟件平臺(tái)上運(yùn)行代碼

生態(tài)系統(tǒng)

社區(qū)資源、開(kāi)發(fā)工具和運(yùn)行時(shí)軟件的總稱

堆找(stack)

在一起使用的硬件、軟件和生態(tài)系統(tǒng),用來(lái)構(gòu)建和運(yùn)行程序,如Windows堆棧、Linux堆找等

API

應(yīng)用程序編程接口(Application Programming Interface, API)公開(kāi)了類、委托、枚舉、接口和結(jié)構(gòu),供其他 程序使用

程序集

—個(gè).dll文件,公開(kāi)了 API,供其他程序集或可執(zhí)行文件使用

標(biāo)準(zhǔn)

API的正式規(guī)范或協(xié)定

關(guān)鍵術(shù)語(yǔ)

描述

垂直模型(Verticals)

Windows Forms、ASP.NET、WPFUWP等:常稱為應(yīng)用程序模型

框架/庫(kù)

API的豐富集合,用于創(chuàng)建專注于特定垂直模型的程序,以程序集的形式出現(xiàn)

開(kāi)源

由軟件開(kāi)發(fā)人員的開(kāi)放社區(qū)編寫和支持的框架和代碼庫(kù)。可根據(jù)特定開(kāi)源庫(kù)的許可使用對(duì)應(yīng)的庫(kù)

GitHub

一個(gè)在線的開(kāi)源代碼存儲(chǔ)庫(kù),用于分享和更新公共可用的和社區(qū)支持的代碼,以及創(chuàng)建這種代碼的分支

分支(forking)

也稱為branch,但暗含著開(kāi)發(fā)社區(qū)的一種分歧。分支就是用現(xiàn)有的源代碼存儲(chǔ)庫(kù)的副本,進(jìn)行新的獨(dú)立

開(kāi)發(fā)。例如,.NET Core就是.NET Framework的一個(gè)分支

版本

框架的每個(gè)版本包含新的或改進(jìn)的API,還可能包含對(duì)bug的修復(fù)

語(yǔ)義版本

此概念采用以下格式來(lái)描述修改的規(guī)模和類型:[MAJOR].[MINOR].[PATCH]8如果MAJOR數(shù)字發(fā)生變 化,則該版本的影響比MINOR發(fā)生變化時(shí)更大

目標(biāo)框架

程序依賴的 API 集合,如 dotnet-sdk-2.0.4-winl0-x64

TFM

目標(biāo)框架名對(duì)象(Target Framework Moniker? TFM)是目標(biāo)框架的精簡(jiǎn)版本,如netstandard2.0netcoreapp2.0。TFM常用于讓程序面向特定的框架版本

依賴

編譯程序或完成某個(gè)任務(wù)必須用到的一組特定程序集

元數(shù)據(jù)

提供了關(guān)于其他數(shù)據(jù)的信息的數(shù)據(jù),如創(chuàng)建日期、創(chuàng)建者和文件大小

—組程序集和元數(shù)據(jù)

元包

—組相互依賴的包,但沒(méi)有自己的庫(kù)或程序集

NuGet

—個(gè)用于.NET的包管理器,可幫助開(kāi)發(fā)人員創(chuàng)建和使用包

BCL

基類庫(kù)(Base Class Library, BCL)是常用類、接口和值類型的一個(gè)集合。例如,System.*指令中的類、接口、方法和值類型

PCL

可移植類庫(kù)(Portable Class Library, PCL)是一個(gè)類庫(kù),不必重新編譯就可以運(yùn)行在多個(gè).NET垂直模型中

運(yùn)行庫(kù)

公共語(yǔ)言運(yùn)行庫(kù)(Common Language RuntimeCLR)。CLR管理內(nèi)存分配(垃圾回收)、編譯和執(zhí)行

CoreCLR

CLR相同,但可跨平臺(tái)運(yùn)行。這是.NET Core的公共語(yǔ)言運(yùn)行庫(kù)引擎

CoreFX

.NET Core System.*名稱空間,嚴(yán)重依賴于運(yùn)行庫(kù)

CoreRT

類似于CoreCLR運(yùn)行庫(kù),但沒(méi)有JIT編譯器。程序?qū)㈩A(yù)先編譯(參見(jiàn).NET Native),在這個(gè)過(guò)程中,將移除所有多余的代碼和元數(shù)據(jù)

.NET Native

創(chuàng)建的本機(jī)代碼將被預(yù)先編譯,常用于UWP開(kāi)發(fā)


繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部