Tabela de conteúdos

Arquitetura da solução

Introdução

Requisitos da Arquitetura

Camadas da Arquitetura

Classes de Domínio

Camada principal da arquitetura, armazena todos objetos do projeto e o mapeamento POCO (Code First) do ORM Entity Framework, responsável por armazenar a regra de negocio de cada entidade, essa camada não depende de nenhuma outra camada.

Classes de Repositório

Camada pretende criar uma abstração entre a camada de domínio e a lógica de negócio, um repositório genérico consulta a fonte de dados para os dados, mapeia os dados da fonte de dados para uma entidade e persiste as mudanças na entidade para a fonte de dados.

Classes de Serviços

Camada com os serviços responsáveis pela comunicação entre a interface com o usuário e o repositório. Responsável por gerenciar as regras de negócio das entidades.

Interface do Usuário

Camada mais externa da aplicação. Nessa camada é armazenada as validações e regras de negócio na visão do usuário, também implementado a inversão de dependência construindo assim uma aplicação menos acoplada comunicando com as outras camadas por interface.

Implementação da Arquitetura

School.Model

* Essa é a camada principal da solução, dessa forma a solução deve ser baseada em seus domínios e negócio a partir da implementação dessa camada.

Dependência de API igual ou maior:

* Como pode ser observado, no conceito de DDD, o projeto de domínio no caso School.Model não deve depender de outras implementações que não sejam base de uma classe c#, como bibliotecas de terceiros.

School.Repository

Camada com a responsabilidade de armazenar as classes de repositório e o contexto de dados. Para utilizar o ADO.NET Entity Framework Code First é necessário criar um contexto de acesso a dados herdando da classe DBContext.

Nessa classe é sobrescrito o método OnModelCreating(), esse método é chamado quando o modelo (schoolContext) foi inicializado e antes de ser finalizado, dessa forma ainda pode ser configurado, no caso instanciando o mapeamento de cada entidade.

School.Business

As lógicas do negócio até então implementadas no modelo são gerenciadas no projeto business.

School.Web

Camada externa da solução pela qual o usuário irá interagir com a aplicação. Criada uma Aplicação Web ASP.NET MVC. Essa camada comunica com a School.Service.

Para serem utilizados como serviço as propriedades como contexto, uma fabrica de objeto deve ser criada e mantida para que o serviço esteja disponível.

Assim os serviços podem ser utilizados no controle das entidades.

View Model

Camada responsável por armazenar as validações a nível de usuário.

View

Camada responsável pela interface com o usuário. Para o projeto Merenda.online foi definida a utilização do componente Devexpress e Devextreme, uma biblioteca com componentes javascript que permite serem manipulados.

Dependências de API igual ou maior:

Controller

Dependências de API igual ou maior:

Camada responsável por gerenciar as requisições web. Com objetivo de manter a relação entre as validações da entidade e as validações de usuário implementadas no ViewModel.

School.Tests

A finalidade do projeto é cobrir o máximo possível de operações das entidades, como validações de domínio e serviços.

Dependências de API igual ou maior: