MVVMCross es un poderoso marco MVVV de plataforma multiplataforma que mejora los proyectos nativos de Xamarin al permitir el intercambio de capas de presentación y la lógica de la interfaz de usuario en diferentes plataformas. Aquí hay algunos casos de uso común para MVVMCross en proyectos nativos de Xamarin:
1. Reutilización del código de la plataforma cruzada **
MVVMCross permite a los desarrolladores maximizar la reutilización del código colocando ViewModels y Business Logic en una biblioteca de clase portátil (PCL). Este PCL se puede hacer referencia en múltiples proyectos específicos de la plataforma, como Xamarin.Android y Xamarin.ios, asegurando que la lógica central permanezca consistente, mientras que la interfaz de usuario puede personalizarse para cada plataforma [1] [2].2. Implementación de patrones MVVM **
MVVMCross facilita la implementación del patrón Model-View-ViewModel (MVVM), que es beneficioso para mantener una separación clara de las preocupaciones entre la interfaz de usuario y la lógica comercial. Este patrón ayuda a crear aplicaciones poco acopladas, lo que hace que sean más fáciles de probar y mantener [3] [5].3. ANIGUA DE DATOS Y NAVIGACIÓN **
MVVMCross proporciona capacidades de enlace de datos robustas, lo que permite que las vistas se unan a ViewModels sin problemas. Esta característica admite varios modos de enlace y convertidores, lo que mejora la flexibilidad de la interfaz de usuario de la aplicación. Además, MVVMCross incluye un sistema de navegación que simplifica el movimiento entre diferentes vistas dentro de la aplicación [2] [5].4. Inyección de dependencia y complementos **
MVVMCross ofrece un contenedor de inyección de dependencia (DI) que permite a los desarrolladores registrar y resolver servicios específicos de la plataforma desde el PCL. Esta característica es crucial para integrar funcionalidades específicas de la plataforma sin duplicar el código. Además, MVVMCross admite una amplia gama de complementos para funcionalidades comunes como operaciones de bases de datos, conectividad de red y más, que se pueden integrar fácilmente en proyectos a través de paquetes NUGET [1] [3].5. Personalización de la interfaz de usuario específica de la plataforma **
Mientras que Xamarin.Forms restringe la personalización de la interfaz de usuario en todas las plataformas, MVVMCross con Xamarin Native permite a los desarrolladores crear UI específicas de plataforma. Esto es particularmente útil cuando una aplicación requiere una apariencia nativa en cada plataforma. MVVMCross asegura que a pesar de las diferentes implementaciones de la IU, la lógica comercial subyacente sigue siendo compartida y consistente [1] [4].6. Prueba de unidades y eficiencia de desarrollo **
Al separar la lógica comercial en un PCL, MVVMCross facilita la escritura de las pruebas unitarias para la lógica principal de la aplicación. Esta separación también acelera el desarrollo, ya que los cambios en la lógica comercial no requieren modificaciones en el código de interfaz de usuario específico de la plataforma [5].En resumen, MVVMCross es una herramienta versátil para proyectos nativos de Xamarin, que ofrece un enfoque estructurado para el desarrollo multiplataforma mientras mantiene la flexibilidad para personalizar UIS para cada plataforma. Sus características como soporte de patrones MVVM, enlace de datos, inyección de dependencia y ecosistema extenso de complementos lo convierten en una opción ideal para aplicaciones complejas y multiplataforma.
Citas:[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-mvvvmcross
[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/whatdoes-mvvmcross-do-that-xamarin-doesnt-already
[8] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcross