Dav*_*New 5 multithreading domain-driven-design dependency-injection onion-architecture domain-events
我已经按照Udi Dahan 的领域事件 - 救赎文章中的规定实现了领域事件。
据我了解,域事件可以异步运行到引发它的线程(通常来自域模型或服务)。
不需要任何类型的“共享”工作单元或存储库实现,也不需要事务一致性。
问:为什么 Udi 没有在单独的线程中实现领域事件的处理?
例如,我添加了 a 的创建Task来异步处理事件:
public static void Raise<T>(T domainEvent) where T : IDomainEvent
{
if (Container != null)
{
foreach (var handler in Container.ResolveAll<IDomainEventHandler<T>>())
{
Task.Factory.StartNew(() =>
{
handler.Handle(domainEvent);
}).ContinueWith(t => {
// Log exception
}, TaskContinuationOptions.OnlyOnFaulted);
}
}
}
Run Code Online (Sandbox Code Playgroud)
由此可能产生任何多线程问题吗?
编辑: 请注意,虽然这些域事件是轻量级的,但它们仍将在 IIS 上运行,因为这是一个 MVC Web 项目。
| 归档时间: |
|
| 查看次数: |
1450 次 |
| 最近记录: |