想了很久我决定发一个Maui介绍作为开篇,虽然这是老生常谈的话题,但是不能没有这样的探讨(请容我水一篇)。
NET Mauiとは?
NET Mauiは、. NET Multi-Platform Application UI. NET MAUIをベースとしたマイクロソフトのクロスプラットフォームフレームワークで、C#とXAMLを使用してネイティブのモバイルおよびデスクトップアプリケーションを作成します。. NET MAUIを使用すると、Android、iOS、macOS、Windows 上で動作する単一の共有コードベースからアプリケーションを開発できます。
NET MauiはXamarin.Formsから生まれ、Xamarin.Formsの経験があれば、Mauiは非常に使いやすいでしょう。. NET MAUIを使用すると、単一のプロジェクトを使用してマルチプラットフォームアプリケーションを作成できますが、必要に応じてプラットフォーム固有のソースコードやリソースを追加できます。NET MAUIの主な目標は、単一のコードベースでできるだけ多くのアプリケーションロジックとUIレイアウトを実装することです。

NET Mauiサポートされるプラットフォーム{{. NET Mauiさぽーとされるぷろーむ}}
- Android 5.0以降API 21
- iOS 10以降Uit
- macOS 10.13以降Mac Catalyst Uit
- Windows 11およびWindows 10(18 0 9)以降(WinUI3 Windows AppSdk)
- Tizen、Samsungがサポート(現在はエンジニアリングテンプレートに統合)
- コミュニティがサポートするLinux
NET Mauiの動作
NET MAUIは、Android、iOS、macOS、WindowsのAPIを単一のAPIに統合し、あらゆる開発者エクスペリエンスを一度に1つのAPIに書き込むことができ、各ネイティブプラットフォームのあらゆる側面への深いアクセスを提供します。
NET 6では、. NET for Android、. NET for iOS、. NET for macOS、Windows UI 3 WinUI 3ライブラリなど、アプリケーションを作成するためのプラットフォーム固有のフレームワークが提供されます。これらのフレームワークはすべて、同じ. NET 6ベース·クラスライブラリBCLにアクセスできます。このライブラリは、ベースとなるプラットフォームの詳細をコードから抽象化します。BCLは. NETランタイムに依存し、コード実行環境を提供します。
Android、iOS、macOSの場合、環境は. NETランタイムの実装であるMonoによって実装されています。Windowsでは、Win 32が実行環境を提供します。
BCLは、異なるプラットフォーム上で動作するアプリケーションが共通のビジネスロジックを共有できるようにしますが、さまざまなプラットフォームはアプリケーションのユーザーインターフェイスを定義する方法が異なり、ユーザーインターフェイス要素の通信方法と相互運用方法を指定するための異なるモデルを提供します。Android、iOS、macOS、Win UI 3用の. Netを使用して、プラットフォームごとにUIを個別に作成できますが、この方法では、個々のデバイスファミリごとにコードベースを維持する必要があります。NET MAUIは、モバイルおよびデスクトップアプリケーション用のUIを構築するためのフレームワークを提供します。
次の図は、. NET MAUIアプリケーションのアーキテクチャの高レベルビューを示しています。

