<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .NET 6 Preview 2 發布

      前言

      在 2021 年 3 月 11 日, .NET 6 Preview 2 發布,這次的改進主要涉及到 MAUI、新的基礎庫和運行時、JIT 改進。

      .NET 6 正式版將會在 2021 年 11 月發布,支持 Windows、macOS、Linux、Android 和 iOS 等系統以及 x86、x86_64、ARM 和 ARM64 架構。另外,.NET 6 是 LTS 版本,將提供長達至少三年的支持。

      那么一起來看看都有哪些內容吧。

      主題:改進內部循環性能

      過去的幾個 .NET 版本針對提升吞吐量、減少內存消耗等性能方面做了很多工作。而在 .NET 6 將會針對內部循環性能做出改進:不僅僅追求在應用和服務上做到最佳的性能,還要追求在應用模型、工具鏈和工作流程上的最佳性能。

      其中一些工作看起來與過去的傳統吞吐量優化工作非常相似,但實際上這里不關注穩態性能,而是關注運行時、應用模型、命令行、msbuild 等的啟動性能,以及工具的端到端性能(特別是對于較小的解決方案)。

      這種優化所涉及的思維方式通常與針對穩態吞吐量進行優化時所使用的思維方式大不相同。對于穩態工作,您可能會專注于緩存將來可以重用的值,但是對于啟動性能而言,通常您將注意力集中在只能被調用一次的操作上,而第一次調用的成本很重要。

      但是,這里涉及的工作確實與許多其他性能工作一樣,都有一個典型的測量-分析-修復循環:分析要優化的應用程序的相關區域,分析結果數據以查找最主要的原因和瓶頸,然后為它們提出解決方案,然后重新開始尋找下一個有影響力的項目的過程。

      我們仍然處于 .NET 6 開發周期的初期,但是我們已經成功地削減了開發人員內部循環所涉及的關鍵領域的開銷,重點關注各種 dotnet 命令,例如 newbuildrun

      目前已包含的改進例如:

      當然,最佳性能優化之一是避免完成全部的工作,這是 .NET 6 主題另一半的重點:.NET 熱重載。通過允許在運行應用程序時甚至在未連接調試器的情況下對代碼進行編輯,熱重載將在所有受支持的操作系統和硬件平臺上提高開發人員的生產率。開發人員修改代碼后不需要重新編譯和啟動程序,更改將立即生效,如此可以跳過整個更改-構建-運行周期。此特性有望從根本上改善 .NET 開發人員編寫應用和服務的方式。

      .NET 6 編譯速度改進

      上圖展示了 .NET 5 和 .NET 6 Preview 2 的 razor 編譯時間對比。

      主題:.NET 擁有優秀的客戶端開發體驗

      .NET 6 最令人興奮的部分之一是移動開發,目前作為單獨的Xamarin 產品提供。隨著時間的流逝,我們一直在使 Xamarin 更類似于主線 .NET。現在是時候為 .NET 提供完全統一的移動產品了。使用 .NET 6,iOS,Android 和 macOS 開發將集成到 .NET SDK 中,并使用 .NET 庫。在過去的兩年中,我們一直在努力將 Mono 集成到 .NET 中,因此開發人員可以利用這兩種運行時的優勢,而不必針對不同的 .NET 版本,也不必擔心兼容性問題。在 .NET 5 中,我們將 Blazor WebAssembly 移了過來,并在 Xamarin 中使用了相同的模型。.NET 6 是這種統一努力的最高潮,涵蓋了主題的關鍵部分:Xamarin 開發人員可以升級到現有應用程序并使用最新的 .NET SDK。

      現在,您所有的 .NET 應用程序都將在相同的庫上運行,我們希望增加在 PC 和移動平臺上共享的代碼量。Xamarin 的跨平臺 UI 框架 Xamarin.Forms 正在演變為 .NET MAUI,使您可以使用相同的代碼庫輕松編寫適用于 iOS,Android,Windows 和 macOS 的應用程序。.NET MAUI 作為 .NET 6 的一部分提供,同時還進行了一系列性能和工具改進,例如 .NET/C# 熱重載、在跨不同平臺共享更多的資源和代碼,以及具有一組更靈活的 UI 控件的更好的頁面呈現性能。

      .NET MAUI 不僅適用于客戶端應用程序開發人員。得益于重構的控件集以及可以在 .NET 6 庫上運行的功能,您現有的 Blazor 應用程序可以通過 .NET MAUI 在 Windows 和 macOS 上原生運行。您將能夠與 Blazor 代碼庫無縫結合原生控件和功能,包括特定于平臺的功能。

      此主題的最后一部分是關于打包,部署和發布您的跨平臺客戶端應用程序。由于開發應用程序的開發人員/目標平臺/方式太多,因此每天結束時您必須分發許多不同的應用程序包。尤其是對于 Blazor 桌面,我們希望使體驗盡可能無縫。我們正在研究改善本地和云中發行和版本控制的策略。

      總結一下,在 .NET 6,你將能夠:

      • 用 .NET 庫構建 iOS、Android 和 macOS 應用
      • 借助 .NET MAUI 使用相同的代碼創建 iOS、Android、Windows 和 macOS 客戶端應用
      • 在不同平臺之間共享代碼和資源
      • 在 macOS 和 Windows 上原生運行 Blazor 應用
      • 輕松打包和分發你的程序

      MAUI 的 GitHub 倉庫:http://github.com/dotnet/maui

      MAUI 更新

      MAUI 的示例程序已經針對 .NET 6 Preview 2 更新:https://github.com/dotnet/net6-mobile-samples ,你可以直接使用 dotnet 的命令行構建和啟動應用。

      Mac Catalyst

      現在可以添加如下代碼到項目屬性中構建 macOS 的桌面應用:

      <TargetFrameworks>net6.0-android;net6.0-ios</TargetFrameworks>
      <TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">$(TargetFrameworks);net6.0-maccatalyst</TargetFrameworks>
      

      單個多平臺應用項目

      .NET MAUI 的單個項目體驗已經啟用,你可以通過一個項目文件同時適配 Android、iOS 和 macOS;對于 Windows 的支持將會取決于 WinUI 3,因此這部分在未來會加入。

      VS Solution

      上圖展示了單個項目中包含多個平臺的開發體驗。

      共享字體、圖片和應用圖標

      字體和圖片也可以放到你的項目中的同一個位置,.NET MAUI 將允許你在所有平臺上訪問它們,例如:

      <ItemGroup>
          <SharedImage Include="appicon.svg" ForegroundFile="appiconfg.svg" IsAppIcon="true" />
          <SharedFont Include="Resources\Fonts\ionicons.ttf" />
       </ItemGroup>
      

      除了指定特定文件之外,還支持使用 wild-card 按照路徑匹配所有的文件作為共享圖片或者字體:

      <ItemGroup>
          <SharedImage Include="appicon.svg" ForegroundFile="appiconfg.svg" IsAppIcon="true" />
          <SharedImage Include="Resources\Images*" />
          <SharedFont Include="Resources\Fonts*" />
      </ItemGroup>
      

      MAUI 應用使用 HostBuilder 啟動程序

      利用類似 ASP.NET Core 配置的體驗配置 MAUI 程序,并支持依賴注入。例如:

      public class Application : MauiApp
      {
          public override IAppHostBuilder CreateBuilder() => 
              base.CreateBuilder()
                  .RegisterCompatibilityRenderers()
                  .ConfigureServices((ctx, services) =>
                  {
                      services.AddTransient<MainPage>();
                      services.AddTransient<IWindow, MainWindow>();
                  })
                  .ConfigureFonts((hostingContext, fonts) =>
                  {
                      fonts.AddFont("ionicons.ttf", "IonIcons");
                  });
      
          public override IWindow CreateWindow(IActivationState state)
          {
              Microsoft.Maui.Controls.Compatibility.Forms.Init(state);
              return Services.GetService<IWindow>();
          }
      }
      

      新的控件處理器

      .NET MAUI 引入了全新的控件處理機制,Preview 2 中包含第一組利用這些機制的控件:ButtonLabelEntrySliderSwitch。如果想要加速實現其他控件,也歡迎社區 PR,具體可見:https://github.com/dotnet/maui/wiki/Handler-Property-PR-Guidelines

      .NET MAUI 的示例程序現在從同一個項目運行在 macOS、iOS 和 Android 上,以下是運行效果:

      macOS:

      macOS

      iOS:

      iOS

      Android:

      Android

      移動 SDK 更新

      Android

      • 將默認庫設置為 Android X

      iOS

      • Windows 上的開發者可以使用遠程 iOS 模擬器
      • Windows 上的開發者可以連接到遠程的 macOS 上構建應用
      • AOT 已經被添加和啟用以支持部署和分發 iOS 應用

      .NET 庫更新

      .NET 的庫在 Preview 2 中也有不少更新。

      System.Text.Json 忽略循環引用

      System.Text.Json 現在支持忽略循環引用了,對于循環引用,可以不再拋出異常,而是像 Newtonsoft.Json 那樣簡單的設置成 null

      class Node
      {
          public string Description { get; set; }
          public object Next { get; set; }
      }
      
      void Test()
      {
          var node = new Node { Description = "Node 1" };
          node.Next = node;
      
          var opts = new JsonSerializerOptions { ReferenceHandler = ReferenceHandler.IgnoreCycles };
      
          string json = JsonSerializer.Serialize(node, opts);
          Console.WriteLine(json); // 輸出 {"Description":"Node 1","Next":null}
      }
      

      優先隊列 PriorityQueue

      .NET 6 Preview 2 加入了新的優先隊列: System.Collections.Generic.PriorityQueue<TElement, TPriority>

      // 創建一個 int 作為優先級的 string 隊列
      var pq = new PriorityQueue<string, int>();
      
      // 各種元素入隊
      pq.Enqueue("A", 3);
      pq.Enqueue("B", 1);
      pq.Enqueue("C", 2);
      pq.Enqueue("D", 3);
      
      pq.Dequeue(); // 返回 "B"
      pq.Dequeue(); // 返回 "C"
      pq.Dequeue(); // 返回 "A" 或者 "D"
      

      改進的數值格式解析

      對于標準數值格式,我們改進了其解析器,尤其是針對 .ToString.TryFormat 的改進。精度大于小數點后 99 位時的結果現在已被改進,并且還提供了對尾部 0 的更好支持:

      • 32.ToString("C100")
        • .NET 6:32.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
        • .NET 5:存在 99 位精度的限制
      • 32.ToString("H99")32.ToString("H100")
        • .NET 6:拋出 FormatException
        • .NET 5:H 是一個無效的格式修飾,但是沒有拋出異常而是返回了錯誤結果
      • double.Parse("9007199254740997.0")
        • .NET 6:9007199254740996
        • .NET 5:9007199254740998

      SignalR 的可空類型標注

      SingleR 現在已經完成了可空類型的標注。

      運行時更新

      .NET 6 Preview 2 在運行時上也有不少改進。

      框架程序集使用 Crossgen2 預編譯

      所有的 .NET 庫現在已經使用 crossgen 2 進行預編譯,目前只限于 .NET 的基礎庫,對于其他的庫比如 ASP.NET Core 和 Windows Desktop,則會在后續的預覽版本逐漸遷移到 crossgen 2。

      Crossgen 2 本身并不是關注于性能改善的,而是用于啟用新的性能特性(如 PGO)。不過 crossgen 2 帶來了一些硬盤占用空間的改進:

      Size [MB] FullName
      --------- --------
      64.22     C:Program FilesdotnetsharedMicrosoft.NETCore.App5.0.3
      63.31     C:Program FilesdotnetsharedMicrosoft.NETCore.App6.0.0-preview.1.21102.12
      63.00     C:Program FilesdotnetsharedMicrosoft.NETCore.App6.0.0-preview.2.21118.6
      

      PGO

      .NET 6 Preview 2 添加了以下改進:

      JIT 改進

      .NET 6 Preview 2 包含以下針對 JIT 的改進:

      這些改進的結果分析可以在這里查看:

      另外,對 ARM64 的優化也在不斷和 ARM 工程師一起進行中。

      結語

      以上就是 .NET 6 Preview 2 中的改進內容了。

      .NET 6 的功能改進將會在 7 月之前全部完成,之后就會專注于質量上的改進了。

      posted @ 2021-03-12 12:11  hez2010  閱讀(7125)  評論(39)    收藏  舉報
      主站蜘蛛池模板: 天堂va蜜桃一区二区三区| 如皋市| 漂亮人妻被强中文字幕久久| 国产精一区二区黑人巨大| 国产一区二区三区韩国| 页游| 国产欧美亚洲精品第1页| 樱花草视频www日本韩国| 日韩精品一区二区三区视频| 国产精品成人网址在线观看| 国产av一区二区三区综合| 日韩精品一区二区三区中文无码| 免费人成网站免费看视频| 国产中文99视频在线观看| 好紧好湿好黄的视频| 陵水| 乱人伦人妻精品一区二区| 最新中文字幕国产精品| 无码人妻久久久一区二区三区| 国产午夜精品福利免费看| 无码专区 人妻系列 在线| 中文字幕av无码免费一区| 色综合天天综合天天综| 日韩精品亚洲不卡一区二区 | 91久久偷偷做嫩草影院免费看| 国产成人亚洲综合图区| 亚洲码与欧洲码区别入口| 国产真人无码作爱视频免费| 成人无码一区二区三区网站| 日本一区二区三区小视频| 人妻熟女欲求不满在线| 国内精品自产拍在线播放| 日本福利一区二区精品| 少妇性l交大片| 中国国产免费毛卡片| 亚洲精品色一区二区三区| 老师破女学生处特级毛ooo片| 亚洲人成亚洲人成在线观看| 日韩理伦片一区二区三区| 国产女人18毛片水真多1| 国产成人黄色自拍小视频|