코젤브

.NET MAUI 란? 본문

컴공의 일상/.NET MAUI

.NET MAUI 란?

코딩하는 젤리 2024. 7. 8. 11:58

.NET MAUI(.NET 다중 플랫폼 앱 UI)

C#과 XAML을 사용하여 네이티브 모바일 및 데스크톱 앱을 만들기 위한 플랫폼 간 프레임워크

단일 공유 코드 베이스에서 여러 플랫폼 (Android, iOS, macOS, windows)에서 실행할 수 있는 앱(네이티브 애플리케이션)을 개발할 수 있음

  • "네이티브 앱 패키지"
    • 각 플랫폼에서 실행될 수 있도록 패키징된 네이티브 애플리케이션을 의미
    • 즉, .NET MAUI를 사용하여 개발된 애플리케이션은 각각의 플랫폼(Android, iOS, Windows, macOS)에서 요구하는 형태로 패키징되어 실행
    • 이를 통해 사용자는 각 플랫폼의 네이티브 성능과 사용자 경험을 누릴 수 있음
  • 각 플랫폼에서 네이티브 앱 패키징
    • Android: .NET MAUI 앱은 Android용으로 패키징될 때 .apk 또는 .aab 파일로 컴파일됩니다. 이는 Android 장치에서 설치되고 실행될 수 있는 네이티브 Android 애플리케이션입니다.
    • iOS: .NET MAUI 앱은 iOS용으로 패키징될 때 .ipa 파일로 컴파일됩니다. 이는 iOS 장치(예: iPhone, iPad)에서 설치되고 실행될 수 있는 네이티브 iOS 애플리케이션입니다.
    • Windows: .NET MAUI 앱은 Windows용으로 패키징될 때 .msix 또는 .exe 파일로 컴파일됩니다. 이는 Windows 운영체제에서 실행될 수 있는 네이티브 Windows 애플리케이션입니다.
    • macOS: .NET MAUI 앱은 macOS용으로 패키징될 때 .app 파일로 컴파일됩니다. 이는 macOS 장치에서 설치되고 실행될 수 있는 네이티브 macOS 애플리케이션입니다.

.NET MAUI는 오픈 소스로, 성능 및 확장성을 위해 처음부터 다시 빌드된 UI 컨트롤을 사용하여 모바일에서 데스크톱 시나리오로 확장된 Xamarin.Forms의 진화라고도 볼 수 있음

.NET MAUI의 주목표는 단일 코드베이스에서 최대한 많은 애플리케이션 논리 UI 레이아웃구현할 수 있도록 하는 것

 

.NET MAUI 작동 방식

.NET MAUI는 Android, iOS, macOS 및 Windows API를 단일 API로 통합하여, 한 번만 실행되는 개발자 환경을 허용하는 동시에 각 네이티브 플랫폼의 모든 측면에 대한 심층 액세스 제공

 

.NET 6 이상에서는 Android용 .NET, ios용 .NET, Mac Catalyst용 .NET 및 Windows UI 3 라이브러리 등 앱을 만들기 위한 일련의 플랫폼별 프레임워크를 제공하고 있습니다.

이때 이러한 프레임워크는 모두 동일한 .NET BCL(기본 클래스 라이브러리)에 액세스할 수 있습니다.

이 라이브러리는 코드에서 벗어나 기본 플랫폼의 세부 정보를 추상화합니다,

BCL을 사용하면 여러 플랫폼에서 정의되는 앱이 공통 비즈니스 논리를 공유할 수 있지만, 다양한 플랫폼은 앱에 대한 사용자 인터페이스를 정의하는 다양한 방법을 가지며, 사용자 인터페이스의 요소가 통신하고 상호 운용하는 방식을 지정하기 위한 다양한 모델을 제공합니다.

-> 각 개별 디바이스 제품군에 대한 코드 베이스를 유지 관리해야 합니다.

이때, .NET MAUI는 모바일 및 데스크톱 앱용 UI를 빌드하기 위한 단일 프레임워크를 제공합니다.

.NET MAUI 앱의 아키텍처 다이어그램

 

.NET MAUI 앱에서는 주로

".NET MAUI 컨트롤 및 API 계층"과 상호 작용하는 코드를 작성

  • .NET MAUI에서 제공하는 애플리케이션에 대한 UI를 빌드할 수 있는 단일 프레임워크를 사용하여 UI를 만드는 것

그런 다음 ".NET MAUI 컨트롤 및 API 계층"은 네이티브 플랫폼 API를 직접 사용합니다.

  • .NET MAUI에서 이를 해당 플랫폼으로 변환

 또한 앱 코드는 필요한 경우 플랫폼 API를 직접 실행할 수 있습니다.

  • 플랫폼별 기능을 구현해야하는 경우, 플랫폼별 프레임워크에서 메서드를 직접 호출할 수 있음 

 

.NET MAUI 앱은 PC 또는 Mac에서 작성하고 네이티브 앱 패키지로 컴파일할 수 있음

  • .NET MAUI를 사용하여 빌드된 Android 앱은 C#에서 중간 언어(IL)로 컴파일되며, 앱이 시작될 때 JIT(Just-In-Time)가 네이티브 어셈블리로 컴파일
  • .NET MAUI를 사용하여 빌드된 iOS 앱은 C#에서 네이티브 ARM 어셈블리 코드로 완전히 미리 컴파일된 AOT(미리 실행)
  • .NET MAUI를 사용하여 빌드된 macOS 앱은 UIKit으로 빌드된 iOS 앱을 데스크톱으로 가져오고 필요에 따라 추가 AppKit 및 플랫폼 API로 보강하는 Apple의 솔루션인 Mac Catalyst를 사용
  • .NET MAUI를 사용하여 빌드된 Windows 앱은 Windows UI 3(WinUI 3) 라이브러리를 사용하여 Windows 데스크톱을 대상으로 하는 네이티브 앱을 만듦 ( WinUI 3에 대한 자세한 내용은 Windows UI 라이브러리를 참조)

 

.NET MAUI에서 제공하는 내용

데이터를 표시, 작업을 시작, 활동을 나타냄, 컬렉션을 표시, 데이터를 선택하는데 사용할 수 있는 컨트롤 컬렉션을 제공

.NET MAUI는 컨트롤 컬렉션 외에도 아래를 제공

  • 페이지 디자인을 위한 정교한 레이아웃 엔진
  • 서랍과 같은 다양한 탐색 형식을 만들기 위한 여러 페이지 형식
  • 세련되고 유지 관리 쉬운 개발 패턴을 위한 데이터 바인딩
  • 처리기를 사용자가 지정하여 UI 요소가 표시되는 방식 개선
  • ...

 

 

 

.NET MAUI의 개념 - .NET MAUI

.NET MAUI(.NET 다중 플랫폼 앱 UI)는 C#과 XAML을 사용하여 네이티브 모바일 및 데스크톱 앱을 만들기 위한 플랫폼 간 프레임워크입니다.

learn.microsoft.com


.NET MAUI 의 작동 방식

 

.NET MAUI는 논리적 설명에서 UI 요소의 구현을 추상화합니다. XML을 기반으로 하는 플랫폼 중립 언어인 XAML을 사용하여 UI를 설명할 수 있습니다.

예를 들어 다음 XAML에서 버튼 컨트롤에 대한 설명을 보여준다.

<Button Text="Click me"
        SemanticProperties.Hint="Counts the number of times you click"
        Clicked="OnCounterClicked"
        HorizontalOptions="Center" />
  • 버튼의 레이블 Click me를 정의하고, 사용자가 이 단추를 선택하면 OnCounterClicked라는 메서드를 실행
  • 또한 다른 속성은 레이아웃을 Center로 하는 등 수정하고 있음

 

.NET MAUI는 항상 대상 디바이스에 대한 네이티브 코드를 생성하므로 최적의 성능을 얻을 수 있음

또한 .NET MAUI는 각 플랫폼 및 UI 요소에 특정한 처리기를 사용하여 작업을 수행함.

  • iOS를 대상으로 하는 경우 .NET MAUI 처리기에서 이 코드를 iOS UIButton에 매핑
  • Android에서 실행하는 경우 Android AppCompatButton이 매핑

이러한 처리기는 단추에 대한 IButton과 같이 .NET MAUI에서 제공하는 컨트롤 특정 인터페이스를 통해 간접적으로 액세스됩니다.

각 플랫폼 및 UI 요소에 특정한 처리기를 사용해 작업 수행

 

 

 

.NET MAUI 아키텍처 설명 - Training

.NET MAUI의 구조를 설명합니다.

learn.microsoft.com