Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Você pode explicar a interação entre os projetos núcleo e interface do usuário em mvvmcross


Você pode explicar a interação entre os projetos núcleo e interface do usuário em mvvmcross


O MVVMcross é uma estrutura de plataforma cruzada que facilita o desenvolvimento de aplicativos usando o padrão Model-View-ViewModel (MVVM). Ele permite que os desenvolvedores criem soluções móveis vagamente acopladas, sustentáveis ​​e testáveis, separando a lógica do aplicativo em duas partes principais: o projeto principal e o projeto da interface do usuário.

Projeto principal

O projeto principal é normalmente uma biblioteca padrão .NET que contém todo o código compartilhado, incluindo:
- ViewModels: Eles são responsáveis ​​por lidar com as interações do usuário e a lógica de negócios.
- Modelos: representam as estruturas de dados usadas em todo o aplicativo.
- Serviços: Forneça acesso a dados, serviços da Web ou outros recursos externos.
- Conversores: Usado para conversões de tipo de dados.
- Classe de aplicativo: isso é responsável por inicializar a lógica de negócios do aplicativo e os modelos de exibição. Ele também lida com o registro de objetos personalizados na inversão do contêiner de controle (IOC).
- Appstart: Opcionalmente usado para determinar qual modelo de exibição se apresentar primeiro quando o aplicativo é iniciado.

Projeto da interface do usuário

O projeto da interface do usuário é específico da plataforma e contém os elementos da interface do usuário e o código específico da plataforma. Para cada plataforma de destino (por exemplo, iOS, Android), existe um projeto de interface do usuário separado. Esses projetos incluem:
- Visualizações: Cada visualização é responsável por apresentar um modelo de visualização correspondente. As visualizações são projetadas usando ferramentas de plataforma nativa (por exemplo, xaml para xamarin.forms, axml para android).
- Manipulador de aplicativos nativo: isso lida com eventos de ciclo de vida nativos. Por exemplo, no Android, seria uma classe 'MainActivity` ou' MainApplication`, enquanto no iOS, seria uma classe `AppDelegate`.
- Classe de configuração: isso é responsável por bootstrapping mvvmcross e serviços específicos da plataforma de registro. Ele inicializa a estrutura MVVMCROSS e configura o contêiner do IOC com implementações específicas da plataforma.

interação entre os projetos de núcleo e interface do usuário

A interação entre os projetos núcleo e interface do usuário no MVVMcross é facilitada pelo padrão MVVM e pelo contêiner do IOC da estrutura. Aqui está como eles interagem:
- ViewModel Binding: os projetos da interface do usuário usam MVVMcross para vincular as visualizações para visualizar os modelos. Isso geralmente é feito usando uma convenção de nomenclatura ou decorando vistas com atributos como `[mvxViewfor (typeof (homeviewmodel))]].
- Injeção de serviço: o projeto principal define interfaces para serviços que são implementados de maneira diferente em cada plataforma. Esses serviços são registrados no contêiner do COI e injetados nos modelos de exibição, permitindo a funcionalidade específica da plataforma sem duplicar o código.
- Navegação e apresentação: o MVVMCROSS fornece mecanismos para navegar entre os modelos de exibição e a apresentação de visualizações. A estrutura usa os apresentadores (por exemplo, `iMVXIOSVIEWPRESTER`,` imvxandroidViewPresender`) para gerenciar como as visualizações são exibidas em cada plataforma.

Ao separar a lógica do aplicativo nos projetos Core e UI, o MVVMCROSS permite que os desenvolvedores maximizem a reutilização do código entre as plataformas, além de permitir a personalização e otimização específicas da plataforma [1] [3] [5].

Citações:
[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-mvvmcross-framework/
[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-mvmcross
[7] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-core-project
[8] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/