微軟.NET Core技術(shù)特性簡述

微軟.net core目前已更新至3.0版本,其技術(shù)風(fēng)險(xiǎn)已經(jīng)比較低嚷节,今天對相關(guān)其技術(shù)特性做一個(gè)簡單的介紹。

.NET Core的特點(diǎn):

·跨平臺:可在 Windows、macOS 和 Linux 操作系統(tǒng)上運(yùn)行远寸。

·跨體系結(jié)構(gòu)保持一致:在多個(gè)體系結(jié)構(gòu)(包括 x64、x86 和 ARM)上以相同的行為運(yùn)行代碼屠凶。

·命令行工具:包括可用于本地開發(fā)和持續(xù)集成方案中的易于使用的命令行工具驰后。

·部署靈活:可以包含在應(yīng)用或已安裝的并行(用戶或系統(tǒng)范圍安裝)中。 可搭配Docker 容器使用矗愧。

·兼容性:.NET Core 通過 .NET Standard 與 .NET Framework灶芝、Xamarin 和 Mono 兼容。

·開放源代碼:.NET Core 平臺是開放源代碼贱枣,使用 MIT 和 Apache 2 許可證监署。.NET Core 是一個(gè).NET Foundation 項(xiàng)目。

·由 Microsoft 支持:.NET Core 由 Microsoft該項(xiàng)目提供支持纽哥。

語言

可以使用 C#钠乏、Visual Basic 和 F# 語言編寫適用于.NET Core 的應(yīng)用程序和庫。這些語言可在你喜歡的文本編輯器或集成開發(fā)環(huán)境 (IDE) 中使用春塌,包括:

Visual Studio

Visual Studio Code

Sublime Text

Vim

這種集成部分由OmniSharp和Ionide項(xiàng)目的參與者提供晓避。

API

.NET Core 公開了多種方案的 API,以下介紹了幾種:

基元類型只壳,例如bool和int俏拱。

集合,例如System.Collections.Generic.List和System.Collections.Generic.Dictionary吼句。

實(shí)用類型锅必,例如System.Net.Http.HttpClient和System.IO.FileStream。

數(shù)據(jù)類型,例如 System.Data.DataSet和DbSet搞隐。

高性能類型驹愚,例如 System.Numerics.Vector和Pipelines。

.NET Core 通過實(shí)現(xiàn) .NET Standard 規(guī)范提供 .NET Framework 和 Mono API 的兼容性劣纲。

框架

在.NET Core 之上建立了多個(gè)框架:

ASP.NET Core

Windows 10 通用 Windows 平臺 (UWP)

Tizen

撰寫

.NET Core 包括以下部分:

.NET Core 運(yùn)行時(shí):提供類型系統(tǒng)逢捺、程序集加載、垃圾回收器癞季、本機(jī)互操作和其他基本服務(wù)劫瞳。.NET Core 框架庫:提供基元數(shù)據(jù)類型、應(yīng)用編寫類型和基本實(shí)用程序绷柒。

ASP.NET 運(yùn)行時(shí):提供一個(gè)框架來生成基于云且連接到 Internet 的新式應(yīng)用程序志于,例如 Web 應(yīng)用、IoT 應(yīng)用和移動(dòng)后端辉巡。

