国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

一次編碼,無處不在:深入探討 .NET MAUI 的跨平臺(tái)魔力

.NET MAUI(多平臺(tái)應(yīng)用程序 UI)由 Microsoft 開發(fā),是一個(gè)開源框架,用于為多個(gè)平臺(tái)構(gòu)建本機(jī)移動(dòng)和桌面應(yīng)用程序,包括 Android、iOS、macOS、Windows 等,并且也使用單一代碼庫。與 Xamarin 表單不同,開發(fā)人員必須為每個(gè)目標(biāo)平臺(tái)維護(hù)單獨(dú)的代碼庫。 

.NET Framework 概述

如果您知道.NET 框架是什么以及它是如何工作的,那么您可以跳過本節(jié)并跳轉(zhuǎn)到“它是如何工作的”。

.NET Framework 是 Microsoft 創(chuàng)建的軟件開發(fā)平臺(tái)。它提供了一個(gè)全面且一致的編程模型,用于跨各種 Microsoft Windows 平臺(tái)(包括桌面、Web 和移動(dòng)設(shè)備)構(gòu)建和運(yùn)行應(yīng)用程序。

以下是 .NET Framework 的一些主要功能和組件:

  1. 公共語言運(yùn)行時(shí) (CLR):  CLR 是 .NET Framework 的基礎(chǔ)。它提供內(nèi)存管理、垃圾收集和異常處理等核心服務(wù)。它還支持語言互操作性,允許在同一應(yīng)用程序中一起使用多種編程語言。

  2. 基類庫 (BCL): BCL 是預(yù)構(gòu)建的類、類型和 API 的集合,為開發(fā)人員提供了廣泛的功能。它包括文件 I/O、網(wǎng)絡(luò)、數(shù)據(jù)訪問、加密、線程等類。BCL 提供可重復(fù)使用的組件,可簡化應(yīng)用程序開發(fā)。

  3. 語言支持: .NET Framework 支持多種編程語言,包括 C#、Visual Basic .NET (VB.NET) 和 F#。開發(fā)人員可以選擇自己喜歡的語言來編寫代碼,并利用每種語言可用的豐富工具和庫。

  4. 框架類庫 (FCL): FCL 是構(gòu)建在 BCL 之上的庫和框架的集合。它為特定類型的應(yīng)用程序提供附加功能,例如用于桌面應(yīng)用程序的 Windows Presentation Foundation (WPF)、用于 Web 開發(fā)的 ASP.NET 以及用于構(gòu)建面向服務(wù)的應(yīng)用程序的 Windows Communication Foundation (WCF)。

  5. 部署和執(zhí)行: .NET Framework 應(yīng)用程序通常部署為已編譯的程序集(.exe 或 .dll 文件)以及任何所需的依賴項(xiàng)。在運(yùn)行時(shí),程序集由 CLR 執(zhí)行,CLR 即時(shí) (JIT) 將 IL(中間語言)代碼編譯為本機(jī)機(jī)器指令。

.NET MAUI 的工作原理

