本文介绍了所谓的“域事件”一个伟大的格局:http://www.udidahan.com/2009/06/14/domain-events-salvation/排队域事件
这种模式不过是评论27用户安迪强调的一个重大缺陷:如果交易失败,我们不希望我们的域名事件执行。因此,我们需要创建某种排队机制。
不幸的是,这听起来像是要大量复杂化本来应该简化系统的技术。
有谁知道排队域事件的一些很好的例子或讨论,特别是与NHibernate集成的解决方案吗?
本文介绍了所谓的“域事件”一个伟大的格局:http://www.udidahan.com/2009/06/14/domain-events-salvation/排队域事件
这种模式不过是评论27用户安迪强调的一个重大缺陷:如果交易失败,我们不希望我们的域名事件执行。因此,我们需要创建某种排队机制。
不幸的是,这听起来像是要大量复杂化本来应该简化系统的技术。
有谁知道排队域事件的一些很好的例子或讨论,特别是与NHibernate集成的解决方案吗?
我弄明白了如何做到这一点:秘密就是NHibernate的ITransaction的RegisterSynchronization方法。
作为一个例子,这里是如何我可能会发邮件到只有当事务被提交客户:
public class NotifyCustomerEmail
{
private void MailMessage { get; set; }
public void SendAsyncOnceTransactionCommits()
{
if (MailMessage == null)
ComposeMailMessage();
NHibernateSessionManager
.CurrentSession
.Transaction
.RegisterSynchronization(new SendEmailSynchronization(this.MailMessage));
}
}
正在思考同一条线,但是你的方法是清洁器 –
的[凡提高持久性依赖域事件可能重复 - 服务,库,或UI?](http://stackoverflow.com/questions/5886174/where-to-raise-persistence-dependent-domain-events-service-repository-or-ui) – cbp