Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ¿Cómo se maneja el código específico de la plataforma MVVMCross?


¿Cómo se maneja el código específico de la plataforma MVVMCross?


MVVMCross está diseñado para manejar el código específico de la plataforma de manera eficiente separando la lógica de la aplicación en dos partes principales: un proyecto central y proyectos específicos de la plataforma. El proyecto central, típicamente una biblioteca estándar de .NET, contiene la lógica de negocios, ver modelos, modelos e interfaces para servicios específicos de la plataforma. Esto permite compartir el código máximo en diferentes plataformas como Android, iOS y Windows.

Proyectos específicos de la plataforma

Cada proyecto específico de la plataforma (por ejemplo, Xamarin.Android, Xamarin.ios) contiene la interfaz de usuario y la implementación de servicios específicos de la plataforma. Estos proyectos son responsables de inicializar el marco MVVMCross y registrar servicios específicos de la plataforma utilizando la clase de configuración. La clase de configuración actúa como un bootstrapper para MVVMCross, lo que permite a los desarrolladores personalizar el comportamiento del marco para cada plataforma.

Inversión de control (COI) e inyección de dependencia

MVVMCross utiliza un contenedor de inversión de control (COI) para administrar las dependencias en toda la aplicación. Esto permite que los servicios específicos de la plataforma se registren e inyecten en la lógica del proyecto central. Por ejemplo, si una aplicación necesita acceder a los servicios de ubicación GPS, el servicio GPS se puede registrar en la clase de configuración específica de la plataforma y luego inyectarse en los modelos de vista u otras partes del proyecto central.

Personalización del comportamiento de la plataforma

Los desarrolladores pueden personalizar el comportamiento específico de la plataforma anulando los métodos en la clase de configuración. Por ejemplo, en Android, puede anular los métodos en `mvxandroidsetup` para registrar servicios específicos de Android o manejar eventos de ciclo de vida específicos de Android. Del mismo modo, en iOS, usaría `MVXIOSSETUP` para manejar la inicialización y el registro de servicios específicos de iOS.

Ver presentadores

MVVMCross también proporciona a los presentadores de vistas, que son responsables de decidir cómo se presentan las opiniones en cada plataforma. Esto permite la personalización de la lógica de presentación de la interfaz de usuario, como mostrar vistas modalmente o como parte de una pila de navegación, dependiendo de las convenciones de la plataforma.

complementos y extensiones

MVVMCross ofrece un marco de complementos que permite a los desarrolladores integrar fácilmente complementos de terceros para funcionalidades comunes como localización, sensores y más. Estos complementos se pueden usar en múltiples plataformas, reduciendo aún más la necesidad de un código específico de la plataforma.

En resumen, MVVMCross maneja el código específico de la plataforma al proporcionar un enfoque estructurado para separar la lógica compartida de las implementaciones específicas de la plataforma. Utiliza la inyección del COI y la dependencia para administrar los servicios de la plataforma, permite la personalización a través de la clase de configuración y admite complementos para extender la funcionalidad en todas las plataformas.

Citas:
[1] https://github.com/mvvmcross/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://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[5] https://stackoverflow.com/questions/14337063/platformspecific-ioc-in-mvvmcross
[6] https://stackoverflow.com/questions/61641185/platformspecific-service-causes-an-exception-mvvmcross-xamarin-ios
[7] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcrossframework/
[8] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-packages
[9] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[10] https://www.mvvmcross.com/documentation/getting-started/getting-started
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup