.NET MAUI의 개념

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

.NET MAUI를 사용하여 단일 공유 코드 베이스에서 Android, iOS, macOS 및 Windows에서 실행할 수 있는 앱을 개발할 수 있습니다.

.NET MAUI 지원 플랫폼.

.NET MAUI는 오픈 소스이며 성능 및 확장성을 위해 처음부터 다시 빌드된 UI 컨트롤을 사용하여 모바일에서 데스크톱 시나리오로 확장된 Xamarin.Forms의 진화입니다. 이전에 Xamarin.Forms를 사용하여 플랫폼 간 사용자 인터페이스를 빌드한 경우 .NET MAUI와 많은 유사점을 확인할 수 있습니다. 하지만 차이점도 있습니다. .NET MAUI를 사용하여 단일 프로젝트를 사용하여 다중 플랫폼 앱을 만들 수 있지만 필요한 경우 플랫폼별 소스 코드 및 리소스를 추가할 수 있습니다. .NET MAUI의 주요 목표는 단일 코드베이스에서 최대한 많은 애플리케이션 논리와 UI 레이아웃을 구현할 수 있도록 하는 것입니다.

.NET MAUI의 대상

.NET MAUI는 다음을 수행하려는 개발자를 위한 것입니다.

  • Visual Studio의 단일 공유 코드 기반에서 XAML 및 C#으로 플랫폼 간 앱을 작성합니다.
  • 플랫폼 전반에서 UI 레이아웃과 디자인을 공유합니다.
  • 플랫폼 간에 코드, 테스트 및 비즈니스 논리를 공유합니다.

.NET MAUI 작동 방식

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

.NET 6 이상에서는 Android용 .NET, iOS용 .NET, macOS용 .NET 및 WinUI 3(Windows UI 3) 라이브러리 등 앱을 만들기 위한 일련의 플랫폼별 프레임워크를 제공합니다. 이러한 프레임워크는 모두 동일한 .NET BCL(기본 클래스 라이브러리)에 액세스할 수 있습니다. 이 라이브러리는 코드에서 벗어나 기본 플랫폼의 세부 정보를 추상화합니다. BCL은 코드에 대한 실행 환경을 제공하기 위해 .NET 런타임에 따라 달라집니다. Android, iOS 및 macOS의 경우 환경은 .NET 런타임의 구현인 Mono에 의해 구현됩니다. Windows에서 .NET CoreCLR은 실행 환경을 제공합니다.

BCL을 사용하면 여러 플랫폼에서 실행되는 앱이 공통 비즈니스 논리를 공유할 수 있지만, 다양한 플랫폼은 앱에 대한 사용자 인터페이스를 정의하는 다양한 방법을 가지며, 사용자 인터페이스의 요소가 통신하고 상호 운용하는 방식을 지정하기 위한 다양한 모델을 제공합니다. 적절한 플랫폼별 프레임워크(Android용.NET, iOS용 .NET, macOS용 .NET 또는 WinUI 3)를 사용하여 각 플랫폼에 대한 UI를 별도로 만들 수 있지만, 이 방법을 사용하려면 각 개별 디바이스 제품군에 대한 코드 베이스를 유지 관리해야 합니다.

.NET MAUI는 모바일 및 데스크톱 앱용 UI를 빌드하기 위한 단일 프레임워크를 제공합니다. 다음 다이어그램은 .NET MAUI 앱의 아키텍처에 대한 개략적인 보기를 보여줍니다.

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

.NET MAUI 앱에서는 주로 .NET MAUI API(1)와 상호 작용하는 코드를 작성합니다. .NET MAUI는 네이티브 플랫폼 API(3)를 직접 사용합니다. 또한 앱 코드는 필요한 경우 플랫폼 API(2)를 직접 연습할 수 있습니다.

.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 라이브러리를 참조하세요.

참고

iOS 및 macOS용 앱을 빌드하려면 Mac이 필요합니다.

.NET MAUI에서 제공하는 내용

.NET MAUI는 데이터를 표시하고, 작업을 시작하고, 활동을 나타내고, 컬렉션을 표시하고, 데이터를 선택하는 데 사용할 수 있는 컨트롤 컬렉션을 제공합니다. .NET MAUI는 컨트롤 컬렉션 외에도 다음을 제공합니다.

  • 페이지를 디자인하기 위한 정교한 레이아웃 엔진입니다.
  • 서랍과 같은 다양한 탐색 형식을 만들기 위한 여러 페이지 형식
  • 더 우아하고 유지 관리 가능한 개발 패턴에 대한 데이터 바인딩 지원.
  • 처리기를 사용자 지정하여 UI 요소가 표시되는 방식을 개선하는 기능입니다.
  • 네이티브 디바이스 기능에 액세스하기 위한 플랫폼 간 API입니다. 이러한 API를 통해 앱은 GPS, 가속도계, 배터리 및 네트워크 상태와 같은 디바이스 기능에 액세스할 수 있습니다. 자세한 내용은 디바이스 기능에 대한 플랫폼 간 API를 참조하세요.
  • 도형 및 이미지 그리기 및 그리기, 작성 작업 및 그래픽 개체 변환을 지원하는 그리기 캔버스를 제공하는 플랫폼 간 그래픽 기능입니다.
  • 다중 대상 지정을 사용하여 Android, iOS, macOS 및 Windows를 대상으로 하는 단일 프로젝트 시스템입니다. 자세한 내용은 .NET MAUI 단일 프로젝트를 참조하세요.
  • .NET 핫 다시 로드- 앱이 실행되는 동안 XAML과 관리되는 소스 코드를 모두 수정한 다음, 앱을 다시 빌드하지 않고 수정 결과를 관찰할 수 있습니다. 자세한 내용은 .NET 핫 다시 로드를 참조하세요.

디바이스 기능에 대한 플랫폼 간 API

.NET MAUI는 네이티브 디바이스 기능을 위한 플랫폼 간 API를 제공합니다. 디바이스 기능에 액세스하기 위해 .NET MAUI에서 제공하는 기능의 예는 다음과 같습니다.

  • 장치의 가속도계, 나침반 및 자이로스코프와 같은 센서에 액세스합니다.
  • 디바이스의 네트워크 연결 상태를 확인하고 변경 내용을 검색하는 기능입니다.
  • 앱이 실행 중인 디바이스에 대한 정보를 제공합니다.
  • 텍스트를 복사하여 앱 간에 시스템 클립보드에 붙여넣습니다.
  • 디바이스에서 단일 또는 여러 파일을 선택합니다.
  • 데이터를 키/값 쌍으로 안전하게 저장합니다.
  • 기본 제공 텍스트 음성 변환 엔진을 활용하여 디바이스에서 텍스트를 읽습니다.
  • 특정 앱 등록 URL에 대한 콜백을 수신 대기하는 브라우저 기반 인증 흐름을 시작합니다.

단일 프로젝트

.NET MAUI 단일 프로젝트는 앱을 개발하는 동안 일반적으로 발생하는 플랫폼별 개발 환경을 사용하고 Android, iOS, macOS 및 Windows를 대상으로 할 수 있는 단일 공유 프로젝트로 추상화합니다.

.NET MAUI 단일 프로젝트는 대상 플랫폼에 관계없이 간단하고 일관된 플랫폼 간 개발 환경을 제공합니다. .NET MAUI 단일 프로젝트는 다음과 같은 기능을 제공합니다.

  • Android, iOS, macOS 및 Windows를 대상으로 할 수 있는 단일 공유 프로젝트입니다.
  • .NET MAUI 앱을 실행하기 위한 간소화된 디버그 대상 선택
  • 단일 프로젝트 내의 공유 리소스 파일입니다.
  • 앱 제목, ID 및 버전을 지정하는 단일 앱 매니페스트입니다.
  • 필요한 경우 플랫폼별 API 및 도구에 액세스합니다.
  • 단일 플랫폼 간 앱 진입점입니다.

.NET MAUI 단일 프로젝트는 다중 대상 지정 및 SDK 스타일 프로젝트 사용을 사용하여 사용하도록 설정됩니다. .NET MAUI 단일 프로젝트에 대한 자세한 내용은 .NET MAUI 단일 프로젝트를 참조하세요.

핫 다시 로드

.NET MAUI에는 수동으로 중단점을 일시 중지하거나 적중할 필요 없이 앱이 실행되는 동안 관리되는 소스 코드를 수정할 수 있는 .NET 핫 다시 로드에 대한 지원이 포함되어 있습니다. 그런 다음 코드 편집을 다시 컴파일하지 않고 실행 중인 앱에 적용할 수 있습니다.

.NET MAUI에는 XAML 핫 다시 로드에 대한 지원도 포함되어 있으므로 XAML 파일을 저장하고 다시 컴파일하지 않고 실행 중인 앱에 반영된 변경 내용을 볼 수 있습니다. 또한 탐색 상태와 데이터가 유지되므로 앱에서 위치를 잃지 않고 UI를 빠르게 반복할 수 있습니다.