Пример архитектуры ASP .NET
DDD шаблонного доменно-ориентированного проектирования
01 – Презентация
Уровень пользовательского интерфейса
Базовый API:
- Контроллер «Sample» используется для DI и образца класса CacheManager.
- Контроллер «SampleAlt» используется для демонстрации использования «сервисов» > «репозиторий» > «UoW» > «EF».
02 – Домен
Уровень управления данными
Используйте концепцию «модуля»: интерфейсы сервисов с их реализацией (Модуль: агрегаты/сервисы [DDD]).
DTO: объект передачи данных (пример: MyApp.Domain.DTO.SampleDataDTO).
Шаблон спецификации (скоро).
«Выбрать построитель». Благодаря LINQ вы можете создавать собственные выражения для возврата непосредственно в DTO (пример: MyApp.Domain.SampleModule.Aggregates.SampleDataSelectBuilder).
03 – Данные
Уровень доступа к данным
- Используйте EntityFramework (EF) с DbSet/Annotations для привязки SQL/таблицы к классу/объекту (пример: MyApp.Domain.SampleModule.Aggregates.SampleData).
- Шаблон «Единица работы» (UnitOfWork / UoW) добавляет транзакции для решения проблем параллелизма (MyApp.Data.UnitOfWorkContext).
- Шаблон репозитория добавляет слой между DbSet (возвращает IQueryable) с UoW и данными, используемыми в слое «Домен». Манипуляции с запросами разумны: репозиторий возвращает Enumerable или Entity. (MyApp.Data.Core.Repository && MyApp.Domain.Core.IRepository)
04 – Инфраструктура
Уровень управления приложениями
- CrossCutting: один слой можно использовать во всех остальных.
- Инверсия контроля.
- Внедрение зависимостей (DI) и LifeTimeManager.