我正在学习 洋葱架构 并且我有一个观点。

洋葱架构旨在将领域与技术工件隔离开来。因此,指导原则是让数据访问层 (DAL) 引用域层 (BL)。这样,我应该能够将实体转换为存储工件。引用 BL 可能会给我一个我的域的“快照”,但如果没有更改跟踪系统,我将丢失所有按时间顺序排列的事件,以了解是否在数据存储中插入、更新或删除项目,以便能够正确地补充水分之后的模型。

洋葱架构是否总是需要一些变更跟踪系统,甚至像事件存储这样的东西?我错过了任何其他模式吗?

最佳答案

领域层知道什么时候需要持久化吗?

例如,我可能有一个新的/更新客户屏幕,当我按下完成键时,它会保存一个新客户。那时我不关心更改跟踪,我只想存储我拥有的所有内容。并且我的 DAL 可以确定我在数据库中是否已经有一个同名的客户(如果它应该发出插入或更新查询)。

同样的事情也适用于事件存储。如果您的域关心事件,能够撤消事件等,那么如果是技术实现,则事件存储,

可能会发生的情况是,您的域层始终包含一个完整的内存实时变异系统。在这种情况下,甚至没有快照。

洋葱架构只是描述了工件的分离。它们是哪些工件实际上取决于特定的要求。

关于c# - 洋葱架构、持久性和通知,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37865073/

10-10 03:01