asp.net5應(yīng)用程序默認使用.net core來構(gòu)建應(yīng)用程序,.net core是一個小的,優(yōu)化過的.net運行時應(yīng)用程序。
1. 什么是的.NET Core
.NET Core 5 是一由模塊化的運行時和類庫組成的。目前它在WIndows上面已經(jīng)實現(xiàn)了,在Linx和OS x上面正在開發(fā)當中。.NET core包括一系列的類庫,稱作"CoreFX", 和一個小的優(yōu)化過的運行時,叫"CoreCLR". .NET Core是完全開源的,你也可以去貢獻你自己的代碼進去。
CoreCLR 運行時和CoreFx類庫通過NuGet可以獲得, CoreFx可以根據(jù)具體的功能通過NuGet獲得相應(yīng)的dll, 如"System.[module]".
.NET Core一個關(guān)鍵的優(yōu)點就是它的輕便性。 你可以方便地打包部署你的應(yīng)用程序,而不需要像以前那樣安裝.NET 應(yīng)用程序在你的Windows上面。你可以用不同版本地CoreCLR開發(fā)應(yīng)用程序和升級應(yīng)用在同一臺機器上面,而不需要強制性地同時用一個新版本。
CoreFX集成了一個一個組件形式,每個dll依賴一組最小的在dll, 例如System.Collection只依賴System.Runtime, 而不需要System.xml, CoreFx包含集合、console acess, diagnostics, IO, LINQ, JSON, XML, 和regular exPRession 支持, 另外一個優(yōu)點是COreFx同一個dll可以支持不同的平臺。
2. .NET Core背后的動機
當.net首次出現(xiàn)的時候是在2002年,它是一個單一的框架,不久推出了.net compact框架,它是一個小型的應(yīng)用于移動設(shè)備上面的。多年來,一些共同的功能在兩個不同的版本中重復(fù)的做著,以至于后來爭對不同的平臺有不同的.net版本。在linux, mac, android上面也有其它的.net版本,如mono和Xmarin. 對于每一個平臺,他們各自都要開發(fā)運行時,框架和應(yīng)用模型。.net core的首要目標之一就是提供一個單一的,模塊化的,跨平臺.net版本工作在不同的平臺上面。.net core是完全開源的,Mono社區(qū)的人員可以從CoreFx的類庫中獲利。.NET Core不會取代Mono, 但是它允許Mono社區(qū)引用和共享它,并直接貢獻代碼到CoreFx當中。
除了能應(yīng)用于不同的設(shè)備平臺,服務(wù)來自一個方面的壓力就是減少整體的架構(gòu),最重要的就是把CoreFx分解成一個一個功能模塊,這樣應(yīng)用程序可以按需去拉取相應(yīng)的dll, 減少之間的依賴。這樣,反過來也能減少升級和打補丁的頻次,以減少對應(yīng)用程序的影響,一個小的應(yīng)用程序的部署它是獨立的,不同的版本的應(yīng)用可以部署在同一個服務(wù)器上。
3. 利用.NET Core創(chuàng)建應(yīng)用程序
.NET Core可以創(chuàng)建不同的應(yīng)用程序,包括Web應(yīng)用程序,控制臺應(yīng)用程序和本地化的移動應(yīng)用程序。DNX提供一個跨平臺運行時宿主,你可以用用它創(chuàng)建基于.net core的應(yīng)用程序,它可以執(zhí)行在windows, mac和linx上面,并且它是Asp.net應(yīng)用程序運行的基礎(chǔ)。運行在DNX的應(yīng)用程序可以用.net框架或者.net core框架,DNX工程可以在一個工程當中同配置這兩個構(gòu)架。所以它在project.json中存在兩個配置,如下 :
"frameworks":{
"dnx451":{},
"dnxcore50":{}
},
dnx451表示老的.net框架,dnxcore50表示.net core 5(5.0).你可以用預(yù)編譯指令#if去測試關(guān)聯(lián)了哪個框架:DNX451和DNXCORE50。例如:
#if DNX451
// utilize resource only available with .net framework
#endif
ASP.NET團隊建議是兩個框架都配置,如果你只想用其中一個,也可以把另一個刪除。 注意ASP.NET4.6和早期的版本必須用.NET框架。
4. .NET Core和NuGet
利用NuGet可以很敏捷地獲取每一個組成.net core的類庫。意思是應(yīng)用程序可以列出一個個包含系統(tǒng)、構(gòu)架、第三方框架的NuGet包的集合。另外,第三方的框架也能顯示它的依賴項,這樣可以很容易地在開發(fā)或者創(chuàng)建的時候得到相應(yīng)的版本的包。
盡管CoreFx是由一個一個單獨的NuGet包組成,微軟也會定期地推出一個完全的包,當然它的頻次會比較低。
新聞熱點
疑難解答