领域驱动编程和事件

5
我正在使用DDD编写一些asp.net mvc代码。我有代表业务实体的对象和处理获取和添加它们的服务存储库。随着我的应用程序增长,我开始看到必须运行大量辅助代码以响应添加、删除或更改域对象/数据的情况。
我想创建一个事件驱动系统,其中一个操作会触发其他部分的代码运行。例如,当我删除用户时,我希望能够订阅一些其他内容以执行所有删除操作时运行的操作。
你是如何编写你的应用程序来处理这些情况的?如何为我的问题建立一个可靠和连贯的OO系统?我已经了解了事件和委托,但我更感兴趣的是编码技巧和良好的实践。

在 .net 中,通常通过接口 INotifyPropertyChanged 和 IObservableCollection 来实现。许多 DataSet-gui-Magic 就是这样实现的。 - k3b
1个回答

8

您可能想要了解的是所谓的领域事件。基本上的想法是,领域模型本身触发特定于领域的事件(例如CustomerRegistered),并且几乎任何您喜欢的内容都可以订阅它们以执行领域外的其他操作。

Udi Dahan撰写了一些很好的文章:第一篇, 第二篇, 第三篇

此外,Szymon的示例应用程序相当详细地说明了这一点。

CQRS很棒,但它影响整个架构。可能会有点过度设计。


这个答案与我想要实现的东西差不多。 - Roman
这是一个非常好的答案。感谢分享这些文章,Arnis。我在谷歌上找不到它们。谢谢! - Tommy Jakobsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接