MVVMCross mejora significativamente la reutilización del código en las aplicaciones multiplataforma aprovechando el patrón arquitectónico modelo-View-ViewModel (MVVM). Así es como logra esto:
1. Separación de preocupaciones: MVVMCross promueve una separación clara de las preocupaciones dividiendo la aplicación en dos partes principales: el núcleo y la interfaz de usuario. El proyecto central, típicamente una biblioteca de clases portátil (PCL) o la biblioteca estándar de .NET, contiene todos los modelos de vista, modelos y lógica de negocios. Esto permite la reutilización máxima del código en diferentes plataformas, ya que la lógica de negocios se desacopla desde el código específico de la plataforma [1] [2] [7].
2. ViewModels in Core Project: al colocar los modelos de vista en el proyecto central, MVVMCross permite a los desarrolladores compartir estos componentes en múltiples plataformas. Esto significa que la lógica para manejar las interacciones del usuario, la manipulación de datos y la navegación se puede reutilizar sin modificar en diferentes plataformas como iOS, Android y Windows [1] [3] [9].
3. Enlace de datos: MVVMCross admite la unión de datos, que actualiza automáticamente la interfaz de usuario cuando se producen cambios en el Modelo ViewModel. Esta característica es crucial para mantener la consistencia en todas las plataformas y reduce la necesidad de actualizaciones manuales de UI, mejorando aún más la reutilización del código [4] [5].
4. Inyección de dependencia y complementos: MVVMCross incluye una capacidades de arquitectura y inyección de dependencia (DI) de complemento (DI). Estas características permiten a los desarrolladores implementar funcionalidades específicas de la plataforma de manera que se pueda acceder y reutilizar fácilmente desde el proyecto central. Esto significa que si bien la capa de UI debe ser específica de la plataforma, aún se pueden compartir muchas funcionalidades subyacentes [3] [9].
5. Presentadores de navegación y vista: MVVMCross proporciona un poderoso sistema de navegación View Model-Primer, que permite la orquestación de la navegación de la aplicación desde el proyecto central. Esto significa que el flujo de interacciones del usuario y las transiciones de pantalla se puede administrar centralmente, reduciendo la necesidad del código de navegación específico de la plataforma [7].
6. Estructura eficiente del proyecto: MVVMCross fomenta un enfoque estructurado para la organización del proyecto, con una clara separación entre el código de la plataforma en el código central y específico de la plataforma en los proyectos de la UI. Esta estructura facilita el mantenimiento y la extensión más fácil de las aplicaciones multiplataforma [2] [9].
En general, MVVMCross mejora la reutilización del código al centralizar la lógica comercial, aprovechar la unión de datos y proporcionar herramientas para administrar funcionalidades específicas de la plataforma de manera unificada. Este enfoque reduce significativamente la cantidad de código duplicado y acelera el desarrollo de aplicaciones multiplataforma.
Citas:[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[2] https://www.toptal.com/xamarin/cross-platform-apps-with-xamarin
[3] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[4] https://tiefenauer.github.io/blog/mobile-app-develovelopment-with-xamarin-and-mvvvmcross-part-1introduction/
[5] https://www.mvvmcross.com/documentation/fundamentals/data-sninging
[6] https://diglib.tugraz.at/download.php?id=576a78335451d&location=browse
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://www.reddit.com/r/swift/comments/yrqlhu/is_crossplatform_the_future_of_mobile_development/
[9] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcrossframework/
[10] https://stackoverflow.com/questions/22409697/maximizing-ui-code-reuse-with-xamarin-mvvmcross