Повышение событий домена для нескольких подписчиков

Я заявляю, что изучаю шаблон «События домена» и прочитал много ресурсов по этой теме, но не могу найти хороший способ реализации наших требований. По сути, у нас есть уровень Service / Domain, который оборачивает уровень хранилища для чтения / записи с упрощенной реализацией CQRS. У нас есть приложение ASP.NET Mvc, которое использует этот уровень службы / домена. Все приложение связано с Autofac, и я бы хотел, чтобы это произошло следующим образом:

Когда новостной элемент создается путем вызова, скажем, «CreateNews» в реестре сервисного уровня, событие должно быть инициировано следующим образом:

public void CreateNews(Domain.Entities.News.NewsBO news)
{
  ValidateBusinessObject(news);

  var entityNews = AutoMapper.Mapper.Map<Repositories.Entities.News.News>(news);
  NewsCommandRepository.Create(entityNews);

  _domainEventManager.Register<NewsCreatedDomainEvent>(x => x.News = news);
}

Это все происходит в транзакции, и я не хочу на самом деле вызывать событие, пока сохранение не будет завершено, поэтому в нашем методе сохранения изменений я хочу сделать это:

public void SaveChanges()
{
  _repoCommandManager.SaveChanges();

  _domainEventManager.RaiseEvents();
}

Затем в нашем приложении ASP.NET Mvc я хочу иметь реализацию IHandler, которая выглядит следующим образом:

public class NewsCreatedDomainEventCacheHandler : IHandles<Project.Services.Domain.Events.News.NewsCreatedDomainEvent>
{ 
    public void Handle(Services.Domain.Events.News.NewsCreatedDomainEvent @event)
    {
      // In here we would update the cache or something else particular to the web layer
    }
}

Я не могу понять, как поднять это событие из метода save и вызвать реализацию в приложении Web.Mvc.

Мы ценим любые предложения.

Ответы на вопрос(1)

Ваш ответ на вопрос