2022年7月12日 星期二

Visual Studio 2022與.NET 6新亮點



作者:許薰尹  精誠資訊/恆逸教育訓練中心資深講師


**本文提及的相關技術同時適用於.NET6 .NET7版本**


微軟在2021118日宣布新的Visual Studio 2022開發工具與.NET 6正式上市,.NET 6是第一個適用於配備 Apple SiliconArm64)晶片的框架,且號稱是有史以來最快的.NET,在這篇文章中,我們將簡介Visual Studio 2022與.NET 6的新功能,以及想從.NET Framwork升級到.NET 6的學習建議。

.NET 6框架主要的特色包含

l  支援多種作業系統,包含WindowsLinuxmacOSAndroidiOS/tvOS

l  Red Hat Enterprise Linux也支援.NET。在RHEL 8及以上版本.NET 6 將可用於 AMD Intelx64_64)、ARM aarch64) 以及 IBM Z LinuxONE s390x)架構

l  使用C# 10F# 6簡化程式碼開發。C# 10提供許多語言增強功能,包含record structsimplicit usingF# 6則包含Task Based asyncpipeline debugging等等功能

l  支援OpenTelemetry,它是一組工具程式、APISDK,讓使用者可以用來收集和輸出測試資料,以便於分析軟體的效能和行為

l  支援HTTP/3

l  支援OpenSSLChaCha20Poly1305 encryption scheme與多層防禦 (Defense in depth

l  提升程式整體效能,包含FileStreamAOT編譯(ahead-of-time compilation)、Profile-guided optimization PGO...等等

l  搭配Visual Studio 2022的多樣新功能,提高生產力,例如熱重載(hot reload)、Git工具...等等

l  統一的開發平台,跨瀏覽器(Browser)、雲端(Cloud)、桌上型應用程式(Desktop)、物聯網(IoT)、行動裝置App,都使用相同的.NET程式庫,更容易分享程式碼,參考下圖:


圖 1:資料來源:https://devblogs.microsoft.com


.NET 6提供長期支援三年,您需要使用Visual Studio 2022來開發.NET 6應用程式,Visual Studio 2019以及舊版開發工具並不支援.NET 6應用程式的開發。以下讓我們來看看Visual Studio 2022.NET 6 幾個好用的新特性。


l   .NET Multi-platform App UI(MAUI

.NET 多平台應用程式 UI(.NET Multi-platform App UI MAUI)是一個跨平台、開放源碼的框架,可讓您使用C#程式語言與XAML標記語言來建立跨平台、原生的(Native)行動裝置與桌上型應用程式。

 

MAUI是從Xamarin.Forms演進過來的,參考下圖來自於微軟官網的文件說明,可知MAUI可以相同的基礎架構程式來建立原生的AndroidiOSmacOSWindows視窗應用程式,只要撰寫一次,就可以到處運行(write-once run-anywhere):






.NET 6提供一系列特定平台專屬的框架來建立應用程式,包含.NET for AndroidNET for iOS.NET for macOSWindows UI 3 WinUI 3)程式庫,這些框架底層都使用相同的.NET 6 基礎類別程式庫(.NET 6 Base Class Library BCL),這些程式庫將與底層系統溝通的細節隱藏起來,簡化應用程式開發的複雜度。



l   熱重載(Hot reload

熱重載(Hot reload)功能,可以在應用程式執行的狀態下,修改既有程式碼,不需要中斷或暫停除錯,異動的程式碼會馬上自動編譯並執行,盡可能降低應用程式重新啟動執行的次數,減少等待應用程式建置時間,大大增進程式設計師在應用程式開發上的效率,提高生產力。

 

Visusl Studio 2022dotnet watch CLI工具程式都有支援熱重載(Hot reload),您可以在多種類型的專案中使用到這個功能,包含ASP.NET code-behindASP.NET Core MVCASP.NET Core Razor PageASP.NET Razor Blazor Server ASP.NET Core)、WPFWinFormsConsole.NET MAUI...等等。

 

使用方式很簡單,若使用Visual Studio 2022 開發ASP.NET Core Razor Page專案,參考下圖,只要按下 CTRL+F5(限大部分的.NET 6 專案)或F5執行後,再修改程式碼,例如將首頁<h1>標題為「Hello」字串,然後按下「 熱重新載入Hot Reload)」按鈕套用程式碼變更,更新的程式碼便馬上執行,瀏覽器中的網頁便馬上顯示出新的標題字串。您也可以勾選「Hot Reload on File Save」項目,後續只要儲存程式碼,便自動編譯、執行。


圖 3:熱重載Hot reload

 


l   .NET全端開發

Blazor是一個新的.NET網站框架(.NET web framework),以WebAssembly標準為基礎,可以取代以往使用JavaScript語言,改用C# / Razor語法與HTML標籤建立執行在瀏覽器上的用戶端應用程式,有了Blazor就可以讓程式設計師專注在一種程式語言,直接使用C# 語言進行全端開發(Full Stack web development)。

 

