Exemplo de arquitetura ASP .NET
Design baseado em domínio padrão DDD
01 - Apresentação
A camada de interface do usuário
API básica:
- O controlador "Sample" é usado para DI e amostra da classe CacheManager.
- O controlador "SampleAlt" é usado para demonstrar o uso de "serviços" > "repositório" > "UoW" > "EF"
02 – Domínio
A camada de gerenciamento de dados
Use a concepção de "módulo": interfaces de serviços com sua implementação (Módulo: agregados/serviços [DDD])
DTO: Objeto de transferência de dados (exemplo: MyApp.Domain.DTO.SampleDataDTO).
O padrão de especificação (em breve).
"Select Builder": Graças ao LINQ você é capaz de criar expressões personalizadas para retornar diretamente um DTO (exemplo: MyApp.Domain.SampleModule.Aggregates.SampleDataSelectBuilder).
03 - Dados
A camada de acesso a dados
- Use EntityFramework (EF) com DbSet/Annotations para vincular um SQL/Tabela a uma classe/objeto (exemplo: MyApp.Domain.SampleModule.Aggregates.SampleData).
- O Padrão Unidade de Trabalho (UnitOfWork / UoW) adiciona transações para a resolução de problemas de simultaneidade (MyApp.Data.UnitOfWorkContext).
- O Repository Pattern adiciona uma camada entre DbSet (retorno IQueryable) com UoW e os dados usados na camada "Domínio". A manipulação consultável é sensata, um Repositório retorna um Enumerável ou uma Entidade. (MyApp.Data.Core.Repository && MyApp.Domain.Core.IRepository)
04 – Infraestrutura
A camada de gerenciamento de aplicativos
- CrossCutting: uma camada pode ser usada em todas as outras.
- A inversão do controle.
- Injeção de Dependência (DI) e LifeTimeManager.