Padrões de aplicativo empresarial usando Xamarin.Forms eBook

Diretrizes arquitetônicas para desenvolver aplicativos empresariais adaptáveis, manteneveis e testáveis Xamarin.Forms

Padrões de aplicativo empresarial usando Xamarin.Forms eBook

Observação

Este eBook foi publicado na primavera de 2017 e não foi atualizado desde então. Há muito no livro que permanece valioso, mas parte do material está desatualizado.

Este eBook fornece diretrizes sobre como implementar o padrão MVVM (Model-View-ViewModel), injeção de dependência, navegação, validação e gerenciamento de configuração, mantendo o acoplamento flexível. Além disso, também há diretrizes sobre como executar autenticação e autorização com IdentityServer, acessar dados de microsserviços em contêineres e teste de unidade.

Prefácio

Este capítulo explica a finalidade e o escopo do guia e para quem ele é destinado.

Introdução

Os desenvolvedores de aplicativos empresariais enfrentam vários desafios que podem alterar a arquitetura do aplicativo durante o desenvolvimento. Portanto, é importante criar um aplicativo para que ele possa ser modificado ou estendido ao longo do tempo. A projeção para essa adaptabilidade pode ser difícil, mas normalmente envolve particionar um aplicativo em componentes discretos e livremente acoplados que podem ser facilmente integrados em um aplicativo.

MVVM

O padrão MVVM (Model-View-ViewModel) ajuda a separar corretamente a lógica de negócios e apresentação de um aplicativo de sua interface do usuário. Manter uma separação limpo entre a lógica do aplicativo e a interface do usuário ajuda a resolver vários problemas de desenvolvimento e pode facilitar o teste, a manutenção e a evolução de um aplicativo. Ele também pode melhorar consideravelmente as oportunidades de reutilização de código e permite que desenvolvedores e designers de interface do usuário colaborem com mais facilidade ao desenvolver suas respectivas partes de um aplicativo.

Injeção de dependência

A injeção de dependência permite a desacoplamento de tipos concretos do código que depende desses tipos. Normalmente, ele usa um contêiner que contém uma lista de registros e mapeamentos entre interfaces e tipos abstratos e os tipos concretos que implementam ou estendem esses tipos.

Os contêineres de injeção de dependência reduzem o acoplamento entre objetos fornecendo uma instalação para instanciar instâncias de classe e gerenciar seu tempo de vida com base na configuração do contêiner. Durante a criação dos objetos, o contêiner injeta todas as dependências que o objeto requer nele. Se essas dependências ainda não tiverem sido criadas, o contêiner criará e resolverá suas dependências primeiro.

Comunicando-se entre componentes flexívelmente acoplados

A Xamarin.FormsMessagingCenter classe implementa o padrão publish-subscribe, permitindo a comunicação baseada em mensagem entre componentes inconvenientes para vincular por referências de objeto e tipo. Esse mecanismo permite que publicadores e assinantes se comuniquem sem uma referência entre eles, ajudando a reduzir as dependências entre os componentes, permitindo também que os componentes sejam desenvolvidos e testados independentemente.

Xamarin.Forms inclui suporte para navegação de página, que normalmente resulta da interação do usuário com a interface do usuário ou do próprio aplicativo, como resultado de alterações de estado internas controladas por lógica. No entanto, a navegação pode ser complexa de implementar em aplicativos que usam o padrão MVVM.

Este capítulo apresenta uma NavigationService classe , que é usada para executar a navegação do modelo de exibição primeiro dos modelos de exibição. Colocar a lógica de navegação em classes de modelo de exibição significa que a lógica pode ser exercida por meio de testes automatizados. Além disso, o modelo de exibição pode implementar a lógica para controlar a navegação para garantir que determinadas regras de negócios sejam impostas.

Validação

Todo aplicativo que aceitar a entrada dos usuários precisará garantir que a entrada seja válida. Sem validação, um usuário pode fornecer dados que fazem com que o aplicativo falhe. A validação impõe regras de negócios e impede que um invasor injete dados mal-intencionados.

No contexto do padrão MVVM (Model-View-ViewModel), um modelo ou modelo de exibição geralmente será exigido para executar a validação de dados e sinalizar eventuais erros de validação para a exibição a fim de que o usuário possa corrigi-los.

Gerenciamento de Configuração

As configurações permitem a separação de dados que configura o comportamento de um aplicativo do código, permitindo que o comportamento seja alterado sem recompilar o aplicativo. As configurações de aplicativo são dados que um aplicativo cria e gerencia, e as configurações do usuário são as configurações personalizáveis de um aplicativo que afetam o comportamento do aplicativo e não exigem reajuste frequente.

Microservices em contêineres

Os microsserviços oferecem uma abordagem de desenvolvimento e implantação de aplicativos que é adequada aos requisitos de agilidade, escala e confiabilidade de aplicativos de nuvem modernos. Uma das vantagens main dos microsserviços é que eles podem ser dimensionados de forma independente, o que significa que uma área funcional específica pode ser dimensionada, o que requer mais capacidade de processamento ou largura de banda de rede para dar suporte à demanda, sem dimensionar desnecessariamente áreas do aplicativo que não estão enfrentando maior demanda.

Autenticação e autorização

Há muitas abordagens para integrar autenticação e autorização em um Xamarin.Forms aplicativo que se comunica com um aplicativo Web ASP.NET MVC. Aqui, a autenticação e a autorização são executadas com um microsserviço de identidade em contêineres que usa IdentityServer 4. O IdentityServer é uma estrutura OpenID Connect e OAuth 2.0 de código aberto para ASP.NET Core que se integra ao ASP.NET Core Identity para executar a autenticação de token de portador.

Acessando dados remotos

Muitas soluções modernas baseadas na Web usam serviços Web, hospedados por servidores Web, para fornecer funcionalidades para aplicativos de cliente remoto. As operações que um serviço Web expõe constituem uma API Web, e os aplicativos cliente devem conseguir usar a API Web sem saber como os dados ou operações que a API expõe são implementados.

Testes de Unidade

Testar modelos e exibir modelos de aplicativos MVVM é idêntico ao teste de outras classes, e as mesmas ferramentas e técnicas podem ser usadas. No entanto, há alguns padrões que são típicos de modelar e exibir classes de modelo, que podem se beneficiar de técnicas específicas de teste de unidade.

Site da Comunidade

Este projeto tem um site da comunidade, no qual você pode postar perguntas e fornecer comentários. O site da comunidade está localizado no GitHub. Como alternativa, os comentários sobre o eBook podem ser enviados por email para dotnet-architecture-ebooks-feedback@service.microsoft.com.