MVVMCross는 다양한 플랫폼에서 프리젠 테이션 레이어 및 UI 논리를 공유함으로써 Xamarin 기본 프로젝트를 향상시키는 강력한 크로스 플랫폼 MVVM 프레임 워크입니다. Xamarin Native Projects의 MVVMCross에 대한 일반적인 사용 사례는 다음과 같습니다.
1. 크로스 플랫폼 코드 재사용 **
MVVMCross를 통해 개발자는 휴대용 클래스 라이브러리 (PCL)에 뷰 모델과 비즈니스 로직을 배치하여 코드 재사용을 최대화 할 수 있습니다. 이 PCL은 Xamarin.Android 및 Xamarin.ios와 같은 여러 플랫폼 별 프로젝트에서 참조 할 수 있으며, 각 플랫폼에 대해 UI를 사용자 정의 할 수있는 반면 핵심 논리가 일관성이 유지되도록합니다 [1] [2].2. MVVM 패턴 구현 **
MVVMCross는 MVVM (Model-View-ViewModel) 패턴의 구현을 용이하게하며, 이는 UI와 비즈니스 논리 사이의 우려 사항을 명확하게 분리하는 데 유리합니다. 이 패턴은 느슨하게 결합 된 응용 프로그램을 생성하는 데 도움이되므로 테스트하고 유지하기가 더 쉬워집니다 [3] [5].3. 데이터 바인딩 및 내비게이션 **
MVVMCross는 강력한 데이터 바인딩 기능을 제공하여 뷰가 뷰 모델에 원활하게 바인딩 할 수 있도록합니다. 이 기능은 다양한 바인딩 모드 및 변환기를 지원하여 응용 프로그램 UI의 유연성을 향상시킵니다. 또한 MVVMCross에는 응용 프로그램 내의 다른 뷰 사이를 단순화하는 내비게이션 시스템이 포함되어 있습니다 [2] [5].4. 종속성 주입 및 플러그인 **
MVVMCross는 DI (Dependency Injection) 컨테이너를 제공하여 개발자가 PCL에서 플랫폼 별 서비스를 등록하고 해결할 수 있도록합니다. 이 기능은 코드를 복제하지 않고 플랫폼 별 기능을 통합하는 데 중요합니다. 또한 MVVMCross는 NUGET 패키지를 통해 프로젝트에 쉽게 통합 될 수있는 데이터베이스 작업, 네트워크 연결성 등과 같은 일반적인 기능을위한 광범위한 플러그인을 지원합니다 [1] [3].5. 플랫폼 별 UI 사용자 정의 **
Xamarin.forms는 플랫폼에서 UI 사용자 정의를 제한하지만 Xamarin Native의 MVMCross를 사용하면 개발자가 플랫폼 별 UI를 생성 할 수 있습니다. 응용 프로그램이 각 플랫폼에서 기본 모양과 느낌이 필요한 경우 특히 유용합니다. MVVMCross는 다른 UI 구현에도 불구하고 기본 비즈니스 논리가 공유되고 일관성이 있음을 보장합니다 [1] [4].6. 단위 테스트 및 개발 효율성 **
MVVMCross는 비즈니스 로직을 PCL로 분리하면 응용 프로그램의 핵심 논리에 대한 단위 테스트를보다 쉽게 작성할 수 있습니다. 비즈니스 로직의 변경이 플랫폼 별 UI 코드를 수정할 필요가 없기 때문에이 분리는 개발 속도를 높입니다 [5].요약하면, MVVMCross는 Xamarin 원시 프로젝트를위한 다재다능한 도구로서 각 플랫폼에 대한 UI를 사용자 정의 할 수있는 유연성을 유지하면서 크로스 플랫폼 개발에 대한 구조화 된 접근 방식을 제공합니다. MVVM 패턴 지원, 데이터 바인딩, 종속성 주입 및 광범위한 플러그인 생태계와 같은 기능은 복잡한 크로스 플랫폼 애플리케이션에 이상적인 선택입니다.
인용 :[1] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[2] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[3] https://dev.to/christian1006/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework-2920
[4] https://canbilgin.wordpress.com/tag/mvvmcross/
[5] https://www.mvvmcross.com/documentation/getting-started/getting-started
[6] https://www.mvvmcross.com/documentation/tutorials/tipcalc/a-xamarin-forms-version
[7] https://stackoverflow.com/questions/32220007/what-does-mvvmcross-do- xamarin-doesnt-already
[8] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcross