[翻譯] 正式宣佈 .NET 5

来源:https://www.cnblogs.com/Rwing/archive/2019/05/07/introducing-net-5.html
-Advertisement-
Play Games

今天,我們宣佈 .NET Core 3.0 之後的下一個版本將是 .NET 5 。這將是 .NET 系列的下一個重要版本。 ...


原文: Introducing .NET 5

今天,我們宣佈 .NET Core 3.0 之後的下一個版本將是 .NET 5 。這將是 .NET 系列的下一個重要版本。

將來只會有一個 .NET ,您將能夠使用它來開發 Windows,Linux,macOS,iOS,Android,tvOS,watchOS 和 WebAssembly 等等。

我們將在 .NET 5 中引入新的 .NET API、運行時功能和語言功能。

從 .NET Core 項目開始,我們已經向平臺添加了大約五萬個 .NET Framework API。 .NET Core 3.0 彌補了 .NET Framework 4.8 的大部分剩餘功能差距,支持 Windows Forms,WPF 和Entity Framework 6。 .NET 5 構建於此工作之上,利用 .NET Core 和 Mono 的最佳功能創建一個平臺,您可以用於所有現代 .NET 代碼。

我們打算在 2020 年 11 月發佈 .NET 5,併在 2020 年上半年推出第一個預覽版。將在 Visual Studio 2019、Visual Studio for Mac 和 Visual Studio Code 的未來更新中支持它。

.NET 5 = .NET Core vNext

NET 5 是 .NET Core 的下一步。該項目旨在通過以下幾個關鍵方式改進 .NET:

  • 製造一個可在任何地方使用的 .NET 運行時和框架, 並具有統一的運行時行為和開發人員體驗。
  • 通過充分利用 .NET Core、.NET Framework、Xamarin 和 Mono 來擴展 .NET 的功能。
  • 從單個代碼庫構建該產品,開發人員( Microsoft 和社區)可以一起工作並一起擴展,從而改進所有方案。

這個新項目和方向是 .NET 的一個重要轉折。使用 .NET 5,無論您正在構建哪種類型的應用程式,您的代碼和項目文件都將是相同的。每個應用都可以訪問相同的運行時、API 和語言功能。也包括幾乎每天都在進行的 corefx 的性能改進

您所喜歡 .NET Core 的所有內容將繼續存在:

  • 在 GitHub 上開源和麵向社區。
  • 跨平臺實現。
  • 支持利用特定於平臺的功能,例如 Windows 上的 Windows form 和 WPF 以及來自 Xamarin 的每個原生平臺的原生綁定。
  • 高性能。
  • 併排安裝。
  • 小型項目文件(SDK風格)。
  • 相容命令行界面(CLI)。
  • Visual Studio,Visual Studio for Mac 和 Visual Studio Code集成。

也有一些新的東西:

  • 您將有更多關於運行時體驗的選擇(更多內容見下文)。
  • Java 互操作性將在所有平臺上提供。
  • 多個操作系統將支持 Objective-C 和 Swift 互操作性。
  • CoreFX 將擴展為支持 .NET 的靜態編譯(ahead-of-time – AOT),更小的空間占用和對更多操作系統的支持。

我們將在今年 9 月發佈 .NET Core 3.0,在 2020 年 11 月發佈 .NET 5,然後我們打算每年 11 月發佈一次主要版本的 .NET:

我們跳過了版本 4,因為它會讓熟悉 .NET Framework 的用戶感到困惑,因為 .NET Framework 已經使用了很長時間的4.x系列。此外,我們希望清楚地傳達 .NET 5 是 .NET 平臺的未來。將其稱為 .NET 5 使其成為我們發佈過的最高版本。

我們也藉此機會簡化命名。我們認為如果只有一個 .NET 是最好的了,我們就不需要像 “Core” 這樣的澄清術語。較短的名稱是一種簡化, 還傳達了 .NET 5 具有統一的功能和行為的信息。當然如果您願意也可以繼續使用 “.NET Core” 這個名稱。

運行時體驗

Mono 是 .NET 的原始跨平臺實現。它最初是作為 .NET Framework 的開源替代品,並隨著 iPhone/iOS 和 Android設 備的普及而轉變為針對移動設備。Mono 是用作 Xamarin 一部分的運行時。

CoreCLR 是用作 .NET Core 一部分的運行時。它主要用於支持雲應用程式,包括 Microsoft 的最大服務,現在也用於 Windows 桌面,物聯網和機器學習應用程式。

總而言之,.NET Core 和 Mono 運行時有許多相似之處(畢竟它們都是 .NET 運行時),但也有寶貴的獨特功能。讓選擇所需的運行時體驗成為可能是非常有意義的。我們正在使 CoreCLR 和 Mono 可以互相替換。我們將使它像構建開關一樣簡單,以便在不同的運行時選項之間進行選擇。

以下部分描述了我們計劃用於 .NET 5 的主要重心。它們為我們計劃如何單獨和共同發展這兩個運行時提供了清晰的視角。

高吞吐量和高生產率

從一開始,.NET 就依賴於即時編譯器(JIT)將中間語言(IL)代碼轉換為優化的機器代碼。從那時起,我們構建了業界領先的基於 JIT 的托管運行時,該運行時具有非常高的吞吐量,並且還提高了開發人員體驗,使編程變得快速而簡單。

JIT 非常適合長期運行的雲和客戶端方案。他們能夠生成針對特定機器配置的代碼,包括特定的 CPU 指令。JIT 還可以在運行時重新生成方法,這一共讓 JIT 更快速的技術,同時仍可選擇生成高度優化的代碼版本 (如果這成為經常使用的方法)。

我們努力使 ASP.NET Core 在 Techpower 基準測試上運行得更快, 這是 JIT 強大的力量和我們在 CoreCLR 上的投資的一個很好的例子。我們為容器強化 .NET Core的努力也證明瞭運行時動態適應受限環境的能力。

開發人員工具是 JIT 非常棒的另一個好例子,例如 dotnet watch 工具或編輯並繼續。工具通常需要在單個進程中多次編譯和載入代碼, 而無需重新啟動, 並且需要非常快速地執行此操作。

使用 .NET Core 或 .NET Framework 的開發人員主要依賴於 JIT 。因此,這種體驗應該是熟悉的。

大多數 .NET 5 工作場景的預設體驗將使用基於 JIT 的 CoreCLR 運行時。兩個值得註意的例外是 iOS 和客戶端 Blazor(web assembly),因為它們都需要 ahead-of-time (AOT) 原生編譯。

快速啟動,占用空間小,記憶體使用率低

Mono 項目的大部分精力都集中在移動和游戲機上。該項目的一個關鍵功能和結果是基於業界領先的 LLVM 編譯器項目的 .NET AOT 編譯器。Mono AOT 編譯器允許將 .NET 代碼內置到一個可以在電腦上運行的原生代碼可執行文件中, 就像 C++ 代碼一樣。AOT 編譯的應用可以在較小的位置高效運行, 併在需要時交換吞吐量以進行啟動。

Blazor 項目已經在使用 Mono AOT。這將是最早過渡到 .NET 5 的項目之一。我們把它作為證明這個計劃的方案之一。

有兩種類型的 AOT 解決方案:

  • 需要 100% AOT 編譯的解決方案。
  • 大多數代碼是 AOT 編譯的解決方案, 但 JIT 或解釋器可用於與 AOT 不友好的代碼模式 (如泛型)。
    Mono AOT 支持這兩種情況。出於安全原因,蘋果對 iOS 和一些游戲機需要第一種 AOT。第二種方法是更好的選擇, 因為它提供了 AOT 的優點並且避免了一些缺點。

.NET Native 是我們用於 Windows UWP 應用程式的 AOT 編譯器, 也是上面列出的第一種 AOT 類型的示例。在這個特定實現里, 我們限制了 .NET API 和您可以使用的功能。我們從這一經驗中瞭解到, AOT 解決方案需要涵蓋 .NET API 和模式的所有方面。

在 iOS、 web assembly 和一些游戲機里 AOT 編譯仍需要。對於更需要快速啟動或低占用空間的應用程式, 我們將使 AOT 編譯成為一個選項。

該項目的誕生

我們於 2018 年 12 月在波士頓召開了一個技術團隊,開始了這個項目。來自 .NET 團隊(Mono/Xamarin和.NET Core)以及 Unity 的設計領導者介紹了各種技術能力和架構方向。

我們現在正在將這個項目作為一個團隊推進,並提供一套可交付成果。自 12 月以來,我們在一些項目上取得了很多進展:

  • 定義了一個最小層,它定義了運行時 <-> 托管代碼層,目標是實現 >99% 的 CoreFX 公共代碼。
  • MonoVM 現在可以使用 CoreFX 及其類庫。
  • 使用 CoreFX 實現在 MonoVM 上運行所有 CoreFX 測試。
  • 使用 MonoVM 運行 ASP.NET Core 3.0 應用程式。
  • 在 CoreCLR 上運行 MonoDevelop,然後運行 Visual Studio for Mac。

遷移到單個.NET實現會引發一些重要問題: 目標框架將是什麼? NuGet包相容性規則是否相同? .NET 5 SDK 應該支持哪些工作負載?如何為特定架構編寫代碼?我們還需要 .NET Standard嗎?
我們現在正在解決這些問題,很快將分享設計文檔供您閱讀並提供反饋。

尾聲

.NET 5 項目是 .NET 的重要且令人興奮的新方向。您將看到 .NET 變得更簡單,但也具有更廣泛,更廣泛的功能和實用性。所有新的開發和功能都將成為 .NET 5 的一部分,包括新的 C# 版本。

我們看到了光明的未來,您可以使用相同的 .NET API 和語言來面向各種應用程式類型、操作系統和晶元架構。在 Visual Studio ,Visual Studio for Mac,Visual Studio Code,Azure DevOps 或命令行中,可以輕鬆更改構建配置以構建不同的應用程式。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Go 作為一門靜態語言,相比 Python 等動態語言,在編寫過程中靈活性會受到一定的限制。但是通過介面加反射實現了類似於動態語言的能力:可以在程式運行時動態地捕獲甚至改變類型的信息和值。 ...
  • 轉自:https://blog.csdn.net/yl2isoft/article/details/17059093 結果分析 執行List的Clear方法和RemoveAll方法,List將清除指定元素,同時修改Count屬性值,而Capacity屬性值保持不變。 Clear方法和RemoveAl ...
  • Spring中配置數據源的幾種方式 通過在JDBC驅動程式定義的數據源; 通過JNDI查找的數據源; 連接池的數據源; 使用JNDI數據源 Spring應用程式經常部署在Java EE應用伺服器中,例如Tomcat、JBoss。這些伺服器器允許你通過配置獲取數據源,這樣做的好處是數據源可以在應用之外 ...
  • 在做數據分析的過程中,經常會想數據分析到底是什麼?為什麼要做數據數據分析?數據分析到底該怎麼做?等這些問題。對於這些問題,一開始也只是有個很籠統的認識。 最近這兩天,讀了一下早就被很多人推薦的《誰說菜鳥不會數據分析》這本書。發現對這些問題講的還是比較透徹,隨後對這本書的核心內容做了一個筆記。 ...
  • 在Laravel項目中我們常常需要定義一些全局的公共函數,通常我們會將這些公共函數定義在一個單獨的文件里,如 中。我們在 目錄下創建一個名為 的文件(app/helpers.php),並編輯其內容如下: 該函數返回對一個字元串進行兩次md5加密後返回的字元串。要讓應用能夠正確找到 文件,還要修改項目 ...
  • 什麼是棧? 定義: 一種運算受限的線性表。其限制是僅允許線上性表的一端進行插入和刪除運算。可操作的一端被稱為棧頂,相對地,把另一端稱為棧底,棧底不可進行操作。 所以棧中的數據遵循 “先進後出” 即只能操作棧頂的數據。 分類: (1)靜態棧:以數組作為數據的存儲。 (2)動態棧:以鏈表作為數據的存儲方 ...
  • 一個程式用到java的cn.core.jar加密的,需要在.NET 中解密,發現JAVA的des演算法與C 的有點區別。 自己不太懂加密解密演算法,所以找了個省事的方法,用IKVM.NET,用這個將cn.core.jar直接轉為cn.core.dll。 在程式中可以直接用cn.core.jar中的方法, ...
  • 如果使用allAnswer.clean()函數,則接收的數據Session["ReAllAnswer"]將會設置為空; 而使用new List<Item>(),則不會。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...