.NET Core CLI 工具和語言編譯器(Roslyn 和 F#):提供 .NET Core 開發(fā)人員體驗(yàn)恨憎。

dotnet 工具:用于啟動(dòng) .NET Core 應(yīng)用和 CLI 工具。 它選擇運(yùn)行時(shí)并托管運(yùn)行時(shí)郊楣,提供程序集加載策略并啟動(dòng)應(yīng)用和工具憔恳。

這些組件采用以下方式分布:

.NET Core 運(yùn)行時(shí) -- 包括 .NET Core 運(yùn)行時(shí)和框架庫。

ASP.NET Core 運(yùn)行時(shí) -- 包括 ASP.NET Core 和 .NET Core 運(yùn)行時(shí)以及框架庫净蚤。

.NET Core SDK -- 包括 .NET CLI 工具钥组、ASP.NET Core 運(yùn)行時(shí)以及 .NET Core 運(yùn)行時(shí)和框架。

開源

.NET Core是開源的(MIT 許可證)今瀑,由 Microsoft 于 2014 年提供給 .NET Foundation程梦。它現(xiàn)在是最活躍的 .NET Foundation 項(xiàng)目之一。個(gè)人和公司可出于個(gè)人橘荠、學(xué)術(shù)或商業(yè)等目的對其進(jìn)行使用屿附。許多公司將 .NET Core 用作應(yīng)用、工具哥童、新平臺和托管服務(wù)的一部分挺份。其中某些公司在 GitHub 上為 .NET Core 做出了巨大貢獻(xiàn),并作為.NET Foundation Technical Steering Group(.NET Foundation 技術(shù)控制組)的成員為產(chǎn)品方向提供指導(dǎo)贮懈。

針對適應(yīng)性而設(shè)計(jì)

經(jīng)過構(gòu)建匀泊,.NET Core 與其他 .NET 產(chǎn)品非常相似,但也存在獨(dú)特性朵你。 它旨在實(shí)現(xiàn)對新平臺和工作負(fù)荷廣泛的適應(yīng)性各聘,還提供了多個(gè) OS 和 CPU 端口(且可能會(huì)移植到更多端口上)。

該產(chǎn)品分為幾個(gè)部分抡医,使各個(gè)部件能夠在不同的時(shí)間適應(yīng)新的平臺躲因。 必須將運(yùn)行時(shí)和特定于平臺的基礎(chǔ)庫作為一個(gè)單元進(jìn)行移植。 與平臺無關(guān)的庫應(yīng)在所有平臺上按照構(gòu)建的原樣運(yùn)行。 在減少特定于平臺的實(shí)現(xiàn)來提高開發(fā)人員效率方面存在項(xiàng)目偏差毛仪,但每當(dāng)可以此方式全部或部分實(shí)現(xiàn)算法或 API 時(shí)搁嗓,都應(yīng)首選與平臺無關(guān)的 C# 代碼。

人們經(jīng)常會(huì)問箱靴,為支持多個(gè)操作系統(tǒng)應(yīng)如何實(shí)現(xiàn) .NET Core。 他們還會(huì)問是否存在單獨(dú)的實(shí)現(xiàn)荷愕,或是否使用 conditional compilation(條件編譯)衡怀。 這兩者都在用,但強(qiáng)烈偏向條件編譯安疗。

可以在下面的圖表看出大多數(shù) CoreFX 都是與平臺無關(guān)的代碼抛杨,該代碼可在所有平臺共享。 不限平臺的代碼可實(shí)現(xiàn)為在所有平臺上使用的單個(gè)可移植程序集荐类。

Windows 和 Unix 實(shí)現(xiàn)大小相似怖现。

Windows 的實(shí)現(xiàn)范圍更廣,這是因?yàn)?CoreFX 會(huì)實(shí)現(xiàn)某些僅適用于 Windows 的功能(如 Microsoft.Win32.Registry)玉罐,但尚未實(shí)現(xiàn)很多僅適用于 Unix 的概念屈嗤。你還將發(fā)現(xiàn)大多數(shù) Linux 和 macOS 實(shí)現(xiàn)都跨 Unix 實(shí)現(xiàn)共享,而特定于 Linux 和 macOS 的實(shí)現(xiàn)大小大致相同吊输。

.NET Core 中既存在平臺特定的庫饶号,也存在與平臺無關(guān)的庫。

可以查看幾個(gè)示例中的模式:

CoreCLR是特定于平臺的季蚂,它建立在內(nèi)存管理器和線程計(jì)劃程序等操作系統(tǒng)子系統(tǒng)的基礎(chǔ)上茫船。

考慮到每個(gè)OS上的存儲和加密API 都有所不同,System.IO和System.Security.Cryptography.Algorithms是特定于平臺的扭屁。

考慮到它們是通過數(shù)據(jù)結(jié)構(gòu)創(chuàng)建和操作算谈,System.Collections和System.Linq是與平臺無關(guān)的。

與其他 .NET 實(shí)現(xiàn)比較

通過將 .NET Core 與現(xiàn)有的 .NET 實(shí)現(xiàn)進(jìn)行比較料滥,可能更容易了解其大小和形狀然眼。

與 .NET Framework 比較

.NET 由 Microsoft 于 2000 年首次發(fā)布,而后發(fā)展至今幔欧。近20年以來罪治,.NET Framework 一直是 Microsoft 出品的主要 .NET 實(shí)現(xiàn)。

.NET Core 和 .NET Framework 的主要差異在于:

應(yīng)用模型-- .NET Core 并非支持全部 .NET Framework 應(yīng)用模型礁蔗。 具體而言觉义,它不支持 ASP.NET Web 窗體和 ASP.NET MVC,但支持 ASP.NET Core MVC浴井。 自 .NET Core 3.0 起晒骇,.NET Core 還支持 WPF 和 Windows 窗體(僅限在 Windows 上)。

API-- .NET Core 包含 .NET Framework 基類庫的一個(gè)大型子集,但具有不同的組成要素(程序集名稱不同洪囤;類型上公開的成員在關(guān)鍵用例中不同)徒坡。在某些情況下,這些差異要求進(jìn)行更改瘤缩,以將源移植到 .NET Core 中(可參閱.NET 可移植性分析器喇完;.NET Core 實(shí)施;.NET Standard API 規(guī)范)剥啤。

