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.
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.
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.
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.
* 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.
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.
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.
Camada responsável por armazenar as validações a nível de usuário.
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:
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.
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: