Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 生成和使用业务级事件的最佳实践建议_C#_Asp.net Mvc_Events_Domain Driven Design - Fatal编程技术网

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

C# 生成和使用业务级事件的最佳实践建议,c#,asp.net-mvc,events,domain-driven-design,C#,Asp.net Mvc,Events,Domain Driven Design,我们目前正在完成一个新软件应用程序的架构计划,该应用程序将于明年在ASP.NET MVC/C中开发 我们正计划按照领域驱动的设计模式和技术构建应用程序,我想知道是否有人对建议系统的某个方面有任何建议/观点 业务需求之一是允许用户选择他们感兴趣的任意数量的业务事件,然后选择事件发生时通知他们的方式 我非常喜欢引发域事件的想法,但我正在努力找出最好的方式是动态消费它们 有没有人做过类似的东西,可以分享一些建议或想法?你可能想看看Udi Dahan的 那么,你如何消费这些活动呢 在Udi Dahan

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

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

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

我非常喜欢引发域事件的想法,但我正在努力找出最好的方式是动态消费它们


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

你可能想看看Udi Dahan的


那么,你如何消费这些活动呢

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

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


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

那么,您可能已经看到了Fowler的内容。Udi Dahan在这里对实现有一个看法:

Hi,是的,我肯定并且喜欢Udi对域事件的看法(我没有明确表示我已经准备好看到它了。)我缺少的是事件的消耗。我是否为每一个事件都设置了一个侦听器,然后决定是否将它们传递给感兴趣的用户?如果这超出了正在运行的进程;我该如何消费这些活动?我应该把它们推到某种类型的消息队列中吗?非常感谢:)我已经详细阐述了我的答案。