編寫 .NET MAUI 代碼(主要是 C#)后,將發(fā)生以下步驟:

構(gòu)建應(yīng)用程序

  • 代碼(包括對(duì) BCL 類的引用)是使用 .NET 構(gòu)建工具或集成開發(fā)環(huán)境 (IDE)(如Visual Studio) .

  • 在構(gòu)建過程中,C# 代碼會(huì)轉(zhuǎn)換為中間語言 (IL) 或通用中間語言 (CIL)。該 IL 與平臺(tái)無關(guān),可以在具有兼容 .NET 運(yùn)行時(shí)的任何平臺(tái)上運(yùn)行。

  • 我們還可以安裝并啟用提前編譯(AOT)。如果啟用此功能,則將跳過下面的步驟 2 和 3,并且 .NET MAUI 將從 IL 生成目標(biāo)環(huán)境的本機(jī)代碼。

  • 當(dāng) AOT 激活時(shí),Mono 運(yùn)行時(shí)用于將 .NET MAUI 代碼轉(zhuǎn)換為 iOS 和 Android 平臺(tái)的本機(jī)代碼,而 .NET CLR 用于 Windows 來實(shí)現(xiàn)相同的轉(zhuǎn)換。

特定于平臺(tái)的編譯

  • 然后,IL 代碼以及引用的 BCL 程序集被編譯為每個(gè)目標(biāo)平臺(tái)的特定于平臺(tái)的二進(jìn)制文件。

  • 對(duì)于 Android,.NET MAUI 工具將 IL 代碼和 XAML 以及任何必要的 .NET 庫打包到 Android 包 (APK) 中。這是一個(gè)用于分發(fā) Android 應(yīng)用程序的存檔文件。

  • 對(duì)于 iOS,Apple 不允許 JIT 在 iOS 設(shè)備上運(yùn)行。因此,您將無法在 iOS 上運(yùn)行您的應(yīng)用程序。對(duì)于Apple,請(qǐng)使用提前編譯。

  • 對(duì)于 Windows,IL 代碼可以在運(yùn)行時(shí)進(jìn)行即時(shí) (JIT) 編譯,也可以使用 Windows UI 3 (WinUI 3) 庫使用 .NET 本機(jī)編譯器提前 (AOT) 編譯為本機(jī)指令。

注意: Android 工具鏈(.NET for Android)和 Windows UI 3 (WinUI 3) 庫是 .NET 框架(6 或更高版本)的一部分。

執(zhí)行以及與 BCL 的交互

  • 已編譯的應(yīng)用程序以及所需的 BCL 程序集將在相應(yīng)的目標(biāo)平臺(tái)上部署和執(zhí)行。

  • 當(dāng)應(yīng)用程序在 Android 設(shè)備上啟動(dòng)時(shí),.NET MAUI 運(yùn)行時(shí)會(huì)將 IL 代碼即時(shí) (JIT) 編譯為可以執(zhí)行的本機(jī)機(jī)器代碼。

  • 在運(yùn)行時(shí),應(yīng)用程序可以與 BCL 類和 API 進(jìn)行交互,利用它們的功能來執(zhí)行各種任務(wù)。

  • 例如,如果您的應(yīng)用程序需要讀取文件,您可以利用“System.IO.File”等 BCL 類來訪問文件 I/O 操作。

  • 同樣,如果您的應(yīng)用程序需要網(wǎng)絡(luò)功能,您可以使用 BCL 提供的“System.Net”命名空間中的類來處理網(wǎng)絡(luò)任務(wù)。

  • .NET MAUI 渲染引擎使用 XAML 標(biāo)記為 Android 平臺(tái)構(gòu)建本機(jī)用戶界面。

在特定于平臺(tái)的編譯過程中,代碼中指定的任何特定于平臺(tái)的資源和資產(chǎn)(例如圖像、布局和配置文件)也包含在輸出中。此外,必要的特定于平臺(tái)的運(yùn)行時(shí)庫和依賴項(xiàng)與應(yīng)用程序捆綁在一起,以確保它在每個(gè)目標(biāo)平臺(tái)上正確運(yùn)行。

下圖說明了前面提到的步驟:

圖表是使用 Draw.io 準(zhǔn)備的

圖表是使用 Draw.io 準(zhǔn)備的

安裝和設(shè)置

我們可以使用 Visual Studio Community 版本創(chuàng)建 .NET MAUI 項(xiàng)目。從此處(https://visualstudio.microsoft.com/vs/community/)下載相同的內(nèi)容。請(qǐng)注意,我們必須安裝 2022 才能使用 .NET MAUI。該鏈接將下載 Visual Studio 安裝程序。雙擊該文件運(yùn)行程序,在“桌面和移動(dòng)”選項(xiàng)下選擇“.NET Multi-platform UI App”(如下圖紅框所示)。

桌面和移動(dòng)設(shè)備

這將開始下載和安裝構(gòu)建移動(dòng)應(yīng)用程序所需的所有工具。設(shè)置完成后,您就可以開發(fā)移動(dòng)應(yīng)用程序了。這不是那么容易嗎?打開Visual Studio社區(qū)版并單擊“創(chuàng)建新項(xiàng)目”鏈接,如下所示:

創(chuàng)建一個(gè)新項(xiàng)目

將項(xiàng)目和解決方案名稱命名為“MauiApp1”。

.NET MAUI 應(yīng)用程序的項(xiàng)目結(jié)構(gòu)

應(yīng)用程序的典型結(jié)構(gòu)如下所示:

.NET MAUI 應(yīng)用程序的項(xiàng)目結(jié)構(gòu)

讓我們討論每個(gè)文件夾及其內(nèi)容。

依賴項(xiàng):此文件夾包含運(yùn)行和開發(fā)應(yīng)用程序所需的所有必需的 SDK、NuGet 包、庫和組件。

屬性:它僅包含一個(gè)文件“l(fā)aunchSettings.json”,用于啟動(dòng)和調(diào)試應(yīng)用程序。一般用于添加環(huán)境變量、參數(shù)等。見下面的例子:

ASPNETCORE_ENVIRONMENT

該應(yīng)用程序已配置為在端口 80 上的瀏覽器上運(yùn)行,環(huán)境變量“ASPNETCORE_ENVIRONMENT”的值為“Development”。當(dāng)我們運(yùn)行應(yīng)用程序時(shí),將使用帶有參數(shù)“run”的命令“dotnet”。請(qǐng)注意,該文件最初可能非常簡單。但是,隨著開發(fā)的進(jìn)展,我們必須經(jīng)常更新文件以更改/添加配置值。

平臺(tái)

此文件夾包含每個(gè)環(huán)境的子文件夾。在這些子文件夾中,我們有特定于平臺(tái)的代碼、資源、依賴項(xiàng)和配置。這種分離允許開發(fā)人員在不同平臺(tái)上自定義應(yīng)用程序的行為和外觀,同時(shí)維護(hù)通用功能的共享代碼庫。

常見用法可以包括條件編譯以排除或包含特定代碼段、基于平臺(tái)的性能優(yōu)化配置以及特定于平臺(tái)的測(cè)試配置。

資源

該文件夾包含各種非代碼資源,例如圖像、圖標(biāo)、樣式和本地化文件。請(qǐng)注意,存儲(chǔ)在這些文件夾中的資源與平臺(tái)無關(guān)。這意味著相同的資源可以在不同的目標(biāo)平臺(tái)(iOS、Android、Windows)上使用,而無需復(fù)制文件或編寫特定于平臺(tái)的代碼。

現(xiàn)在讓我們看看這些獨(dú)立的根級(jí)文件的用途:

  • App.xaml:此文件充當(dāng)定義適用于整個(gè)應(yīng)用程序的共享資源、配置和行為的中心位置。它有助于確保一致性,簡化初始化和清理,并允許您有效地處理重要的生命周期事件。

  • AppShell.xaml:此文件用于定義應(yīng)用程序的導(dǎo)航。Shell 元素中子元素的順序決定了頁面的顯示順序。

  • MainPage.xaml:此文件充當(dāng)應(yīng)用程序初始用戶界面的畫布,并提供導(dǎo)航和用戶交互的起點(diǎn)。您可以在這里為應(yīng)用程序的用戶體驗(yàn)定下基調(diào),并定義用戶啟動(dòng)應(yīng)用程序時(shí)的第一印象。例如,它可以包含 StackLayout、Grid 或relativelayout 等容器來排列各種 UI 元素,例如按鈕、標(biāo)簽、圖像和其他控件。

  • MauiProgram.cs:該文件包含主類“MauiProgram”,它作為應(yīng)用程序的啟動(dòng),用于配置字體、服務(wù)和其他第三方庫。

總結(jié)

從本質(zhì)上講,.NET MAUI 使開發(fā)人員能夠創(chuàng)建針對(duì)多個(gè)平臺(tái)的多功能、高效且令人驚嘆的應(yīng)用程序,而不會(huì)影響本機(jī)性能。其項(xiàng)目結(jié)構(gòu)、渲染引擎以及與 .NET 生態(tài)系統(tǒng)的無縫集成為跨平臺(tái)開發(fā)的新時(shí)代奠定了基礎(chǔ),邀請(qǐng)開發(fā)人員制作讓不同設(shè)備和操作系統(tǒng)的用戶滿意的應(yīng)用程序。隨著技術(shù)格局的不斷發(fā)展,.NET MAUI 成為現(xiàn)代開發(fā)人員工具包中不可或缺的工具,彌合了平臺(tái)多樣性和代碼簡單性之間的差距。


文章來源地址http://www.zghlxwxcb.cn/article/422.html

到此這篇關(guān)于一次編碼,無處不在:深入探討 .NET MAUI 的跨平臺(tái)魔力的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

原文地址:http://www.zghlxwxcb.cn/article/422.html

如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)聯(lián)系站長進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 開源無處不在,發(fā)展創(chuàng)新下又有何弊端

    隨著信息技術(shù)的快速發(fā)展,開源軟件已經(jīng)成為軟件開發(fā)的趨勢(shì),并產(chǎn)生了深遠(yuǎn)的影響。開源軟件的低成本、可協(xié)作性和透明度等特點(diǎn),使得越來越多的企業(yè)和個(gè)人選擇使用開源軟件,促進(jìn)了軟件行業(yè)的繁榮。然而,在使用開源軟件的過程中,也需要關(guān)注其可能帶來的問題,如

    2024年02月20日
    瀏覽(18)
  • vue設(shè)置全局變量:讓你的數(shù)據(jù)無處不在!

    vue設(shè)置全局變量:讓你的數(shù)據(jù)無處不在!

    在 vue 開發(fā)中,如何設(shè)置全局變量是一個(gè)關(guān)鍵問題。本文將介紹多種方法,幫助大家輕松實(shí)現(xiàn)全局變量的共享,提升 vue 項(xiàng)目的開發(fā)效率。讓我們一起來探索這些方法,為你的 vue 項(xiàng)目帶來更好的開發(fā)體驗(yàn)。 通過在 vue 的原型上定義屬性,可以在所有組件中訪問該屬性。例如,

    2024年02月08日
    瀏覽(27)
  • vr全景展示三大問題解析,讓你的店鋪無處不在

    未來互聯(lián)網(wǎng)營銷趨勢(shì)走的是可視化發(fā)展路線,因此VR全景展示技術(shù)作為互聯(lián)網(wǎng)時(shí)代新營銷和宣傳工具,可以讓客戶一目了然,提升企業(yè)品牌形象和客戶信任度。vr全景展示能夠給用戶帶來強(qiáng)烈視覺體驗(yàn),這種沉浸感讓用戶可以深度參與其中,感同身受,因此作為品牌營銷是非常

    2024年02月08日
    瀏覽(22)
  • 一鍵同步,無處不在的書簽體驗(yàn):探索多電腦Chrome書簽同步插件

    一鍵同步,無處不在的書簽體驗(yàn):探索多電腦Chrome書簽同步插件

    平時(shí)大家都是怎么管理自己的瀏覽器書簽數(shù)據(jù)的呢?有沒有過公司和家里的電腦瀏覽器書簽不同步的情況?有沒有過電腦突然壞了但書簽數(shù)據(jù)沒有導(dǎo)出,導(dǎo)致書簽數(shù)據(jù)丟失了?解決這些問題的方法有很多,我選擇自己寫個(gè)chrome插件來做書簽同步。 通過 gitee 來做存取 建一個(gè)私

    2024年02月08日
    瀏覽(20)
  • 【觀察】Akamai:向分布式云邁出堅(jiān)實(shí)一步,讓云和邊緣“無處不在”

    【觀察】Akamai:向分布式云邁出堅(jiān)實(shí)一步,讓云和邊緣“無處不在”

    近年來,云正如同日常生活中的水、電那樣,融入到社會(huì)的各個(gè)層面,它不再是一種單純的架構(gòu)或者技術(shù),而是千行百業(yè)走向數(shù)字化的核心基礎(chǔ)設(shè)施;云也正在變成一種融合劑,無論是大數(shù)據(jù)、人工智能、物聯(lián)網(wǎng)等,這些新的技術(shù)也正在加速融入云中;同樣,今天“萬物皆云

    2024年02月02日
    瀏覽(25)
  • 不可思議但又無處不在的漏洞,WEB安全基礎(chǔ)入門—業(yè)務(wù)邏輯漏洞

    不可思議但又無處不在的漏洞,WEB安全基礎(chǔ)入門—業(yè)務(wù)邏輯漏洞

    歡迎關(guān)注訂閱專欄! WEB安全系列包括如下三個(gè)專欄: 《WEB安全基礎(chǔ)-服務(wù)器端漏洞》 《WEB安全基礎(chǔ)-客戶端漏洞》 《WEB安全高級(jí)-綜合利用》 知識(shí)點(diǎn)全面細(xì)致,邏輯清晰、結(jié)合實(shí)戰(zhàn),并配有大量練習(xí)靶場(chǎng),讓你讀一篇、練一篇,掌握一篇,在學(xué)習(xí)路上事半功倍,少走彎路! 歡

    2024年02月02日
    瀏覽(23)
  • [小塵送書-第二期]《從零開始讀懂量子力學(xué)》由淺入深,解釋科學(xué)原理;從手機(jī)到超導(dǎo),量子無處不在;從微觀到宏觀,遐想人生的意義!

    [小塵送書-第二期]《從零開始讀懂量子力學(xué)》由淺入深,解釋科學(xué)原理;從手機(jī)到超導(dǎo),量子無處不在;從微觀到宏觀,遐想人生的意義!

    大家好,我是小塵,歡迎關(guān)注,一起交流學(xué)習(xí)!歡迎大家在CSDN后臺(tái)私信我!一起討論學(xué)習(xí),討論如何找到滿意的工作! 從微小的原子到浩瀚的宇宙,從每一滴水到閃亮的鉆石,從劃破夜空的激光到你身邊的手機(jī)……所有事物的背后都有量子力學(xué)在主宰!你看過世界級(jí)暢銷書

    2024年02月15日
    瀏覽(23)
  • [MAUI]深入了解.NET MAUI Blazor與Vue的混合開發(fā)

    [MAUI]深入了解.NET MAUI Blazor與Vue的混合開發(fā)

    .NET MAUI結(jié)合Vue的混合開發(fā)可以使用更加熟悉的Vue的語法代替Blazor語法,你現(xiàn)有項(xiàng)目不必重寫。之前寫過一篇 [MAUI] 在.NET MAUI中結(jié)合Vue實(shí)現(xiàn)混合開發(fā) ,其中介紹了如何創(chuàng)建一個(gè)vue應(yīng)用并將其打包至MAUI項(xiàng)目,這種方式依賴vue-cli創(chuàng)建和打包靜態(tài)站點(diǎn),好處是可以使用Node.js 的構(gòu)建但

    2024年02月08日
    瀏覽(50)
  • 深入探討 C# 和 .NET 中 async/await 的歷史、背后的設(shè)計(jì)決策和實(shí)現(xiàn)細(xì)節(jié)

    對(duì) async/await 的支持已經(jīng)存在了十多年。它的出現(xiàn),改變了為 .NET 編寫可伸縮代碼的方式,你在不了解幕后的情況下也可以非常普遍地使用該功能。 從如下所示的同步方法開始(此方法是“ 同步的 ”,因?yàn)樵谡麄€(gè)操作完成并將控制權(quán)返回給調(diào)用方之前,調(diào)用方將無法執(zhí)行任何

    2024年02月08日
    瀏覽(28)
  • [MAUI]在.NET MAUI中復(fù)刻蘋果Cover Flow

    [MAUI]在.NET MAUI中復(fù)刻蘋果Cover Flow

    @ 目錄 原理 3D旋轉(zhuǎn) 平行變換 創(chuàng)建3D變換控件 繪制封面圖片 應(yīng)用3D旋轉(zhuǎn) 應(yīng)用平行變換 繪制倒影 創(chuàng)建綁定屬性 創(chuàng)建綁定數(shù)據(jù) 創(chuàng)建布局 計(jì)算位置 計(jì)算3D旋轉(zhuǎn) 創(chuàng)建動(dòng)效 項(xiàng)目地址 Cover Flow是iTunes和Finder中的一個(gè)視圖選項(xiàng),允許用戶使用水平滾動(dòng)的圖像查看他們的音樂庫或文件。

    2024年02月05日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包