子系統(tǒng) -- .NET Core 實(shí)現(xiàn) .NET Framework 中子系統(tǒng)的子級锦溪,目的是實(shí)現(xiàn)更簡單的實(shí)現(xiàn)和編程模型。例如府怯,不支持代碼訪問安全性 (CAS)刻诊,但支持反射。

平臺-- .NET Framework 支持 Windows 和 Windows Server牺丙,而 NET Core 還支持 macOS 和 Linux则涯。

開源-- .NET Core是開源的,而.NET Framework 的只讀子集是開源的冲簿。

雖然 .NET Core是唯一的且與 .NET Framework 和其他 .NET 實(shí)現(xiàn)大不相同粟判,但可使用源或二進(jìn)制共享技術(shù)在這些實(shí)現(xiàn)之間輕松共享代碼。

由于 .NET Core 支持并行安裝及其運(yùn)行時(shí)完全獨(dú)立于 .NET Framework民假,它可以安裝在裝有.NET Framework 的計(jì)算機(jī)上浮入,不會(huì)出現(xiàn)任何問題。

與 Mono 比較

Mono是 .NET 的原始跨平臺羊异。它一開始是用作 .NET Framework 的開放源代碼替代項(xiàng)事秀,之后隨著 iOS 和 Android 設(shè)備變得流行,過渡到面向移動(dòng)設(shè)備野舶∫准#可將它看作是 .NET Framework 的社區(qū)克隆。Mono 項(xiàng)目團(tuán)隊(duì)依賴于 Microsoft 發(fā)布的開放.NET 標(biāo)準(zhǔn)(尤其是 ECMA 335)來實(shí)現(xiàn)兼容性平道。

.NET Core 和 Mono 的主要差異在于:

應(yīng)用模型-- Mono 通過 Xamarin 產(chǎn)品支持部分.NET Framework應(yīng)用模型(例如Windows窗體)和其他移動(dòng)開發(fā)輔助模型(例如 Xamarin.iOS)睹欲。而.NET Core 不支持 Xamarin。

API-- Mono 使用相同程序集名稱和組成要素支持 .NET Framework API 的大型子集一屋。

平臺-- Mono支持很多平臺和 CPU窘疮。

開源-- Mono和.NET Core 兩者都使用MIT許可證,且都屬于.NET Foundation 項(xiàng)目冀墨。

焦點(diǎn)-- 最近幾年闸衫,Mono 的主要焦點(diǎn)是移動(dòng)平臺,而 .NET Core 的焦點(diǎn)是云和桌面工作負(fù)載诽嘉。

未來動(dòng)向

已宣布.NET 5 將成為 .NET Core 的下一版本且表示平臺實(shí)現(xiàn)統(tǒng)一蔚出。此項(xiàng)目旨在以幾項(xiàng)關(guān)鍵方法來改進(jìn).NET:

生成可隨處使用且提供統(tǒng)一運(yùn)行時(shí)行為和開發(fā)人員體驗(yàn)的單一 .NET 運(yùn)行時(shí)和框架弟翘。

通過充分利用 .NET Core、.NET Framework骄酗、Xamarin 和 Mono 來擴(kuò)展 .NET 的功能稀余。

根據(jù)單個(gè)基本代碼構(gòu)建開發(fā)人員(Microsoft 和社區(qū))可處理且協(xié)同擴(kuò)展,同時(shí)可改善所有方案的產(chǎn)品趋翻。

摘譯自微軟.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末睛琳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子踏烙,更是在濱河造成了極大的恐慌掸掏,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宙帝,死亡現(xiàn)場離奇詭異,居然都是意外死亡募闲,警方通過查閱死者的電腦和手機(jī)步脓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浩螺,“玉大人靴患,你說我怎么就攤上這事∫觯” “怎么了鸳君?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長患蹂。 經(jīng)常有香客問我或颊,道長,這世上最難降的妖魔是什么传于? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任囱挑,我火速辦了婚禮,結(jié)果婚禮上沼溜,老公的妹妹穿的比我還像新娘平挑。我一直安慰自己,他們只是感情好系草,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布通熄。 她就那樣靜靜地躺著,像睡著了一般找都。 火紅的嫁衣襯著肌膚如雪唇辨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天檐嚣,我揣著相機(jī)與錄音助泽,去河邊找鬼啰扛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嗡贺,可吹牛的內(nèi)容都是我干的隐解。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼诫睬,長吁一口氣:“原來是場噩夢啊……” “哼煞茫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起摄凡,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤续徽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后亲澡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钦扭,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年床绪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了客情。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡癞己,死狀恐怖膀斋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情痹雅,我是刑警寧澤仰担,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站绩社,受9級特大地震影響摔蓝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铃将,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一项鬼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劲阎,春花似錦绘盟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锡垄,卻和暖如春沦零,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背货岭。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工路操, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留疾渴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓屯仗,卻偏偏與公主長得像搞坝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子魁袜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容