Доменное программирование и события
Я делаю некоторые asp.net MVC кодирования с использованием DDD. У меня есть объекты, представляющие бизнес-объекты и сервисные репозитории, которые обрабатывают выборку и добавление их. Я новичок в этом, и по мере роста моего приложения я начинаю видеть много вторичного кода, который должен выполняться в результате добавления, удаления или изменения объектов / данных моего домена.
Я хотел бы создать систему, управляемую событиями, где одно действие запускает другие части кода для запуска. Например, когда я удаляю пользователя, я хочу иметь возможность подписать ряд других вещей на это действие, чтобы они все запускались, когда происходит удаление.
Как вы закодировали свои приложения, чтобы справиться с этими ситуациями? Как я могу установить надежную и согласованную ОО систему для моей проблемы? Я уже знаю о событиях и делегатах, но меня больше интересуют методы кодирования и хорошие практики.
1 ответ
То, что вы, возможно, захотите проверить, это так называемые доменные события. По сути, идея состоит в том, что сама доменная модель запускает специфичные для домена события (например, CustomerRegistered
) и почти все, что вам нравится, вы можете подписаться на них, чтобы делать дополнительные вещи за пределами домена.
Уди Дахан написал несколько хороших статей на эту тему: 1, 2, 3.
Также - пример приложения от Szymon довольно объяснителен в этом.
CQRS великолепен, но влияет на всю архитектуру. Может быть излишним.