Coloco controladores de eventos de dominio en la capa de dominio como interfaz de dominio IDomainEventHandler
.
Un ejemplo de un controlador de eventos de dominio es una política que se suscribe a cierto evento de dominio para inicializar una nueva transacción (por ejemplo: para activar un nuevo comando de dominio), por lo tanto, tiene sentido tenerlo en la capa de dominio ya que está relacionado con lógica de negocios.
Podríamos pensar en un ejemplo en el que se confirma un pedido y, por lo tanto, se debe crear una solicitud de factura. Tenemos un evento OrderConfirmedEvent
que ha sucedido. Una política en nuestro dominio se encargaría de suscribirse a este evento y crear un comando de dominio RequestInvoice
que será manejado por el controlador de comandos y que se tratará en consecuencia.
Si tuviéramos este controlador de eventos en la capa de aplicación, significaría que la capa de aplicación, además de orquestar las acciones del usuario, ejecutaría cierta lógica empresarial, lo que parece incorrecto.
Sin embargo tenemos