使用框架事件调度程序引发域事件


Using framework event dispatcher to raise domain event

当我需要引发域事件时,我应该使用特定于框架的事件调度程序还是创建由框架事件调度程序实现的自己的事件调度程序?由于框架有一个非常好的事件调度程序,并且DDD的术语说域层不应该依赖于任何外部事物,所以我感到困惑。:D

谢谢

最近,

我倾向于从域方法返回事件并在应用程序服务层中处理这些事件。 由于应用程序服务层是将各种基础结构汇集在一起的地方,因此可以在应用程序服务层中处理返回事件的进一步处理,例如调度。

这样,您无需使用调度程序单一实例或将对调度程序的任何引用传递到您的域。

这是一个设计选择。如果要向事件调度程序添加其他功能,或者希望很快执行此操作,请扩展。否则,如果您实现了该确切功能,则只需使用该类。没有必要扩展课程,一旦需要,您将始终能够这样做。

我所做的是让我的聚合记录业务事务期间发生的事件列表,在我的应用程序服务中,我发布事件如下:

        IDomainEventPublisher publisher = new DomainEventPublisher();
        publisher
            .SubscribeTo<ConsigneeCreated>()
                .UsingDelegate(e =>
                    Console.WriteLine(string.Format("Consignee Id - {0}", e.ConsigneeId.ToString())));

        publisher.Publish(consignee.ReleaseEvents());