MVVMCross admite el código específico de la plataforma a través de varios mecanismos, lo que permite a los desarrolladores crear aplicaciones multiplataforma y al mismo tiempo aprovechar las características de la plataforma nativa. Aquí hay una descripción detallada de cómo MVVMCross facilita el código específico de la plataforma:
1. Separación de preocupaciones **
Las aplicaciones MVVMCross generalmente se estructuran en dos partes principales: un proyecto central y proyectos de UI específicos de la plataforma. El proyecto central, a menudo implementado como una biblioteca de clases portátil (PCL) o la biblioteca estándar de .NET, contiene la lógica comercial, los modelos, los modelos de vista e interfaces para servicios específicos de la plataforma. Esta separación permite la reutilización máxima del código en todas las plataformas mientras mantiene el código específico de la plataforma aislado en los proyectos de UI [2] [7].2. Inversión de control (COI) e inyección de dependencia **
MVVMCross usa un contenedor IOC para administrar las dependencias. Esto permite a los desarrolladores registrar servicios específicos de la plataforma en los proyectos específicos de la plataforma y inyectarlos en los modelos de vista del proyecto principal. Por ejemplo, si una aplicación necesita acceder a la cámara, el proyecto principal puede definir una interfaz para el acceso a la cámara, y cada proyecto específico de la plataforma puede proporcionar su propia implementación de esta interfaz. El contenedor IOC luego resuelve estas dependencias en tiempo de ejecución, asegurando que se use el servicio específico de plataforma correcto [2] [8] [11].3. Servicios específicos de la plataforma **
Los servicios específicos de la plataforma se implementan en los proyectos de IU nativos. Estos servicios están registrados en la clase de configuración de cada proyecto de plataforma. La clase de configuración es responsable de Bootstrapping MVVMCross y de registro de servicios específicos de la plataforma con el contenedor IOC. Esto permite que los modelos de vista en el proyecto central utilicen la funcionalidad específica de la plataforma sin hacer referencia directamente a las API específicas de la plataforma [2] [7].4. Marco de complementos **
MVVMCross incluye un marco de complementos que permite a los desarrolladores integrar fácilmente las características específicas de la plataforma en sus aplicaciones. Los complementos pueden proporcionar funcionalidades como ubicación GPS, localización, sensores y más. Estos complementos están registrados con el contenedor IOC, lo que permite que los modelos de vista accedan a las características específicas de la plataforma a través de la inyección de dependencia. Este marco también admite implementaciones simuladas para fines de prueba [4] [11].5. Motor de unión personalizable **
MVVMCross proporciona un motor de unión personalizable que permite a los desarrolladores crear enlaces personalizados para vistas específicas de la plataforma. Esta característica es particularmente útil cuando se trabaja con controles nativos que no admiten mecanismos estándar de enlace de datos. Al definir los enlaces personalizados, los desarrolladores pueden asegurarse de que sus modelos de visión estén conectados correctamente a las vistas específicas de la plataforma [4].6. Presentadores de plataforma **
MVVMCross utiliza presentadores específicos de la plataforma (por ejemplo, `IMVXIOSVIEWPresenter`,` IMVXANDROIDVIEWPRESENTER`) para administrar cómo se muestran las vistas en cada plataforma. Estos presentadores permiten la personalización de la lógica de presentación, lo que permite a los desarrolladores adaptar el comportamiento de la interfaz de usuario a los requisitos de la plataforma específica [3].En resumen, MVVMCross admite el código específico de la plataforma al proporcionar un enfoque estructurado para separar la lógica comercial de la implementación específica de la plataforma, aprovechar la inyección de dependencia y la dependencia para la gestión de servicios y ofrecer marcos de enlace y complementos personalizables para integrar las características nativas. Esto permite a los desarrolladores maximizar la reutilización del código mientras se entregan experiencias de usuario específicas de la plataforma.
Citas:[1] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[2] https://dev.to/christian1006/creating-cross-platform-xamarin-applations-using-the-mvvmcross-framework-2920
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://github.com/mvvmcross/mvvmcross
[5] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[6] https://mentormate.com/blog/6-reasons-mvvmcross-speeds-xamarin-development-personalizes-ux/
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://stackoverflow.com/questions/14337063/platformspecific-ioc-in-mvvmcross
[9] https://www.mvvmcross.com/documentation/getting-started/getting-started
[10] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcrossframework/
[11] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvvmcross