生成和消费业务级别事件的最佳实践建议

时间:2009-12-03 12:53:52

标签: c# asp.net-mvc events domain-driven-design

我们目前正在完成一项针对我们明年在ASP.NET MVC / C#中开发的新软件应用程序的架构计划。

我们计划按照领域驱动的设计模式和技术构建应用程序,我想知道是否有人对拟议系统的某个方面有任何建议/意见。

其中一项业务要求是允许用户选择他们感兴趣的任意数量的业务事件,然后选择在事件发生时如何通知他们。

我非常喜欢提升域事件的想法,但我正在努力弄清楚动态消耗它们的最佳方式。

有没有人建造类似的东西,可以分享一些建议或想法?

2 个答案:

答案 0 :(得分:4)

你可能想看看Udi Dahan的post on Business Events


那你怎么去消费这类活动呢?

在Udi Dahan的帖子中,我得到的印象是他只是有一个进程内代理(实际上是Observer),它会在事件发生时通知所有订阅者。这是无条件发生的,因此每个用户基本上都是自己的过滤器,决定是否要处理相关事件。

只要提升事件本身就发生在进程中,通知所有订阅者也可能同时发生在进程中,只要代理确保通知异步发生以便订阅者不要互相阻塞(或触发事件的业务流程)。

在许多情况下,这可能已经足够好了,但在其他情况下,您可能希望提高可扩展性或稳健性。这些问题可以通过(事务)队列解决,但显然是以增加复杂性为代价。这里的代理仍然存在,但它不是直接通知订户,而是向所有订阅队列添加一条表示该事件的消息。

答案 1 :(得分:1)

那么你可能已经看过Fowler的Domain Event的东西了。 Udi Dahan在这里有一个实施:http://www.udidahan.com/2008/08/25/domain-events-take-2/