Padrões de aplicativos corporativos usando Xamarin.Forms eBook

Orientação de arquitetura para o desenvolvimento de aplicativos corporativos adaptáveis, sustentáveis e testáveis Xamarin.Forms

Padrões de aplicativos corporativos usando Xamarin.Forms eBook

Observação

Este e-book 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 o propósito e o escopo do guia e a quem ele se destina.

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 claramente a lógica de negócios e apresentação de um aplicativo de sua interface do usuário (interface do usuário). Manter uma separação clara entre a lógica do aplicativo e a interface do usuário ajuda a resolver vários problemas de desenvolvimento e pode tornar um aplicativo mais fácil de testar, manter e evoluir. Ele também pode melhorar muito as oportunidades de reutilização de código e permite que desenvolvedores e designers de interface do usuário colaborem mais facilmente ao desenvolver suas respectivas partes de um aplicativo.

Injeção de dependência

A injeção de dependência permite o 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 de 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.

Comunicação entre componentes flexíveis

A Xamarin.FormsMessagingCenter classe implementa o padrão de publicação-assinatura, permitindo a comunicação baseada em mensagens entre componentes que são 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 controladas por lógica interna. 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 a partir de 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 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 do 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 reajustes frequentes.

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 principais vantagens dos microsserviços é que eles podem ser dimensionados de forma independente, o que significa que uma área funcional específica pode ser dimensionada que requer mais poder de processamento ou largura de banda de rede para dar suporte à demanda, sem dimensionar desnecessariamente áreas do aplicativo que não estão experimentando aumento de 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 MVC ASP.NET. Aqui, a autenticação e a autorização são executadas com um microsserviço de identidade em contêiner que usa o 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.

Acesso a 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 para 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 feedback. O site da comunidade está localizado no GitHub. Como alternativa, os comentários sobre o eBook podem ser enviados por e-mail para dotnet-architecture-ebooks-feedback@service.microsoft.com.