NET MAUIアプリケーションでは、ネイティブプラットフォームAPIを直接使用する. NET MAUI APIと主にやりとりするコードを記述します。アプリケーションコードは、必要に応じてプラットフォームAPIを直接使用できます。
NET MAUIアプリケーションはWindows PCまたはMacで記述でき(現在はvs2022プレビューが必要)、ネイティブアプリケーションパッケージにコンパイルされます。
- NET MAUIを使用してコンパイルされたAndroidアプリケーションは、C#から中間言語ILにコンパイルされ、アプリケーション起動時JITにネイティブアセンブリにコンパイルされます。
- NET MAUIを使用してコンパイルされたiOSアプリケーションは完全にネイティブにコンパイルされますC#からネイティブARMアセンブリコードにコンパイルされたAOT。
- macOSで. NET MAUIを使用してコンパイルされたアプリケーションはMac Catalystを使用しています。これはAppleが提供するソリューションで、UIKitで作成したiOSアプリケーションをデスクトップに取り込み、必要に応じて他のAppKitやプラットフォームAPIで拡張できます。
- NET MAUIを使用してWindowsが作成したアプリケーションは、Windows UI 3 WinUI 3ライブラリを使用して、Windowsデスクトップ向けのネイティブアプリケーションを作成します。
NET Mauiの他のアプリケーション
- NET Mauiはすでに各プラットフォームのネイティブコントロールのカプセル化を提供していますが、Mauiが提供するカスタム描画エンジン(Microsoft.Maui.Graphics)を使用して、ニーズに合ったコントロールを描画することができます。
- NET MAUI Blazorアプリを作成してWebページと同じエクスペリエンスを実現することもできます。. NET MAUI Blazorアプリは、現在サポートされているプラットフォーム固有のWebViewコントロールを更新する必要があります。
- Android 7.0 API 24以降Chrome
- iOS 14以降Safari
- Mac Catalyst macOS 11以降Safari
- Windows 11、Windows 10(18 0 9)以降(Edge webview2)
- TIZEN(不明)
- Linux不明
NET Maui開発に必要な技術的知識:
- ベース::
- .NET
- C#
- Xaml
- Maui
- 拡張子:
- WinUI3 apiおよびWindowsプラットフォームApi Windows
- Android API(Android)(ハードウェアを呼び出す必要がある場合は通常必要ありません)
- UIKit,iOSプラットフォームAPI(iOS)(ハードウェアを呼び出す必要がある場合は通常必要ありません)
- UIKit,Appkit, MacOS api(Mac)
- Blazor必須ではありません
NET Mauiの長所と短所
利点:
C#+. Net開発を使用して、簡単に始め、アップグレードが簡単で、宇宙初のIDEとの作業効率は同じではありません。
マイクロソフトのテクノロジーには共通点があります(WPFに簡単に移行できます)
工場の保証。
異なるプラットフォームでプラットフォーム独自のコントロールを使用してネイティブパフォーマンスを保証
Blazorとの連携により、Webサイドとの一貫したエクスペリエンスを実現
短所:
Windows 7をサポートしておらず、Windows 10版もあります。
正式にリリースされたが、まだ安定していない
C#なので、Javaやフロントエンド(ほとんどの工場はJavaです)ほど満足のいく仕事を見つけるのは簡単ではありません。
マイクロソフトはカットが好き。
ネイティブであることは保証されていますが、異なるプラットフォームに適応する必要があることを意味します(自己マッピングではありません)。
ネイティブであることは保証されていますが、プラットフォームについて学ぶ必要があります(もちろん、これはすべてのクロスプラットフォームアプリケーションで学ぶ必要があります)。
クロスプラットフォーム開発フレームワークの種類:
- QT(C++を使用しています。個人的には、現時点では真の意味でクロスプラットフォームであり、組み込みもサポートしています)自己描画
- Flutter(Dart言語を使用したGoogleのクロスプラットフォームフレームワーク)(セルフペイント)
- Uno platform(C#はMauiに似ている)
- Avalonia C#クラスWPFセルフペイント
- CPF C#国産クロスプラットフォームUI開発フレームワーク、サポート龍芯自己描画
- Electron (ウェブテクノロジー)
関連する学習リンク:
- Maui:.NET 多平台应用 UI 文档 - .NET MAUI | Microsoft Docs
- C#平台调用:平台调用 (P/Invoke) | Microsoft Docs
- Windows Api: pinvoke.net: memcpy (msvcrt)
- WinUI3: 创建第一个 WinUI 3(Windows 应用 SDK)项目 - Windows apps | Microsoft Docs
- UIKIT:UIKit Namespace | Microsoft Docs
- AppKit: AppKit Namespace | Microsoft Docs
- Community ToolKit:使用 .NET 多平台应用 UI (.NET MAUI) Community Toolkit 入门 - .NET Community Toolkit | Microsoft Docs