Understanding 翻譯為了解或理解,對于 .NET 來說,2015 年注定會更加精彩,所以標題就用了“精彩”這個詞,翻譯這篇文章有兩個原因:學英語、以及跟隨作者回顧一下去年的 .NET。
在去年 BUILD 大會之后,我寫了一篇文章 Exciting Times for .NET,并且從那以后,我在 .NET 團隊中工作充滿了樂趣,其中包括 runtime、framework、languages 和編譯器。雖然在過去一年中,我的工作重點在內部社區,例如為我們的同事安排內部會議,我也花費了一些時間幫助 .NET Foundation 落成,也學習了一下關于開源社區和 .NET Foundation 項目 的一些內容。哦,對了,我也結婚了,:-) 這對于我是個過渡期,從社區的“布道者”越來越多的變成了“協調者”或“連接者”,我真的非常喜歡 Alex Hillman’s term: Tummler。
現在,我們正在接近下一個 BUILD 的到來,我對我們已經取得的進展感到非常興奮,特別是圍繞 .NET 平臺自身,和團隊的方式去開源,還有更多復雜的東西將會產生,所以,我想寫一個更高層次的“事件貼”,來幫助大家理解一些主要部分,并曉得怎樣去參與項目,換句話說,這是學習 .NET 2015 一個好的開始,至少,這是我的希望!
下面是“.NET 2015”主要的組成部分:
需要注意的是,.NET Core 的三個關鍵組件:
.NET Framework 是一個管理執行環境,為運行的應用程序提供各種服務。它包括兩個主要組件:公共語言運行時(CLR),它是用于處理正在運行應用程序的執行引擎;另一個組件是 .NET Framework 類庫,它提供了測試,可重用的代碼,開發人員可以從自己的應用程序中進行調用。
.NET Framework 4.6 建立在 4.5.2 版本之上,其中包含新的 API,改進的事件跟蹤,以及修復一些 bug。這就是我們今天所知道完整 .NET Framework 的下一個版本。.NET Framework 4.6 將包含在 Windows 10 中,也將在 Windows OSes (Vista and above) 以上版本,進行推出并更新,參見:.NET Framework 2015 Preview。
.NET Core 5 是一個通用的模塊化框架,可以跨各種應用程序模式和平臺進行使用,并且它是開源的,可以模塊化和組件化部署,并且支持微軟 Windows,Linux 和 Mac OSX。這是重構的一套基礎類庫(corefx)和運行時(coreclr),其中包括一個新的 JIT 編譯器(“RyuJIT”)、.NET 垃圾機制、本地互操作和其他一些 .NET 運行時組件。如今,.NET Core 構建并運行在 Windows 上。在未來數個月,我們正在增加 Linux 和 Mac 特定平臺下的組件,參見:Introducing .NET Core 和 CoreCLR is now Open Source。
如果你從這篇文章只點擊一個鏈接,那當然是 Introducing .NET Core,IMMO 非常詳細的解釋了我們為什么需要它,以及它如何使用。
.NET Compiler Platform ("Roslyn") 提供了開源 C# 和 Visual Basic 編譯器,以及豐富的代碼分析 API,它和 Visual Studio 構建代碼分析工具被使用的API,是相同的。Roslyn 產生獨立于平臺的中間語言(IL),并針對 .NET 2015,包括 Framework 和 Core 構建時使用。在發布時,整個 .NET Framework 將通過 Roslyn 進行編譯。還有關鍵的語言變化 VB 和 C#,參見:Roslyn on GitHub ,也有 F# 語言和編譯器的變化,參見:F# on GitHub。
“RyuJIT” 是新的默認即時(JIT)編譯器,JIT 編譯器將 IL 編譯為特定的機器語言,在第一次在運行時執行。用于桌面和基于服務器的情況下,RyuJIT 是先前 64 位 JIT 編譯器的修復版本,顯著減少了啟動時間,它還包括支持 SIMD(單指令,多數據),在平行方式下,它允許數學運算來執行一組值,這可以提供一個加速,對某些依賴于向量運算的應用程序類型,參見:The next-generation JIT compiler for .NET。
.NET Native 可以像 C++ 一樣,將 C# 直接編譯為本地機器碼執行,因此開發人員繼續從 .NET Framework 性能和效率中受益。通常情況下,.NET 應用程序被編譯成中間語言(IL),在運行時,即時(JIT)編譯器會將 IL 再編譯成本地代碼。相比之下,.NET Native 是一個 ahead-of-time 編譯器,直接將應用程序編譯成本地代碼,并包含一個小的 CLR 運行時。當編譯使用 .NET Native 方式,流行的 Windows Store 應用程序啟動速度將提高至多 60%,并減少 15-20% 的內存使用,通用的 Windows 應用程序將運行在 .NET Native (ARM, x86, x64) 上,參見:Compiling Apps with .NET Native。
應用程序模型擴展了 .NET Framework 4.6 基礎類庫和 .NET Core 5,Windows Forms、WPF、ASP.NET Web Forms、MVC 5 等,你今天所熟悉的應用程序模型是 .NET Framework 4.6 的一部分,配備了許多新的功能,以及語言新的變化、Roslyn 編譯器和 RyuJIT。有很多發生在 .NET 4.6 中,參見:ASP.NET Overview – What about Web Forms? 、The Roadmap for WPF 和 .NET Framework 2015 Preview。
此外,還有一些新的應用程序模型運行在 .NET Core 5 的優化設計。
ASP.NET 5 是一個精簡的應用程序模型,用于構建現代 Web 應用程序。它被構建從本地到優化開發框架的應用程序,它由最小開銷的模塊化組件組成,讓你保持靈活性,同時構建你的解決方案。ASP.NET 5 可以在.NET Framework 4.6 或.NET Core 5 上運行,今天,ASP.NET 5 在 Linux 和 Mac 上運行,使用的是 Mono runtime,一旦 .NET Core 支持 Linux 和 Mac,那么 ASP.NET 5 將為這些平臺,轉移使用 .NET Core,參見:Introducing ASP.NET 5。
通用的 Windows 應用程序是一個應用程序模型,可以讓你在 Windows Phone 和 Windows 應用程序(8.1+)之間分享源代碼,并部署到 Windows 應用商店。通用的 Windows 應用程序將運行在 .NET Native 上,編譯 IL 為本地機器碼,并包含一個最小的 CLR 運行時,參見:Building universal Windows apps for all Windows devices 和 Getting Started with .NET Native。
.NET Core 5 是通用的模塊化框架,可以廣泛在多種應用程序模型和平臺中使用,因為它是基礎類庫(corefx)和運行時(coreclr)的重構。對于不同的應用程序模型,這些 .NET Core 基礎類庫(BCL)的 API 是相同的,這些 API 不只是看起來是一樣的-它們共享相同的實現,大多數的 API 或程序集更加模塊化,并且平臺獨立。
App-local (or side-by-side) 的部署也是 .NET Core 的一個關鍵特征,你可以為你的應用程序部署,選擇你需要的程序包,模塊化的程序包使用 NuGet,這意味著你的應用程序可以單獨運行,并且不會受到完整 .NET Framework 版本的影響,你的應用程序可以 x-copy 部署,并且完全不用擔心。
.NET Core 支持 Windows、Linux 和 Mac OS X,今天,.NET Core 構建并只能在 Windows 上運行,但我們正在加入 Linux 和 Mac 特定平臺下的組件實現,這一切都開源,這是非常重要的,對于在 .NET 跨平臺的基礎上,建立一個強大的生態系統。
當我們學習技術知道它們是如果進行工作的方式,我認為這是非常有幫助的,這是我開發應用程序和 .NET Core 的簡單看法,從代碼/構建/調試周期到應用程序的部署和執行,部署和執行使不同的,取決于你的應用程序模型。
你寫的代碼是非常模塊化,來引用你所需要的 BCL 和應用程序模型組成部分,Roslyn 編譯器將你的代碼,生成獨立于平臺的中間語言(IL),除了編譯器的管道,有一組豐富的 API,你可以用做各種分析你的代碼,如果你正在使用 Visual Studio,這是 IDE 的一個新特性,利用這些 API 給你一個更高效的編碼體驗。
如果你正在構建一個通用的 Windows 應用程序,.NET Native 工具鏈將從那里拿過來,你的應用程序引用被構建成一個本地部署本機映像和一個小的運行時,如果你正在構建一個 ASP.NET 5 應用程序,引用和 CoreCLR 與你的應用程序部署在本地服務器,使用 RyuJIT,JIT 編譯在啟動時發生。
此外,ASP.NET 5 可以讓你改變你的代碼,保存更改,并刷新瀏覽器(在沒有明確重新構建項目的時候),Visual Studio 中使用 Roslyn 啟用動態編譯,你還有所有編譯框架的結構和權力,但開發體驗感覺更像是一種解釋型語言。
注意:如果你正在關注的是完整 .NET Framework 4.6,那么你仍然可以享受在語言和 Roslyn 編譯器新的變化中,應用程序的部署從它出現的時候就沒有發生變化,它仍然依賴于具有安裝在機器上的完整框架,但 JIT 編譯變成了優化的 JIT 編譯,那就是 RyuJIT。
很多 .NET 2015 項目都是開源的,并且在 .NET Foundation 的管理下,我們和社區正在積極努力的工作,使這些項目盡早開源。
你可以在 .NET Foundation 看到所有項目的版本庫和活動記錄,GitHub:http://dotnet.github.io/ 。
這里有幾個不錯的項目開始,簽出非常詳細的說明和提交規范。
另外,值得一提的是完整 .NET Framework 是“開源”,也就是說,我們不是沒有完全提交 ,它不是一個 OSI 批準協議的完整版本,但你可以在這里查看到所有的源代碼:http://referencesource.microsoft.com/ 。
對于微軟來說,OSS 不是新的,但它是一個新的 .NET 運行時和類庫,這是一個相當大的想法,一個 15 年的老項目,這么多的人都在內部工作,長期并不僅僅只是移動代碼,但所有的工程流程都是開放,這需要時間,這就是為什么團隊從一個小的基礎類庫開始,并已經發布越來越多,并在這個過程中學習,這些經驗和最佳實踐已經影響了整個團隊,We’ve been humbled by the overwhelming support and contributions so far.
你可能會想到自己:“在白天,我沒有足夠的時間來構建自己的應用程序,更不用說搞清楚,如何編寫代碼的 CLR!”很公平,我和你在一起!你可以選擇你希望參與的方式,你不用寫代碼就是一個貢獻者,File an issue, comment on a proposal, answer a question,或者只是查看活動。
你可能會想:“我不希望失去的簡單,也不是我習慣的質量和支持!”,別擔心!我們像以前一樣仍致力于質量和服務的水平。簡單地說,我們所做的就是使我們的項目開放,我們此前曾在內部完成構建軟件,它現在只是開放罷了。
我真為我們的團隊文化和 .NET 的未來感到興奮。
享受吧!
[更新 2015年2月26日]-我應該還提到,dotNetConf 2015 快到了,你可以學到很多,這是一個免費的虛擬活動和演講,來自社區和產品團隊,3月18日、19日準時直播。
翻譯一篇英文文章的時間,可以寫好幾篇文章了,花了時間,翻譯出來卻像“翔”一樣,慘不忍看,建議大家讀原文。
但話說過來,這個翻譯過程,對我來說,真的很有收獲,這就足夠了。