Xamarin이나 MAUI에서 MVVM Framework 어떤것들 많이 쓰시나요?

Xamarin이나 MAUI로 현재 프로젝트를 진행 중이신 분들이 있다면 어떤 MVVM Framework를 쓰시나요?
어떤 걸 선택 해야할지 고민 중이긴 한대…
Prism도 MAUI를 지원하는 것 같은대 문제는 없을지 걱정이네요…

2개의 좋아요

현재 MAUI 프로젝트를 진행하고 있지는 않는다는 점 미리 말씀드려요 ^^;
그리고 MAUI가 production 수준인지는 개개인마다 의견이 다를 것으로 예상됩니다~
MAUI MVVM 프레임워크를 아는대로 나열해 볼게요.

Prism.Maui

  • 설명: 엔터프라이즈급 MVVM 프레임워크로는 Prism만한게 없죠. 뷰 전환 기능이 이미 탑재 되어 있다는 점도 강점입니다. 아직은 베타네요 :sob:
  • 최신 버전: 8.1.228-beta
  • 패키지: NuGet Gallery | Prism.Maui 8.1.228-beta

FreshMvvm.Maui

Microsoft.Toolkit.Mvvm

  • 설명: 지난 10년간 가장 많이 써왔던 light한 mvvm 프레임워크 중 하나를 꼽으라면 mvvm light 일텐데요. mvvm light의 ms 버전으로 ms에서 만들다 보니 아무래도 maui 업데이트와 맞물려 업데이트가 빠른 편인 것 같습니다.
  • 최신버전: 7.1.2
  • 패키지: NuGet Gallery | Microsoft.Toolkit.Mvvm 7.1.2

ReactiveUI.Maui

  • 설명: 개인적으로 WPF 회사 프로젝트할 때 사용했던 프레임워크로 Reactive 프로그래밍이 가능해서 복잡한 사용자 이벤트나 Command를 구독 처리하여 복잡한 상태 관리를 간결하게 구성하는데 좋습니다.
  • 최신버전: 18.2.5
  • 패키지: NuGet Gallery | ReactiveUI.Maui 19.4.1
9개의 좋아요

안녕하세요- 닷넷데브에 계신 분들이 워낙 훌륭한 분들이라 답변에 항상 조심스러운 Honeyhead입니다.

nyjin님께서 말씀해주신 것들 이외에 tinymvvm 라던가 다양한 mvvm 프레임워크들이 github 등에 있긴 하지만 nyjin님께서 말씀해주신게 대표적일 것 같습니다.

제가 추천 드리는건 MAUI로 처음 프레임워크를 도입해서 개발하신다면 CommunityToolkit.Mvvm(= Microsoft.Toolkit.Mvvm)를 추천드립니다.

이유로는 Xamarin Forms에서는 이거저거 설치할게 좀 많았습니다 IoC를 위해 별도로 다른 것도 깔아야 되는 것도 있었고 귀찮아서 FreshMVVM이 대충 필요한 것들이 들어있었기 때문에 어차피 깔 꺼 깔았지만 FreshMVVM의 단점들이 분명 존재합니다. 자잘한 버그라던가 다크 테마 시에 문제점, iOS일때 처리가 조금 버전에 따라 다르게 줘야되는게 있었습니다. 즉 요구사항에 충족 못하는 경우가 생깁니다.

문제는 이걸 개발 도중에 발견했을 때 "최초"가 되버리면 해결하는데 시간이 참 오래 걸립니다. 많은 기능을 제공하는 만큼 종속적으로 되어 있는걸 고쳐야 되는게 있다보니 커스텀을 하다보면 편해서 이걸 썼었는데… 하는 고민이 되죠.

그리고 MAUI에서는 IoC라던가 일부 Xamarin Forms에서 필요했던 기능들의 일부를 가져와서 그냥 지원하다보니 굳이 이거저거 깔 필요가 없어지기도 했습니다. 특히 Shell을 그대로 쓰신다면 더 그렇구요.

유튜브에서는 FreshMVVM(MAUI)가 더 나올 순 있어도 레퍼런스는 CommunityToolkit.MVVM이 더 많을 것 같기도하고 처음에는 좀 “오옹…?” 싶은 것들도 쓰다보면 소스 제너레이트 기능 덕분에 코드 칠 일이 많이 줄어들어서 무겁게 안 만들고 싶을 땐 FreshMVVM보단 CommunityToolkit.MVVM가 맞다고 생각됩니다.

사실 Prism은 좋아하시는 분들은 정말 좋아하시긴 한데 WPF나 Silverlight에선 잘 썼지만 음… 유지보수나 테스팅에 전 개인적으로 좋다고는 생각은 드는데 베타기도하고 의외로 또 많이 Autowire라던가 대부분의 기능들을 다른애들도 충분히 지원하고 있어서 앱이 정말 큰게 아니라면 그나마 손이 덜 가는 다른 프레임워크를 선택할 것 같습니다.

(어디까지나 호불호입니다. 어차피 우리 고객님들을 뭘 쓰던 상관 안하시니까요 :smiling_face_with_tear:)

8개의 좋아요

답변 감사합니다.

(어디까지나 호불호입니다. 어차피 우리 고객님들을 뭘 쓰던 상관 안하시니까요 :smiling_face_with_tear:) <= 그렇죠…우리 고객님들은 뭘 쓰던 상관은 안하시죠…ㅎㅎ

2개의 좋아요

다양한 Framework설명 감사합니다.
많은 도움이 되었습니다.
차근차근 기능을 살펴봐야 하겠군요.

2개의 좋아요

어제 저도 주워들었는데…

MVVM은 아니지만 MVU 로서

Comet 이라는 프로젝트가 있었습니다.

XAML을 사용하지 않고 C# 코드로만 개발하는데 신기하게도 Hot reload가 됩니다.

물론 아직 preview라서 맨 아래에

image

이렇게 써있긴 합니다.

3개의 좋아요

제 개인 경험담이지만 MVU는 마치 VS for Windows와 VS for Mac 관계처럼 업데이트가 많이 늦습니다…
사실 이것 외에도 모든 컨트롤을 아직 지원하지 않는 점, 그리고 기본 컨트롤에서 지원하지만 바인딩 속성으로는 부족한 요소들이 많기 때문에 아직 조심스럽습니다.

만약 MVU를 지금 단계에서 실무에 도입한다면 저는 조심스레 반대 의견을 낼 것 같아요.

5개의 좋아요

저는 대놓고 반대의견입니다 ㅎㅎ

‘신기술에 대한 연구와 호기심’ 과 ‘서비스화 된 제품의 출시’ 는 구분해서 봐야한다고 생각합니다.

호기심에 있어서는 최대한 공격적으로 하고…

제품의 출시에 대해서는 타협적으로 보수적으로 하는 게 맞다고 봅니다.

그래서 LTS 기술에 대해서는 제품을 출시해도 된다고 보지만 MAUI처럼 아직 Preview인데다 LTS가 아닌 .NET 7에 포함될 기술은… 사내 프로그램이라면 모를까, 제품으로서는 안된다고 생각합니다.

2개의 좋아요