EntityProcessor

Теория и практика | создано: 12/11/2022 | опубликовано: 12/17/2022 | обновлено: 2/2/2023 | просмотров: 238

Entity processing with domain event collection. Rules, Actions, Validators, some helpers and other things for Domain-Driven Design pattern implementation.

Что это?

Нет ничего проще, чем создать хорошую архитектуру для проекта. Вот только понятие "хорошая" не всегда совпадает с общепринятыми стандартами, паттернами и прочими правилами разработки. Обычно работает одно правило: "сойдет и так". Чем писать много букв, предлагаю посмотреть на видео, на котором я постарался по полочкам разложить необходимость использования подобного решения. И, конечно же, обосновав это как только мог, ссылаясь на свои опыт и практику.

Для того, чтобы показать, как использовать EntityProcessor задумана простая логика.

Создание Order

По идеи требуется создать сущность Order использую какие-то проверки свойств. В случае успешного прохождения всех проверок сущность "сохраняется" в базу данных.

Обновление Order

Следующий шаг, обновление статуса сущности Order. При проверки определенных свойств у сущности, также "сохраняем" обновления в базу данных.

События домена (Domain Events)

В процессе проверок, требуется запустить соответствующие события (Domain Event). В случае Calabonga.EntityProcessor.ConsoleAppAdvanced регистрируем их в выходных данных, а дальше запускаем эти события через Mediatr.

Calabonga.EntityProcessor.ConsoleAppGood

В этом проекте реализован простой, но при этом не менее работоспособный вариант реализации описанной выше логики.

Calabonga.EntityProcessor.ConsoleAppAdvanced

В этом проекте реализован уже более продвинутый способ реализации, которые дает полных контроль происходящего, но и кода придется написать немного больше.

Видео

00:00 | Приветствие и заставка
02:25 | Немного слайдов по теме
10:13 | Смотрим, что приготовлено в проекте
22:07 | Создание проекта с суффиксом Advanced
50:36 | Знакомство с проектом после рефакторинга
1:07:30 | Дополнительные материалы и заключение

Ссылки

GitHub Calabonga.EntityProcessor

Nuget Calabonga.EntityProcessor