Я много читал о шаблоне проектирования управляемой событиями (EDA), и хотя он кажется исключительно мощным (смею ли я видеть красиво?), Я смущен две вещи: одна, как управлять условной логикой и две, как управлять исключениями.Обработка исключений и управление состоянием в архитектуре, управляемой событиями
Предположим, я хочу спроектировать некоторый обратный вызов, открытый для потребления Ajax. Обратный вызов будет запущен передним концом с «именем пользователя» и «паролем», и я верну локализованный код возврата, указывающий на успех или неудачу.
Когда пользователь успешно войдет в систему, предположим, что я его регистрирую, отправляю управление и электронную почту и начинаю сеанс. Если бы я был с помощью шаблона на основе EDA, я мог бы иметь следующие:
Журналы пользователей В -> (событие Отправки, всегда) -> (лаг, Отправить на e-mail, Start Session все называется)
То есть, обратный вызов login отправит некоторое уведомление, выдающее все зарегистрированные классы, которые прослушивают это конкретное событие. Моя проблема в том, кто подтверждает , если пара аутентификаторов (имя пользователя, пароль) успешна? В некотором смысле, эти три события действительны только , если аутентификация была верна.
Таким образом, возможно, тогда я огонь одно событие первое, и только в случае успеха, огонь остальных: Журналы
пользователя в -> (событие Отправки, всегда) -> Попытка входа в систему пользователя (Отправки случае, если успешный) -> (Log, Send Email, Start Session all called)
Хотя это работает, я потерял контроль над тем, как получить обратную связь. События, по-видимому, следуют «набору и забыванию» мысли; как я могу вернуть код в интерфейс? То есть, я не вижу возможности для наблюдателя событий давать обратную связь этому вопросу.
Продолжает обработку исключений; как наилучшим образом обрабатывать исключения в этом сценарии?
Цените любые советы! Адриан
(Хотя это, вероятно, не имеет значения, в теоретическом смысле, я пытаюсь применить это к PHP)
Отлично, спасибо огромное Майку.Я думаю, что сам пришел к тому же самому выводу, что это не шаблон типа «один размер подходит всем». Правда ли, что фокусировка EDA только на бизнес-домен называется Domain EDA? – AdrianGW
Это ничего не называется. Но если вы скажете, что люди, участвующие в событиях событий домена, понимают, что вы имеете в виду. – MikeSW
Отлично. Спасибо за вашу помощь! – AdrianGW