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