O MVVMCROSS melhora significativamente a reutilização do código em aplicativos de plataforma cruzada, alavancando o padrão arquitetônico Model-View-ViewModel (MVVM). Veja como isso alcança isso:
1. Separação de preocupações: MVVMCROSS promove uma clara separação de preocupações dividindo o aplicativo em duas partes principais: o núcleo e a interface do usuário. O projeto principal, normalmente uma biblioteca de classes portátil (PCL) ou .NET Standard Library, contém todos os modelos, modelos e lógica de negócios. Isso permite a reutilização máxima de código em diferentes plataformas, pois a lógica de negócios é dissociada do código específico da plataforma [1] [2] [7].
2. ViewModels no projeto principal: Ao colocar os modelos ViewModels no projeto principal, o MVVMCROSS permite que os desenvolvedores compartilhem esses componentes em várias plataformas. Isso significa que a lógica para lidar com interações do usuário, manipulação de dados e navegação pode ser reutilizada sem modificação em diferentes plataformas como iOS, Android e Windows [1] [3] [9].
3. A ligação de dados: MVVMCROSS suporta a ligação de dados, que atualiza automaticamente a interface do usuário quando as alterações ocorrem no ViewModel. Esse recurso é crucial para manter a consistência entre as plataformas e reduz a necessidade de atualizações manuais da interface do usuário, aprimorando ainda mais a reutilização do código [4] [5].
4. Injeção de dependência e plug-ins: MVVMCROSS inclui uma arquitetura de plug-in e recursos de injeção de dependência (DI). Esses recursos permitem que os desenvolvedores implementem funcionalidades específicas da plataforma de uma maneira que possam ser facilmente acessadas e reutilizadas do projeto principal. Isso significa que, embora a camada da interface do usuário deva ser específica da plataforma, muitas funcionalidades subjacentes ainda podem ser compartilhadas [3] [9].
5. Apresentadores de navegação e visualização: MVVMCROSS fornece um poderoso sistema de navegação ViewModel-primeiro, que permite a orquestração da navegação de aplicativos do projeto principal. Isso significa que o fluxo de interações do usuário e transições de tela pode ser gerenciado centralmente, reduzindo a necessidade de código de navegação específico da plataforma [7].
6. Estrutura eficiente do projeto: o MVVMCROSS incentiva uma abordagem estruturada para a organização do projeto, com uma clara separação entre o código agnóstico da plataforma no código principal e específico da plataforma nos projetos da interface do usuário. Essa estrutura facilita a manutenção e a extensão mais fáceis de aplicações de plataforma cruzada [2] [9].
No geral, o MVVMCROSS aprimora a reutilização do código, centralizando a lógica de negócios, alavancando a ligação de dados e fornecendo ferramentas para gerenciar funcionalidades específicas da plataforma de maneira unificada. Essa abordagem reduz significativamente a quantidade de código duplicado e acelera o desenvolvimento de aplicativos de plataforma cruzada.
Citações:[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvmcross
[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-development-with-xamarin-and-mvvmcross-part--introduction/
[5] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[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-mvvmcross-framework/
[10] https://stackoverflow.com/questions/22409697/MAXIMIZING-UI-CODE-REUSE-WITH-Xamarin-MvvMcross