MVVMCROSS 및 XAMARIN.FORMS는 크로스 플랫폼 모바일 앱 개발에 사용되는 두 가지 기술로, 각각 다른 목적을 제공하고 독특한 이점을 제공합니다.
Xamarin.forms의 개요
Xamarin.forms는 Microsoft가 개발 한 프레임 워크로 개발자가 사용자 인터페이스 용 공유 C# CodeBase 및 XAML을 사용하여 크로스 플랫폼 응용 프로그램을 만들 수 있습니다. 개발자는 iOS, Android 및 UWP를 포함한 여러 플랫폼에서 한 번 작성하고 실행할 수 있습니다. Xamarin.forms는 플랫폼 전체의 일관된 UI가 원하는 프로젝트에 이상적이며 UI 구성 요소에 통합 API를 제공하여 개발 프로세스를 단순화합니다. 그러나 UI가 각 플랫폼의 공통 요소의 하위 집합으로 제한되어 기본 모양과 느낌 또는 고급 UI 사용자 정의를 달성하는 데 제한이 생길 수 있기 때문에 이러한 일관성은 유연성 비용으로 발생합니다 [4] [7].
mvvmcross의 개요
MVVMCross는 Xamarin.ios, Xamarin.Android, Xamarin.forms 및 기타 플랫폼을 지원하는 크로스 플랫폼 MVVM (Model-View-ViewModel) 프레임 워크입니다. 비즈니스 로직을 UI에서 분리하는 데 중점을 두어 개발자가 다른 플랫폼에서 코드의 상당 부분을 공유 할 수 있습니다. MVVMCross는 데이터 바인딩, 내비게이션, 제어 역전 및 종속성 주입과 같은 기능을 제공하여 복잡한 응용 프로그램의 개발을 용이하게합니다. Xamarin.forms와 달리 MVVMCross는 특정 UI 프레임 워크를 시행하지 않습니다. 대신 개발자는 각 플랫폼에 대해 UI를 구현하는 방법을 선택할 수있게하여 기본 UI 경험을 달성하는 데 더 많은 유연성을 제공합니다 [7] [10].
주요 차이점
1. UI 구현 :
-xamarin.forms : 플랫폼에서 공유 UI 계층을 사용하여 개발을 단순화하지만 사용자 정의 및 기본 외관과 느낌을 제한 할 수 있습니다.
-MVVMCross : 각 플랫폼에서 기본 UI 구현을 허용하거나 Xamarin.forms와 공유 UI를 제공하여 플랫폼 별 UI 설계를 달성하는 데 더 많은 유연성을 제공합니다.
2. 코드 공유 :
- 두 프레임 워크 모두 코드 공유를 활성화하지만 MVVMCross는 다른 UI 구현을 허용하면서 비즈니스 로직 (ViewModels)을 공유하는 데 중점을 둡니다. Xamarin.forms는 UI 및 비즈니스 로직을 모두 공유합니다.
3. 탐색 및 데이터 바인딩 :
-MVVMCross는 Xamarin.forms를 포함하여 다양한 UI 프레임 워크에서 작동하는 강력한 내비게이션 시스템 및 데이터 바인딩 기능을 제공합니다. Xamarin.forms는 자체 탐색 및 데이터 바인딩 메커니즘에 의존합니다.
4. 프로젝트 복잡성 :
- 고급 UI 사용자 정의 또는 플랫폼 별 기능이 필요한 복잡한 프로젝트의 경우 MVVMCross가 유연성으로 인해 더 적합 할 수 있습니다. 일관된 UI가 충분한 단순한 프로젝트의 경우 Xamarin.forms가 더 간단하게 구현할 수 있습니다.
5. 개발 접근법 :
-xamarin.forms는 통합 개발 경험을 제공하기 때문에 XAML 및 .NET에 익숙한 개발자가 종종 선호합니다. MVVMCross는 비즈니스 로직을 UI에서 분리 해야하는 프로젝트에 유리하여 각 플랫폼에서 UI 구현을 더 많이 제어 할 수 있습니다.
요약하면, 두 프레임 워크는 크로스 플랫폼 개발을 지원하는 반면 Xamarin.forms는 플랫폼에서 UI 계층을 공유하는 데 중점을 두는 반면, MVMCROSS는 비즈니스 로직 공유를 강조하고보다 유연한 UI 구현 선택을 허용합니다. 이들 사이의 선택은 UI 사용자 정의, 복잡성 및 코드 공유 전략에 관한 프로젝트의 요구 사항에 달려 있습니다.
인용 :[1] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[2] https://github.com/rogerwcpt/xamarin-mvvvm-frameworks
[3] https://www.mvvmcross.com/documentation/tutorials/tipcalc/a-xamarin-forms-version
[4] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcross
[5] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[6] https://canbilgin.wordpress.com/tag/mvvmcross/
[7] https://www.mvvmcross.com/documentation/getting-started/getting-started
[8] https://www.reddit.com/r/csharp/comments/a9mph1/mvc_or_mvvm_for_xamarin/
[9] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/
[10] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/