想要了解.Net Core的意義,就必需要了解擁有很長曆史的.Net Framework,.Net Framework1.0於2002年發佈。從那開始,每隔兩年就會有一個主版本推出。伴隨着Visual Studio 2013咱們發佈了C#5.0和.Net Framework4.5 。.Net Framework4.5是巨大的,擁有超過20000餘個類。html
如此巨大的.Net Framework會從存在什麼問題呢?.Net Core又是怎樣解決的呢?
做爲一名初學者,想要入門龐大的.Net Framework並非一件容易的事情。許多對之前的應用很重要的可是對於新的應用程序並非很重要的東西仍然存在。對於有經驗的開發者,決定該採用哪一種技術是是很困難的。進行web開發時,不得不在ASP.NET Web Forms 和 ASP.NET MVC中做出選擇,在進行桌面程序開發時,不得不決定該使用Windows Forms 仍是 WPF,在進行獲取數據的時候,不得不在Entity Framework 和 LINQ to SQL中做出選擇... ...對於一部分有經驗的開發者而言,該如何做出選擇是顯而易見的。但對於大多數開發者來講並不容易。甚至對於一部分開發者而言,開始使用.Net都很困難。git
.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的源代碼。github
當.Net發佈時,Windows在客戶端和服務器端都擁有了巨大的市場。如今的體系是碎片化的,由於各個公司都對運行在服務器端的ASP.NET持反對態度,由於它不能運行在Linux上。可是ASP.Net Core 1.0會運行在Linux。目前.Net Core 是跨平臺的,能夠運行在Windows、Linux 和Mac系統上。對於移動端應用程序,可使用.Net Xamarin開發運行在iPhone和Android上的應用程序。web
在開發過程當中,安裝在目標機器上的.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的特性,這項技術爲.Net的改變做出了歷史性的貢獻。這是一個新的開始,今後咱們將邁着快速的步伐繼續咱們的旅程!
翻譯
以上文章翻譯自《Professional C# 6.0 and .Net Core 1.0》,若有不妥請指正,謝謝。orm
做者:悠揚的牧笛htm
博客地址:http://www.cnblogs.com/xhb-bky-blog/p/7795856.html
聲明:本博客原創文字只表明本人工做中在某一時間內總結的觀點或結論,與本人所在單位沒有直接利益關係。非商業,未受權貼子請以現狀保留,轉載時必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。