c# - 生成和使用业务级事件的最佳实践建议

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

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

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

业务需求之一是允许用户选择他们感兴趣的任意数量的业务事件,然后选择事件发生时通知他们的方式。

我非常喜欢引发域事件的想法,但我正在努力找出动态使用它们的最佳方式。

有没有人构建过类似的东西并且可以分享一些建议或想法?

最佳答案

您可能想看看 Udi Dahan 的 post on Business Events .


那么您如何处理此类事件?

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

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

在许多情况下,这可能就足够了,但在其他情况下,您可能需要更高的可扩展性或稳健性。这些问题可以通过(事务性)队列来解决,但显然是以增加复杂性为代价的。这里代理仍然存在,但不是直接通知订阅者,而是将表示事件的消息添加到所有订阅队列。

关于c# - 生成和使用业务级事件的最佳实践建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1839700/

相关文章:

c# - 添加子实体时如何避免保留整个聚合根?

c# - 使用 Tor 作为代理

c# - UInt16数组,C#中的后缀是什么?

asp.net-mvc - 如果我在一个页面中添加多个表单,是否需要在每个表单中添加单独的防伪 token ?

c# - Web.config 导致 "blocked by group policy"错误

javascript - 使用开发人员工具跟踪 jQuery 事件绑定(bind)

winforms - 如何判断 MouseDown 事件中是否按下了 Shift?

c# - AlarmManager.SetRepeating 无法正常工作

asp.net-mvc - 已经为此应用程序配置了存储机制

c++ - 没有互斥锁的事件通知