微軟從.NET Core 3推出Blazor Server開發架構之後,陸續推出Blazor WebAssembly以及Blazor Hybrid架構。Blazor Server應用程式的特色是在伺服端(Blazor Server)執行,運作方式是將Razor元件(Razor Component)裝載在伺服端上的ASP.NET Core app中執行,瀏覽器中的UI與伺服端將通過SignalR連線進行通訊,瀏覽器中的UI事件觸發時,將通知伺服端做對應處理,再於瀏覽器更新UI所有的現代化瀏覽器都可支援Blazor Server



Blazor WebAssembly執行在用戶端瀏覽器之中,使用C# 程式語言撰寫的 *.razor檔案的程式碼,會編譯成組件(Assembly),這些組件與.NET runtime和相依的檔案將會被下載到瀏覽器端來執行。目前大部分的現代化瀏覽器都支援WebAssembly標準,但Microsoft Internet Explorer除外





ASP.NET Core Blazor Hybrid目前是預覽版,這是一個在 ASP.NET Core 應用程式中使用 .NET 建立互動式用戶端 Web UI 的一種方式,使用.NET Blazor技術來桌面和行動原生用戶端



Blazor Hybrid應用程式中,Razor元件(Razor Component在裝置上以原生方式執行,可以透過.NET平台存取裝置原生的功能,Razor元件不會在瀏覽器中執行,其渲染的結果將透過Web view控制項呈現。


.NET 多平台應用程式 UI(.NET Multi-platform App UI MAUI)內建Blazor Hybrid應用程式的支援,將.NET MAUIBlazor一起使用的好處是能夠跨行動裝置、桌上型應用程式與網站來共用Web UI元件。


WPF 和 Windows Forms 的應用程式之中也可以使用Blazor Hybrid,可讓您將新的 UI 新增至現有的 Windows 傳統型應用程式之中,以便在 .NET MAUI Web 上跨平台重複使用。


l  Visual Studio 2022新範本專案

Visual Studio 2022版本建立.NET 6專案時可以選擇多種專案範本,相較於之前的版本,新的範本專案會將一些基本程式碼隱藏起來,讓程式碼更為簡潔,不用理會底層運作所需的程式碼,專注在應用程式的邏輯。

 

例如在Visual Studio 2019版本建立一個主控台應用程式(Console Application)類型的專案,預設專案中會包含一個「Program」類別,預設的程式碼如下,在「Main」方法透過「Console.WriteLine」方法輸出「Hello World!」訊息到主控台:

 

Visual Studio 2022開發工具建立主控台應用程式(Console Application)類型的專案,專案建立完成後,只見專案中有一個「Program.cs」檔案,裏頭只有包含一行程式碼。C# 在第九版時新增最上層語句(Top-level Statements)這個功能,讓主控台類型的程式碼可以不必明確地定義一個「Main」方法當程式碼的進入點,這個專案執行後會在主控台輸出「Hello, World!」字串:

7:主控台應用程式(Console Application)專案




l  ASP.NET Core MVC網站專案範本

除了主控台類型應用程式的專案和上一個版本不相同之外,ASP.NET Core網站範本也做了一些改良,簡化許多程式碼,例如使用Visual Studio 2022建立一個「ASP.NET Core MVC」範本專案來參考,請參考下圖所示:

8ASP.NET Core MVC網站專案範本


專案中有一個「Program.cs」檔案,這個檔案是網站程式的進入點,檔案中包含以下程式碼,比前版Visual Studio 2019建立的專案少了許多基礎程式碼:


當您執行這個專案,將啟動瀏覽器,執行結果參考下圖所示:


9ASP.NET Core MVC範本網站



l  .NET升級之路 

如果有跨平台需求,或是想設計微服務、將應用程式部署到Linux Docker 容器、需要高效能且可擴充的系統,那麼就要考慮一下從.NET Framework平台升級到.NET 6,在.NET Framework平台上的程式設計人員根據使用的技術與架構,建議升級學習路徑如下:

l   使用Windows FormsWPF開發桌上型應用程式,可直接升級到.NET 6Windows FormsWPF

l   使用ASP.NET MVC 5 開發網站程式,可以升級至ASP.NET Core MVC

l   使用ASP.NET Web Forms 開發網站程式,可以升級至ASP.NET Core Razor PageBlazor Server

l   ASP.NET MVC 5 Web API服務,可以升級至ASP.NET Core Web API Minimal API(基本 Api)。

l   使用WCF服務,可以升級至gRPC來設計遠端程序呼叫應用程式(Remote Procedure Call app)。



👍學習推薦

l   【UAC396】從概念到實踐ASP.NET Core MVC框架開發Part 1

l   【UAC397】從概念到實踐ASP.NET Core MVC框架開發Part 2

l   【UAC395】從零開始學習ASP.NET Core Razor Page網站開發

l   【UAC398】ASP.NET Core Blazor Server元件導向網站開發設計

l   【UN299】.NET MAUI桌上與行動裝置跨平台開發

l   【UN392】.NET 7關鍵技術全解析

👉👉👉索取微軟網站開發技術系列 優惠訊息與課程資料




0 意見:

張貼留言