想要了解.Net Core的意義,就必須要了解擁有很長歷史的.Net Framework,.Net Framework1.0于2002年發布。從那開始,每隔兩年就會有一個主版本推出。伴隨著Visual Studio 2013我們發布了C#5.0和.Net Framework4.5 。.Net Framework4.5是巨大的,擁有超過20000余個類。
如此巨大的.Net Framework會從存在什么問題呢?.Net Core又是怎樣解決的呢?
作為一名初學者,想要入門龐大的.Net Framework并不是一件容易的事情。許多對以前的應用很重要的但是對于新的應用程序并不是很重要的東西仍然存在。對于有經驗的開發者,決定該采用哪種技術是是很困難的。進行web開發時,不得不在ASP.NET Web Forms 和 ASP.NET MVC中作出選擇,在進行桌面程序開發時,不得不決定該使用Windows Forms 還是 WPF,在進行獲取數據的時候,不得不在Entity Framework 和 LINQ to SQL中作出選擇... ...對于一部分有經驗的開發者而言,該如何作出選擇是顯而易見的。但對于大多數開發者來說并不容易。甚至對于一部分開發者而言,開始使用.Net都很困難。
.Net Core是基于更細粒度的NuGet包的。例如編寫控制臺程序只需要控制臺應用程序,而使用.Net Framework,控制臺應用程序卻依賴于被各個.Net 程序集引用的mscorlib程序集。采用.Net Core,你可以明確地決定要使用System.Console NuGet包。否則控制臺程序將不會工作。更細粒度的包允許你更加輕松地解除對Framework的依賴。如果你需要舊版本的類,也可以通過NuGet包System.Collection.NonGeneric來獲取。對于新的程序,你可以通過定義包列表來使用System.Collection.NonGeneric。目前,開發環境更新很快。許多產品,用戶幾乎每隔2年就會收到新版本。用戶會在一些更新中獲取到一些小的特性,但是更新的頻率卻在加快。.Net Framework每隔兩年就會推出新版本,這在目前來看已經不算快了。一些技術,例如Entity Framework,已經通過在NuGet上提供一些獨立于.Net Framework的包來規避一些問題。小步伐更新并且快速快速創新。由許多小型的NuGet包組成的.Net Core可以更容易地被改變,.Net Core和ASP.NET現在都是開源的。你可以通過http://www.github.com/dotnet找到.Net Core的源代碼,通過http://www.github.com/aspnet找到ASP.NET的源代碼。
當.Net發布時,Windows在客戶端和服務器端都擁有了巨大的市場。現在的體系是碎片化的,因為各個公司都對運行在服務器端的ASP.NET持反對態度,因為它不能運行在Linux上。但是ASP.Net Core 1.0會運行在Linux。目前.Net Core 是跨平臺的,可以運行在Windows、Linux 和Mac系統上。對于移動端應用程序,可以使用.Net Xamarin開發運行在iPhone和Android上的應用程序。
在開發過程中,安裝在目標機器上的.Net運行時環境需要和.Net Framework版本一致, 許多客戶端開發都被.Net版本所限制。這不僅僅是客戶端開發的問題,服務器端開發也存在這個問題。我不得不切換到舊版本的.Net運行時因為提供給我的并不支持新版本。但是使用.Net Core,運行時是和應用程序一起發布的。
當ASP.NET建立以后,兼容以前的由JavaScript或VBScript代碼技術就顯得比較重要了。但就目前來說,這并不需要了。 開發者創建ASP.NET
Web Forms程序并不需要了解任何JavaScript和HTML,任何事情都可以被服務器端代碼處理。但是現在由于巨大數量的JavaScript框架和增強的HTML,對于JavaScript和HTML來說,需要更多的控制。對于新版本的ASP.NET,在.Net Framework體系中是一個重要的角色。通過細粒度的控制,你可以決定哪些特性是你所需要的。為了獲取更大的改善影響力,.Net Core可以被編譯成本機代碼。這不僅會在Windows上實現,也會在Linux和Mac系統上實現。通過這個特性會提高性能尤其體現在程序啟動時間和占用內存等方面。對于遺留的應用程序有個問題,大多數程序不能輕松地切換到.Net Core ,只運行于Windows的.Net Framework也在進行演化。但是并沒有像.Net Core進行巨大的演化,但是它是一個成熟的框架。當我在撰寫本書時,.Net4.6.1已經發布了,較上一個版本更新了小部分。Windows Forms 或者 ASP.NET Web Forms編寫的應用程序仍然使用完整的Framework,但是他們可以使用增強的.Net 4.6.1,使用.Net 4.6.1可以使用NuGet包建立.Net Core。許多新的NuGet包以便攜的方式被創建。對于 ASP.NET MVC5 應用程序你可以決定使用運行于.Net Core1.0的ASP.NET MVC6 。ASP.NET Core 1.0既允許使用.Net Core 也允許使用.Net 4.6,這使得在.Net Core和.Net 4.6之間切換很容易。然而,對于運行在Linux的ASP.NET MVC,你需要使用.Net Core 對項目進行遷移,但是在Linux上運行不會像之前的那么好。
以下是一些.Net Core的特性:
- .Net Core是開源的;
- 更細粒度的NuGet包利于快速創新;
- .Net Core支持跨平臺;
- .Net Core可以編譯成本機代碼;
- ASP.NET 可以運行于Windows和Linux系統;
- 已存在的應用程序仍然可持續運行并且可擴展;
以上就是你所看見的.Net Core的特性,這項技術為.Net的改變作出了歷史性的貢獻。這是一個新的開始,從此我們將邁著快速的步伐繼續我們的旅程!
以上文章翻譯自《Professional C# 6.0 and .Net Core 1.0》,如有不妥請指正,謝謝。
作者:悠揚的牧笛
博客地址:http://www.cnblogs.com/xhb-bky-blog/p/7795856.html
聲明:本博客原創文字只代表本人工作中在某一時間內總結的觀點或結論,與本人所在單位沒有直接利益關系。非商業,未授權貼子請以現狀保留,轉載時必須保留此段聲明,且在文章頁面明顯位置給出原文連接。
文章列表