我们目前正在为明年将在 ASP.NET MVC/C# 中开发的新软件应用程序完成架构计划。
我们计划按照领域驱动设计模式和技术构建应用程序,我想知道是否有人对所提议系统的某个方面有任何建议/意见。
业务需求之一是允许用户选择他们感兴趣的任意数量的业务事件,然后选择事件发生时通知他们的方式。
我非常喜欢引发域事件的想法,但我正在努力找出动态使用它们的最佳方式。
有没有人构建过类似的东西并且可以分享一些建议或想法?
最佳答案
您可能想看看 Udi Dahan 的 post on Business Events .
那么您如何处理此类事件?
在 Udi Dahan 的帖子中,我的印象是他只是有一个进程内代理(实际上是一个 Observer ),它会在事件发生时通知所有订阅者。这是无条件发生的,因此每个订阅者基本上都充当自己的过滤器,决定是否要处理相关事件。
只要 raising 事件本身发生在进程中,通知所有订阅者也可能发生在进程中,只要代理确保通知异步发生,以便订阅者不要互相阻塞(或触发事件的业务流程)。
在许多情况下,这可能就足够了,但在其他情况下,您可能需要更高的可扩展性或稳健性。这些问题可以通过(事务性)队列来解决,但显然是以增加复杂性为代价的。这里代理仍然存在,但不是直接通知订阅者,而是将表示事件的消息添加到所有订阅队列。
关于c# - 生成和使用业务级事件的最佳实践建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1839700/