掌握.NET 7,打造跨平台應用
作者:羅慧真 精誠資訊/恆逸教育訓練中心資深講師
版本的演進
.NET Framework最後一個版本是4.8,它是以Windows作業系統為主的軟體框架,而.NET Core的版本是從3.x開始算起是2014年發佈的,是Microsoft重新以符合跨多種作業系統Windows、Linux、maxOS撰寫的開放源軟體開發框架。起初的命名是.NET
Core 3.x,下一版索性將Core字眼拿掉,並為了避免與.NET Framework 4.x版搞混,所以直接跳了一個版本為.NET 5.0;並且Microsoft制定了每個版本的發佈週期以及支援的策略,支援的策略基本上分為兩種:
l STS:標準期限支援(Standard Term Support),為期18個月。
l LTS:長期支援(Long Term Support),為期36個月。
從此圖看來,奇數版本是標準期限支援,偶數版本是長期支援。
(參考圖: https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core)
.NET 7最大特色就是 (根據官網描述)
著重於整合、現代化、簡單且快速
.NET 7為C#、F#以及.NET MAUI、Blazor、ASP.NET Core、Web API、WPF、WinForms … 等應用程式帶來更高性能及新功能。整體運算符合現代化的雲端原生模型的定義,透過容器的微服務架構開發具有快速移植、提高效率、降低維護成本及業界最強的隔離能力的雲端架構。
.NET MAUI擴大.NET跨平台的版圖
話說回來,.NET Core已經達到真正跨到不同的作業系統(Windows、Linux、maxOS),到了.NET 6之後,Microsoft將Xamarin Forms整合進.NET,並為其命名為.NET MAUI,而這帶來了擴大.NET跨平台的版圖,開發人員只需要寫一次程式,經過編譯便可生成執行於Android、iOS、macOS、Windows等平台上的應用程式(也就是實踐了跨電腦與行動裝置的應用程式)。
.NET 6為了實現這樣的願景提供了一系列的平台架構,如下圖(圖源自於微軟官方網站https://learn.microsoft.com/zh-tw/dotnet/maui/what-is-maui)。
包含適用於Android、iOS、Mac的.NET (.NET for Android、.NET for iOS、.NET for Mac),還有WinUI 3程式庫。它們一致存取.NET 6 BCL (基本類別庫) ,而BCL提供抽象化程序會在.NET執行階段對應到合適的執行環境,以Android、iOS、macOS來說,它們的執行環境是使用Mono Runtime,而Windows作業系統則是.NET Core CLR。
這一大跨越,對於開發團隊而言是一大福音,因為它大大減少了應用程式開發的成本和複雜度。
前端網頁開發使用Blazor + C#
現今流行的前端網頁開發、SPA(Single
Page Application)等技術,市場流行的架構包含Angular、React、VUE …等,這些架構都是以JavaScript語言為基礎的實作;而您若是早已熟悉C#語言及.NET架構的生態系統,又有發展前端網頁應用程式的需求,那麼何需再重新學習另一種語言生態(JavaScript語言為基礎的網頁架構Angular、React、VUE…),熟悉C#的您,Blazor ASP.NET
Core就是您最佳的選擇。
Blazor是在.NET Core 3.x加入.NET家族的,到如今.NET 7.0已經是一個相當成熟的產品,事實上「Blazor」是Microsoft自創的新字,由此兩字組合而成:
Browser + Razor = Blazor
Blazor WebAssembly是運行在用戶端的瀏覽器上,再次強調您的App是使用C# 並使用.NET基礎程式庫,也就是您所熟悉的環境下開發前端應用程式。隨著.NET版本(7)的推進,Blazor也可執行在傳統應用程式WPF、WinForm,甚至是.NET MAUI。
支援gRPC
gRPC是由Google發起的遠端程序呼叫(Remote procedure call)的開放源系統,是基於HTTP/2傳輸協定,且使用Protocol Buffers做為介面描述語言(Protobuf格式:輕量級的二進位序列化格式,比XML、JSON更為精簡有效率)。可以用於認證、雙向串流、串流控制、適用於跨平台、語言相容的微服務架構。
現在可以透過Visual Studio 2022使用ASP.NET Core gRPC服務建構gRPC服務端。
使用任何類型的專案(WPF、WinForm、.NET MAUI …)建構用戶端應用程式,並在專案中加入NuGET套件:Grpc.Net.Client、Google.Protobuf、Grpc.Tools,便可使用gRPC雙向傳輸的功能。
舊版升級
對於傳統應用程式WPF、 WinForm,Microsoft同等的重視這些舊有的技術,.NET 7提供了平順的升級工具,也就是說,您可以將在.NET
Framework時代所寫的程式升級到跨平台的.NET。
這是原本使用.NET Framework 4.7.2所建立的WPF專案。
經過終端機指令:
upgrade-assistant upgrade [專案名稱]
專案便完成升級的程序。
對於以上內容有興趣的,您可參考恆逸教育訓練中心以下課程:
l 【UAC498】從設計到實作ASP.NET Core Blazor網站開發
在過去設計網站應用程式,至少要學兩種程式語言,前端瀏覽器使用JavaScript,再挑選個後端伺服端技術,例如ASP.NET
Core或PHP。現在.NET的框架中新增ASP.NET Core Blazor,可以讓您取代JavaScript,從前端寫到後端都使用相同的C#程式語言來撰寫程式碼。Blazor開發架構分為兩種:Blazor
WebAssembly與Blazor Server。本課程將專注在Blazor Server框架,以建立互動式網站應用程式。
l 【UN291】.NET與Docker Container微服務實務應用
使用容器的微服務架構是一個快速移植、提高效率、降低維護成本及業界最強的隔離能力的雲端架構。本課程將利用Visual Studio開發工具,並使用.NET Core技術建立現代化、以雲端為基礎的RESTful網站應用程式;並利用Docker Container開發,方便後續部署至Kubernetes(K8s)微服務架構的網站應用程式。
l 【UN398】.NET MAUI跨界先鋒從桌面到移動的全平台開發旅程
有想過撰寫一次代碼,即可遊走四大平台(Android、iOS、macOS、Windows)嗎?
.NET
MAUI實現了這樣的願景,它的前身是由Xamarin.Forms演進而來。使用C#和 XAML撰寫一次代碼即可建構可執行於Android、iOS、macOS、Windows上的App。
本課程將使用C#、XAML及Visual Studio 2022開發.NET MAUI桌上與行動裝置的應用程式,您將學會如何使用XAML定義UI畫面,了解多種版面配置及使用者經驗,應用資源與樣式達到UI一致性及共享的特質,以及資料存取、WEB
API的連結,具備硬體裝置的存取能力,最後知道如何將完成的App部署及預備。
l 【UN492】.NET精粹的極致技術解密之旅
您將透過這個課程了解.NET 7(.NET Core)與.NET
Framework的差別,以及.NET 7如何真正實踐跨平台架構,您也將透過這個課程了解C#、10、11 的重大更新,以及如何將傳統的WPF、 Windows Form專案升級到.NET 7 。此外,您將學到Entity Framework 7的相關知識,還有透過.NET的API做檔案管理與資料串流的處理,同時您將學到效能的增進上使用非同步程式設計的相關技術,包括Task、async/await、平行處理和PLINQ。另外,您將學會如何使用JSON序列化和WebAPI、gRPC及微服務進行遠端存取。最後,本課程還將介紹背景工作服務與歷程紀錄(警告訊息、錯誤訊息的Log)以及應用程式的組態、部署與發佈,以幫助您掌握完整的應用程式開發流程。透過這些課程內容,您將能夠建立跨平台的應用程式,並學習使用各種相關的技術和工具,讓您能夠在開發應用程式的過程中更加得心應手。
0 意見:
張貼留言