MAUI, 2달간의 후기

결론: 못 만들었는데, 딴것들이 더 못 만들었어서 선택하길 참 잘 했다.

  • 네이티브 친화적인 서비스 및 구현을 위해서라면 최강의 크로스 플랫폼

  • 자마린에서 베타테스트 다 된줄 알았는데, 큰 뼈대을 바꿔서인지 잔버그 좀 있음. 사소한 것들이라 별 문제가 되진 않음.

  • 컨트롤 아키텍처도 좀 바꾸지… 군데군데 좀 구림. Label에 TextType 속성은 정말 이해가 안됨.

  • Shell은 구림. 잘 사용하려면 커스터마이징 추천. 저희도 그렇게 했습니다. (Shell의 uri기반 라우팅이 좋아서 쓰긴 해야함)

  • xamarin의 레거시들 좀 다 갈아치우고 온줄 알았는데 레거시들도 그대로 가져와서 약간 좀…; (예: TableView)

  • 사용자 행동분석 할 때, 핸들러에서 글로벌로 처리했는데 상당히 괜찮음.

  • 누가 TemplatedView 기반으로 UI 컨트롤들 싹 다 재 정리 해줬으면 좋겠다고 바라게 됨

‘역시 서비스는 네이티브가 업데이트 해주는거 다 쓰면서 해야 최고지!’ 라면 MAUI

모바일에서 C#이라는 사기 언어를 사용하게 해주셔서 감사합니다.

13개의 좋아요

우노도 고려하셨었나요? 모바일 하기에 마우이가 그래도 좀 나은가요?

4개의 좋아요

우노도 고려하긴 했는데 몇가지 이유 때문에 포기했습니다.

  • 오피셜이 아니다.
  • 샘플이링 토이프로젝트 해보니 ui가 네이티브에 비해 떨어진다. (제스처나 애니메이션 등)
  • 우노는 정말 채용 못 할 것 같다.
  • winUI를 중심으로 두고 나머지 플랫폼을 통합하는데, 이 컨셉은 windows 친화적으로 성장할 가능성이 있다고 판단. (그런데 저희는 Windows를 할 일이 없어서 오히려 단점으로 보였습니다. WASM도 필요없고)

이것과 함께 몇가지 이유때문에 MAUI를 선택했습니다.

7개의 좋아요

MAUI의 랜더링 성능은 Xamarin.Forms에 어떠셨나요?

Xamarin.Forms는 말만 XAML이지 WPF만큼 자유롭게 UI를 구성하기도 쉽지 않고 복잡한 UI 구현을 위해 Viausl Tree가 무거워지는 경우 랜더링 성능이 처참해서 보통의 LOB앱(DB의 데이터를 표시하고 업데이트하고 하는 등의 앱)이 아닌 유틸리티나 미디어 관련 앱을 만들기에는 기능과 성능 모두 충분하지 않아서 고생좀 했었네요.

MAUI 관련 내용만 봐서는 MAUI도 기본적으로는 Xamarin.Forms처럼 각 플랫폼용 Renderer를 사용하는 것 같던데 Xamarin.Forms보다는 개선된 것처럼 설명되어 있지만 실제로 얼마나 차이가 날 지 모르겠네요.

UNO같은 MS 기본 플랫폼이 아닌 기술들은 서드파티 지원이 약한 것이 가장 큰 단점입니다. 그래서 단순 설명만 보면 UNO가 정말 좋아보일 수 있지만 실제 개발에 들어가면 각종 문제에 계속 걸릴 가능성이 있어서 저도 UNO는 아직까지는 도입할 생각이 없네요.

6개의 좋아요

말씀하신 내용에서 그래픽 렌더링 자체는 구리지 않다고 생각해요. 어짜피 네이티브를 그대로 쓰는거니까요.

렌더링의 문제라기보다 iOS, Android라는 각각 다른 UI 아키텍처를 통합하는데 어려움이 있어서 네이티브로써의 최적화를 못한 느낌? 사실 그게 어려운거기도 하구요. UI 아키텍처를 WPF와 비교하시면 역시 구립니다. 그 사악한 template 기반 UI를 제대로 지원하지 못해요. 아마 각 네이티브를 가지고 WPF 그대로를 표현하기에는 어려움이 많을거에요. 그래도 성능은 핸들러라는 놈을 통해 좀 나아졌고, 일반적인 소셜 모바일 앱 수준은 문제가 되지 않습니다.

그리고 단순 그래픽 렌더링은 ’Microsoft.Maui.Graphics’ 라는 크로스플랫폼 그래픽 엔진이 생겨서 그걸로 옛날 윈폼에서 드로윙 가지고 그리는거 마냥하면 일반적 차트도 문제 없다고 생각하고 있어요!

즉, 기본적으로 지원하는 UI 컨트롤들은 일반적인 소셜에서는 문제 없는 수준. (문제가 된다면 아마 개발자가 잘 못 다루었을 가능성이 큼)

그 외 차트 같은 수준의 고성능이 필요한 것들은 위에서 말한 그래픽 엔진을 가지고 직접 그려야하는데, 샘플들 을 보면 렌더링 성능 자체는 크게 문제 없다고 생각해요~

5개의 좋아요

저는 토이 프로젝트로 만지작하며 앱을 하나 만들어보았는데
좀 치명적이다 싶은 버그들 때문에 갈 길이 아직도 멀구나 하고 느꼈습니다.
굵직한거 2개만 뽑아보자면

  • 앱 아이콘을 다른 이미지로 하기위해 config에서 새로 정의하면 오류 발생됨(반드시 기존 appicon.svg 파일을 교체하거나 이것만 써야합니다)
  • webclient로 통신하면 오류없이 결과를 받아오는 사이트가있지만 그러지 못하는 사이트나 api가 많다(예:okky.kr은 잘 스크래핑 되지만 이상하게 위시캣은 안된다 chatgpt API도 통신하는 도중 뻗음)
5개의 좋아요

저는 커스터마이징이 가능한 카메라뷰가 필요했는데 없어서
계속 기다리는 중입니다.
마우이 커뮤니티 툴킷 팀에서 개발중인데
기다린지 2달째 인데 아직도 무소식이네요.
저도 토이프로젝트로 애견 쇼핑몰 만들어 봤는데
저도 Shell에서 욕나오더라구요…근데 Shell이 커스터마이징이 되는지는 몰랐네요.
아무튼 멀티플랫폼의 한계(device 네이티브API)만 빼면 .net Maui로 못만드는게 없다는게 제 결론이었습니다.

5개의 좋아요

ShellContent을 상속받아 몇가지 기능을 만들어서 쓰고 있어요.

라우팅 및 페이지 캐싱 전략 같은 것들

5개의 좋아요

마우이 프리뷰 버전부터 개발 했는대 다른 버그들은 이래저래 회피해서 하긴 했는대 메모리 누수는 힘드네요…
PopAsync() 이전, 이후 별짓을 다해 놨습니다.
Pop된 페이지가 제대로 메모리 해제가 안되는거 같습니다.

5개의 좋아요