.NET MAUI: 크로스플랫폼 앱 개발의 미래
1. .NET MAUI란?
**.NET MAUI (Multi-platform App UI)**는 마이크로소프트에서 개발한 크로스플랫폼 애플리케이션 프레임워크로, 하나의 코드베이스로 iOS, Android, Windows, macOS에서 실행되는 애플리케이션을 만들 수 있습니다.
주요 특징
- 단일 코드베이스: 하나의 코드로 여러 플랫폼 지원
- 네이티브 UI: 각 플랫폼의 네이티브 UI 컨트롤을 활용
- .NET 기반: C#과 .NET 기술을 사용
- MVU 및 MVVM 패턴 지원
- 핫 리로드 지원: UI 변경 시 즉시 반영
- 강력한 성능 및 최적화
2. .NET MAUI 개발 환경 설정
필수 도구
운영체제 필수 소프트웨어
Windows | Visual Studio 2022, .NET SDK 6 이상 |
Mac | Visual Studio for Mac, .NET SDK 6 이상, Xcode |
프로젝트 생성 방법
Visual Studio에서 생성
- Visual Studio 2022 실행
- "새 프로젝트 만들기" 선택
- .NET MAUI 앱 템플릿 선택
- 프로젝트 이름 및 경로 설정 후 생성
명령어로 생성
dotnet new maui -n MyMauiApp
cd MyMauiApp
dotnet build
dotnet run
3. .NET MAUI 프로젝트 구조
📂 MyMauiApp
├── 📂 Platforms # Android, iOS, macOS, Windows 코드
├── 📂 Resources # 이미지, 폰트, 스타일 등
├── 📂 Views # XAML UI 코드
├── 📂 Models # 데이터 모델
├── 📂 ViewModels # MVVM 패턴을 위한 ViewModel
├── App.xaml # 전역 스타일 및 테마
├── MainPage.xaml # 메인 페이지 UI
├── MauiProgram.cs # 앱 초기 설정
4. 기본 UI 개발 (XAML & C#)
XAML UI 코드 예제
MainPage.xaml
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyMauiApp.MainPage">
<VerticalStackLayout>
<Label Text="Hello, .NET MAUI!" FontSize="24" HorizontalOptions="Center"/>
<Button Text="Click Me!" Clicked="OnButtonClicked"/>
</VerticalStackLayout>
</ContentPage>
C# 이벤트 핸들러 예제
MainPage.xaml.cs
public partial class MainPage : ContentPage
{
int count = 0;
public MainPage()
{
InitializeComponent();
}
private void OnButtonClicked(object sender, EventArgs e)
{
count++;
(sender as Button).Text = $"Clicked {count} times!";
}
}
5. MVVM 패턴 적용
MVVM (Model-View-ViewModel) 패턴을 사용하면 UI와 로직을 분리하여 유지보수를 용이하게 할 수 있습니다.
Model (데이터 모델)
public class TodoItem
{
public string Title { get; set; }
public bool IsCompleted { get; set; }
}
ViewModel (비즈니스 로직)
using System.Collections.ObjectModel;
using System.ComponentModel;
public class TodoViewModel : INotifyPropertyChanged
{
public ObservableCollection<TodoItem> TodoItems { get; set; }
public TodoViewModel()
{
TodoItems = new ObservableCollection<TodoItem>
{
new TodoItem { Title = "Buy groceries", IsCompleted = false },
new TodoItem { Title = "Read a book", IsCompleted = true }
};
}
public event PropertyChangedEventHandler PropertyChanged;
}
View (XAML)
<ListView ItemsSource="{Binding TodoItems}">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding Title}" Detail="{Binding IsCompleted}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
ViewModel 연결
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
BindingContext = new TodoViewModel();
}
}
6. 네이티브 API 활용 예제
디바이스 정보 가져오기
string model = DeviceInfo.Model;
string manufacturer = DeviceInfo.Manufacturer;
string osVersion = DeviceInfo.VersionString;
위치 정보 가져오기
var location = await Geolocation.GetLocationAsync();
Console.WriteLine($"Latitude: {location.Latitude}, Longitude: {location.Longitude}");
7. 빌드 및 배포
Android 빌드
dotnet publish -c Release -f net7.0-android
iOS 빌드
dotnet build -c Release -f net7.0-ios
Windows 빌드
dotnet publish -c Release -f net7.0-windows10.0.19041.0
8. .NET MAUI 학습 자료
마무리
.NET MAUI는 강력한 크로스플랫폼 지원과 성능 최적화를 제공하는 .NET 기반의 최신 앱 개발 프레임워크입니다. Xamarin을 사용하던 개발자나 .NET 개발자라면 MAUI를 통해 모바일, 데스크톱, 웹을 아우르는 애플리케이션을 손쉽게 개발할 수 있습니다.
지금 바로 .NET MAUI를 시작해보세요!
'IT개발' 카테고리의 다른 글
C#에서 인터페이스, 추상화, 클래스: 스타크래프트로 알아보기 (0) | 2025.03.11 |
---|---|
디자인 패턴 총정리: GoF 23 + 실무 확장 5가지 (0) | 2025.03.11 |
D-Day 계산기 (0) | 2025.03.11 |
복리계산기 (0) | 2025.03.11 |
C#에서 Bulk Insert(대량 삽입) 방법 (0) | 2025.03.11 |