一、.net core的起源
談到.NET Core,就不能不提它的前身.NET。當(dāng)年Java風(fēng)頭正盛,微軟也對Java青睞有加,Windows平臺上的Java虛擬機(jī)就是微軟依據(jù)jvm標(biāo)準(zhǔn)開發(fā)的,據(jù)稱是當(dāng)時性能最佳的Java虛擬機(jī)。然而,微軟有自己的小算盤,試圖將Java與Windows平臺捆綁,增加一些Windows特有的功能。Sun公司對此不滿,導(dǎo)致雙方關(guān)系破裂,微軟隨后推出了.NET。.NET從誕生之初就借鑒了Java的許多特性,并在語言特性和窗體開發(fā)等方面逐漸超越了Java。Java在1.6版本后發(fā)展緩慢,后來也在語言特性上借鑒了.NET,這部分原因也歸咎于Sun公司的表現(xiàn)不佳。https://www.php.cn/link/250aa0985d9e292b68c8841c3c95aa10
盡管.NET一直發(fā)展良好,并且出現(xiàn)了如wpf、Unity3D等具有競爭力的框架,但在一些大型項目中,尤其是互聯(lián)網(wǎng)公司,.NET并不受歡迎。這是因為.NET不是開源的,也不是跨平臺的,這導(dǎo)致了以下問題:
成本:選擇.NET意味著需要選擇visual studio和Windows Server,許可證費用是不可忽視的成本。 生態(tài):缺乏社區(qū)的貢獻(xiàn),.NET難以孕育出優(yōu)秀的框架。 人才:無法吸引一線互聯(lián)網(wǎng)公司的優(yōu)秀工程師,因為他們更傾向于使用Java、php等。 雖然有Mono這樣強大的框架,可以讓.NET在Linux上運行,但這還不夠,因為Mono只能發(fā)揮.NET的部分功能。此外,隨著容器技術(shù)的興起,.NET與Windows的強依賴性使得其難以適應(yīng)docker等新技術(shù)。總之,迫于形勢,微軟推出了.NET Core。
二、.NET Core與.NET Framework的區(qū)別 .NET Core是.NET Framework的開源且跨平臺版本。雖然.NET Core是.NET Framework的開源版本,但微軟不能同時維護(hù)兩個不同的分支,一個在Windows上運行,另一個在Linux(unix Like)系統(tǒng)上運行。因此,微軟抽象出了一個標(biāo)準(zhǔn)庫,.NET Core和.NET Framework都必須實現(xiàn)這個標(biāo)準(zhǔn)庫的API。這樣,.NET Core、.NET Framework和xamarin就成了三兄弟,分別為不同的平臺服務(wù)。
現(xiàn)在.NET Core 2.0的預(yù)覽版本已經(jīng)發(fā)布,.NET Core 2.0基本相當(dāng)于.NET Framework 4.6.1。從2016年6月發(fā)布1.0版本到2017年6月發(fā)布2.0版本,僅用了一年時間,達(dá)到這種程度,微軟的努力可見一斑。
三、學(xué)習(xí).NET Core需要做哪些準(zhǔn)備? 基礎(chǔ)的編程經(jīng)驗(.NET、Java、Python等皆可) Windows / Mac作為開發(fā)環(huán)境(建議使用Windows,因為開發(fā)環(huán)境是Windows,環(huán)境不同操作會有差異) ide:Visual Studio 2017 / visual studio code Linux基本使用(推薦centos、Ubuntu) 虛擬機(jī)安裝教程:https://www.php.cn/link/db34fbf0a135038c9c9102e028c614be CentOS快速上手:https://www.php.cn/link/dad0eb8ef352b656351ef2c8285ad148 Ubuntu快速上手:https://www.php.cn/link/e0b48316d133d5b9badb5fd83ac49dd0 如果實在不具備搭建Linux環(huán)境的條件,Windows也可以,但不推薦。