Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ¿Puede explicar la interacción entre los proyectos de núcleo y UI en mvvmcross?


¿Puede explicar la interacción entre los proyectos de núcleo y UI en mvvmcross?


MVVMCross es un marco multiplataforma que facilita el desarrollo de aplicaciones utilizando el patrón Model-View-ViewModel (MVVM). Permite a los desarrolladores crear soluciones móviles libremente acopladas, mantenibles y comprobables separando la lógica de la aplicación en dos partes principales: el proyecto central y el proyecto de la UI.

Proyecto central

El proyecto central suele ser una biblioteca estándar de .NET que contiene todo el código compartido, incluido:
- ViewModels: estos son responsables de manejar las interacciones del usuario y la lógica comercial.
- Modelos: Representen las estructuras de datos utilizadas en toda la aplicación.
- Servicios: proporcionar acceso a datos, servicios web u otros recursos externos.
- Converters: utilizado para conversiones de tipo de datos.
- Clase de aplicaciones: esto es responsable de inicializar la lógica comercial y ver los modelos de la aplicación. También maneja el registro de objetos personalizados en el contenedor de inversión de control (COI).
- AppStart: se usa opcionalmente para determinar qué modelo de vista presentar primero cuando se inicia la aplicación.

Proyecto de interfaz de usuario

El proyecto UI es específico de la plataforma y contiene los elementos de la interfaz de usuario y el código específico de la plataforma. Para cada plataforma objetivo (por ejemplo, iOS, Android), hay un proyecto de interfaz de usuario separado. Estos proyectos incluyen:
- Vistas: cada vista es responsable de presentar un modelo de vista correspondiente. Las vistas están diseñadas utilizando herramientas de plataforma nativa (por ejemplo, XAML para Xamarin.Forms, AXML para Android).
- Manejador de aplicaciones nativas: esto maneja los eventos del ciclo de vida nativo. Por ejemplo, en Android, sería una clase de 'MainActivity` o' MainApplication ', mientras que en iOS, sería una clase de' AppDelegate`.
- Clase de configuración: esto es responsable de Bootstrapping MVVMCross y de registro de servicios específicos de la plataforma. Inicializa el marco MVVMCross y configura el contenedor IOC con implementaciones específicas de la plataforma.

Interacción entre los proyectos de Core y UI

La interacción entre los proyectos de núcleo y UI en MVVMCross es facilitada por el patrón MVVM y el contenedor de COI del marco. Así es como interactúan:
- ViewModel Binding: los proyectos de UI usan MVVMCross para vincular las vistas para ver los modelos. Esto generalmente se realiza utilizando una convención de nombres o decorando vistas con atributos como `[MVXViewfor (typeof (homeViewModel))]`.
- Inyección de servicio: el proyecto central define las interfaces para los servicios que se implementan de manera diferente en cada plataforma. Estos servicios están registrados en el contenedor IOC e inyectados en los modelos de vista, lo que permite la funcionalidad específica de la plataforma sin duplicar el código.
- Navegación y presentación: MVVMCross proporciona mecanismos para navegar entre modelos de vista y vistas de presentación. El marco utiliza presentadores (por ejemplo, `IMVXIOSVIEWPRESENTER`,` IMVXANDROIDVIEWPRESENTER`) para administrar cómo se muestran las vistas en cada plataforma.

Al separar la lógica de la aplicación en proyectos de Core y UI, MVVMCross permite a los desarrolladores maximizar la reutilización del código en todas las plataformas y al mismo tiempo permitir la personalización y optimización específica de la plataforma [1] [3] [5].

Citas:
[1] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[2] https://canbilgin.wordpress.com/tag/mvvmcross/
[3] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcrossframework/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[5] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvvmcross
[7] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-core-project
[8] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/