.NET MAUI 아키텍처 설명

완료됨

플랫폼 간 앱 개발에 사용되는 일반적인 패턴은 사용자 인터페이스에서 비즈니스 논리를 분해한 다음, 각 플랫폼에 맞게 별도의 사용자 인터페이스와 UI 논리를 개발하는 것입니다. 비즈니스 논리는 각 디바이스 유형에 대해 변경되지 않은 상태로 유지되지만, 앱을 구동하고 데이터를 제공하는 코드는 다를 수 있습니다. 이러한 차이는 디바이스에서 제공하는 기능, API 및 특징이 다르기 때문입니다. 다중 플랫폼 앱을 이 방식으로 빌드하려면 별도의 SDK 외에도 완전히 다른 언어 및 도구 집합을 모두 처리해야 합니다.

.NET MAUI는 다중 플랫폼 앱 개발을 간소화하기 위한 것입니다. .NET MAUI를 사용하면 단일 프로젝트를 사용하여 다중 플랫폼 앱을 만들지만, 필요한 경우 플랫폼별 소스 코드 및 리소스를 추가할 수 있습니다. .NET MAUI의 주요 목표는 단일 코드베이스에서 최대한 많은 애플리케이션 논리와 UI 레이아웃을 구현할 수 있도록 하는 것입니다.

이 단원에서는 .NET MAUI의 아키텍처 및 .NET MAUI 애플리케이션을 빌드하는 데 필요한 도구에 대해 알아봅니다.

.NET MAUI 기술 스택이란?

.NET은 Android용 .NET, iOS(및 iPadOS)용 .NET, Mac용 .NET 및 WinUI 3(Windows 앱 SDK 활용)과 같은 앱을 만들기 위한 일련의 플랫폼별 프레임워크를 제공합니다. 이러한 프레임워크는 모두 동일한 .NET 6 BCL(기본 클래스 라이브러리)에 액세스할 수 있습니다. 이 라이브러리는 리소스를 만들고 관리하고, 코드를 떠나서 기본 디바이스의 세부 정보를 일반적으로 추상화하는 기능을 제공합니다. BCL은 .NET 런타임에 따라 코드에 대한 실행 환경을 제공합니다. Android, iOS(및 iPadOS) 및 macOS의 경우 환경은 .NET 런타임의 오픈 소스 구현인 Mono에서 구현됩니다. Windows에서 Win32는 Windows 플랫폼에 최적화되어 있음을 제외하고 동일한 역할을 수행합니다.

BCL을 사용하면 다양한 유형의 디바이스에서 실행되는 애플리케이션이 공통 비즈니스 논리를 공유할 수 있지만, 다양한 플랫폼은 애플리케이션에 대한 사용자 인터페이스를 정의하는 다양한 방법을 가지고 있습니다. 플랫폼은 사용자 인터페이스 요소가 통신하고 상호 작동하는 방식을 지정하기 위한 다양한 모델을 제공합니다. 적절한 플랫폼별 프레임워크(Android용 .NET, iOS용 .NET, Mac용 .NET 또는 WinUI 3)를 사용하여 각 플랫폼에 대한 UI를 별도로 만들 수 있지만, 이 방법을 사용하려면 각 개별 디바이스 제품군에 대한 코드베이스를 유지 관리해야 합니다. .NET MAUI는 모바일 및 데스크톱 애플리케이션에 대한 UI를 빌드할 수 있는 단일 프레임워크를 제공합니다. 이 프레임워크를 사용하여 UI를 만들고(다음 다이어그램에서 화살표 1로 표시), .NET MAUI에서 이를 해당 플랫폼으로 변환합니다(화살표 2).

플랫폼별 기능을 구현해야 하는 경우가 있을 수 있습니다. 이러한 경우 다음 다이어그램에서 화살표 3으로 강조 표시한 대로 플랫폼별 프레임워크에서 메서드를 호출할 수 있습니다.

Diagram of the .NET MAUI technology stack and how to implement a platform-specific feature.

.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(이)라는 메서드를 실행해야 한다고 지정합니다. 다른 속성은 단추와 텍스트의 레이아웃을 수정할 수 있습니다. 이 예제에서 텍스트는 단추의 가운데에 있습니다. 의미 체계 속성은 시각 장애가 있는 사용자를 위한 접근성을 지원합니다.

.NET MAUI는 항상 대상 디바이스에 대한 네이티브 코드를 생성하므로 최적의 성능을 얻을 수 있습니다. .NET MAUI는 각 플랫폼 및 UI 요소에 특정한 "처리기"를 사용하여 작업을 수행합니다. 예를 들어 앱에 대한 iOS를 대상으로 하는 경우 .NET MAUI 처리기에서 이 코드를 iOS UIButton에 매핑합니다. Android에서 실행하는 경우 Android AppCompatButton이 매핑됩니다. 이러한 처리기는 단추에 대한 IButton과 같이 .NET MAUI에서 제공하는 컨트롤 특정 인터페이스를 통해 간접적으로 액세스됩니다.

Diagram of how .NET MAUI maps a XAML control to a native control. It shows the .NET MAUI control implements an interface that each native handler also implements.

참고 항목

원하는 경우 C# 코드를 사용하여 UI를 동적으로 만들 수도 있습니다. 이 방법을 사용하면 환경에 따라 레이아웃을 수정할 수 있습니다. 예를 들어 사용자에게 적절한 수준의 권한 부여가 없는 경우 특정 컨트롤이 표시되지 않도록 할 수 있습니다.

.NET MAUI를 사용하면 단추와 같은 일반적인 컨트롤에 쉽게 액세스할 수 있습니다. 텍스트 입력 필드, 레이블 및 날짜 선택과 같은 다른 일반적인 컨트롤도 마찬가지로 쉽습니다. 하지만 개별 컨트롤만으로는 다양한 앱을 만들 수 있는 좋은 플랫폼을 만들 수 없습니다. .NET MAUI는 다음도 제공합니다.

  • 페이지를 디자인하기 위한 정교한 레이아웃 엔진
  • 서랍과 같은 다양한 탐색 형식을 만들기 위한 여러 페이지 형식
  • 더 세련되고 유지 관리하기 쉬운 개발 패턴을 위한 데이터 바인딩 지원
  • UI 요소가 표시되는 방식을 개선하기 위해 사용자 지정 처리기를 만드는 기능
  • 네이티브 API에 직접 액세스하고 UI와 별개인 모바일 및 데스크톱 앱의 많은 일반적인 요구 사항을 추상화합니다. 필수 라이브러리를 사용하면 앱에서 GPS, 가속도계, 배터리 및 네트워크 상태와 같은 항목에 액세스할 수 있습니다. 이 라이브러리를 통해 사용할 수 있는 모바일 개발에 공통적으로 사용되는 수십 개의 센서와 서비스도 있습니다.

지식 점검

1.

WinUI 3 애플리케이션에 대한 런타임 지원을 제공하는 환경은 무엇인가요?

2.

.NET MAUI 애플리케이션에 대한 UI를 배치하는 데 사용할 수 있는 태그 언어는 무엇인가요?