====== Arquitetura da Solução - Geoserviços.online ====== ===== Fundamentação ===== A arquitetura do sistema foi inspirada na "arquitetura da cebola" ([[http://jeffreypalermo.com/blog/the-onion-architecture-part-1/|Onion Architecture]]), que visa a reduzir o acoplamento entre camadas mantendo o modelo e as regras de negócio no núcleo do sistema e movendo a infraestrutura para fora do domínio. Princípios a serem seguidos: * A aplicação é construída em torno de um modelo independente. * Camadas internas definem interfaces. Camadas externas implementam interfaces. * A direção do acoplamento é de fora para dentro. * Todo o núcleo da aplicação pode ser executado separado da infraestrutura. ===== Camadas ===== ==== Domínio ==== Camada de domínio do sistema. Todo o modelo de dados e as validações são implementados aqui. Esta camada não deve depender de nenhuma outra. ==== Interfaces de serviços ==== Contém as abstrações dos serviços da aplicação que atuam sobre o domínio. ==== Serviços ==== Contém as implementações dos serviços da aplicação. É responsável pelo fluxo da aplicação. ==== Infraestrutura ==== Implementações específicas do serviços externos que a aplicação utiliza, incluindo banco de dados, serviço de envio de e-mail e APIs de terceiros. Contém as classes responsáveis pela configuração do acesso ao banco de dados, mapeamento das entidades no banco de dados, inicialização dos dados e migrações. Também contém as classes de configuração e envio de e-mails. ==== Web ==== Projeto web baseado no ASP.NET Core MVC. ==== Testes ==== Testes unitários, de integração e de interface.