.NET _M_ulti-platform _A_pp _UI_.
1. 개요
공식 사이트.NET MAUI는 .NET 기반의 크로스 플랫폼 프레임워크이다. 단일 코드를 기반으로 Windows, Android, iOS, macOS에서 동작하는 앱을 개발할 수 있다. 줄여서 MAUI라고도 하며, ' 마우이'라고 읽는다.
2. 역사
2020년 5월 마이크로소프트 빌드 2020에서 처음 공개됐으며, 2022년 5월 정식으로 릴리스됐다. Visual Studio에서는 VS 2022의 17.3부터 지원한다..NET MAUI는 오픈소스 크로스 플랫폼 프레임워크인 Xamarin.Forms으로부터 이어지며, 내부 API 역시 자마린으로부터 계승된 부분이 많다. 자마린 인수 이후 크로스 플랫폼 개발에 관한 시행착오를 거쳐 MAUI로 이어진 것이라고도 볼 수 있으며 실제로 기존 Xamarin 구성요소들은 MAUI에 들어와서 안드로이드/iOS용 .NET으로 리네이밍되었다.
Visual Studio 2022 v17.3.6에 들어서 공식 릴리즈되었다.
3. Xamarin.Forms와의 비교
자마린은 플랫폼별로 별도의 프로젝트가 생성되며 각 플랫폼마다 각자의 렌더링 API(Xamarin.iOS/Xamarin.Android)를 사용해야 되는 파편화가 있었지만[1] MAUI는 하나의 프로젝트에서 단일 코드를 공유하며 각 플랫폼마다 별개의 API를 사용하는것이 아닌 MAUI API를 사용하기 때문에 본격적인 크로스 플랫폼을 지원한다. 또한 자마린은 닷넷 스탠다드를 기반으로 하지만, MAUI는 닷넷 코어를 기반으로 하며 기존에 Xamarin iOS/Android는 각각 .NET for iOS/Android로 변경되었다.또한 Xamarin.Forms는 기본적으로 해당 OS의 네이티브 코드를 직접 호출해서 쓰는 방식이었지만 MAUI에서는 유저 코드는 MAUI API를 호출하고 필요한 경우에만 네이티브를 직접 호출할 수 있고 대부분의 경우에 네이티브 API 호출은 MAUI API를 통해서만 이루어진다.
이외에도 .NET버전이 바뀜에 따라 혜택을 받은 부분이 있는데 대표적으로
- 핫 리로드 지원. .NET 6에서 지원함에 따라 MAUI 또한 핫 리로드를 사용해 개발이 가능해졌다.
- 멀티윈도우 지원.
자마린을 대거 개편한 것에 가깝고 여전히 자마린의 구성 요소가 일부 남아있어 자마린 시절 프로젝트를 마이그레이션 하는 것 또한 가능하다.
2024년부터 마이크로소프트에서 Xamarin의 기술 지원을 종료하여 .NET MAUI로 넘어가는 것을 추천하고 있다.
4. 여담
- 현재는 릴리스 초기 단계여서인지 버그가 굉장히 많다. 또한 프리뷰 단계에서 확인된 버그가 수정없이 릴리스 버전으로 넘어오기도 하는 등, 아직까지는 불안정한 모습을 보여주고 있다.
[1]
이 방법은 장점도 있고 단점도 있었다. 장점은 해당 API를 직접 호출하기 때문에 속도 면에서 간접적으로 호출하는 다른 앱들에 비해서 살짝 빠른 모습을 보여주나 반대로 같은 앱을 만드는데도 플랫폼에 따라서 다른 API를 호출해야 했으며 결정적으로 OS상에서 해당 API지원이 바뀌면 앱 자체가 고장나버리는 문제가 있었다.