我一直在阅读很多关于事件驱动架构 (EDA) 设计模式的内容,虽然它看起来异常强大(我敢看到漂亮吗?)我对两件事感到困惑:一,如何控制条件逻辑,二,如何控制异常。
假设我想设计一些为 Ajax 消费公开的回调。回调将由前端以“用户名”和“密码”触发,我将返回一个本地化的“返回码”,指示成功或失败。
当用户成功登录时,假设我登录了它,发送管理和电子邮件,并开始一个会话。如果我使用的是基于 EDA 的模式,我可能会有以下情况:
用户登录 ->(调度事件,始终)->(日志、发送电子邮件、开始会话全部调用)
也就是说,登录回调将发送一些通知,向所有注册的类发出监听该特定事件的通知。我的问题是,谁在确认身份验证器对(用户名、密码)是否成功?从某种意义上说,这三个事件只有在身份验证正确的情况下才有效。
所以,也许我会先触发一个事件,并且只有在成功的情况下才会触发其他事件:
用户登录 ->(始终发送调度事件)-> 尝试登录用户(调度事件,如果成功)->(全部调用日志、发送电子邮件、启动会话)
虽然这样可行,但我已经失去了如何获得反馈的控制权。事件似乎遵循“一劳永逸”的思路;如何将代码返回到前端?也就是说,我看不到事件观察者向主题提供反馈的方法。
这继续进行异常处理;在这种情况下处理异常的最佳方法是什么?
感谢任何建议!阿德里安
(虽然这在理论上可能无关紧要,但我正在尝试将其应用于 PHP)