Podnoszenie liczby zdarzeń domeny dla wielu subskrybentów

Postanawiam przyjrzeć się wzorcowi zdarzeń domeny i przeczytać wiele zasobów na ten temat, ale nie mogę znaleźć dobrego sposobu implementacji dla naszych wymagań. Zasadniczo mamy warstwę Service / Domain, która otacza warstwę repozytorium dla odczytu / zapisu za pomocą uproszczonej implementacji CQRS. Mamy aplikację ASP.NET Mvc, która zużywa tę warstwę usługi / domeny. Cała aplikacja jest powiązana z Autofac i to, co chciałbym zrobić, to:

Gdy element wiadomości jest tworzony przez wywołanie, powiedz „CreateNews” w rejestrze warstwy usług, aby zdarzenie musiało zostać podniesione w ten sposób:

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);
}

To wszystko dzieje się w transakcji i nie chcę podnosić zdarzenia, dopóki zapisywanie nie zostanie zakończone, więc w naszej metodzie zmian składowania chcę to zrobić:

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

  _domainEventManager.RaiseEvents();
}

Następnie w naszej aplikacji ASP.NET Mvc chcę mieć implementację IHandler, która wygląda tak:

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
    }
}

Nie mogę dowiedzieć się, jak podnieść to zdarzenie z metody save i wywołać implementację w aplikacji Web.Mvc.

Wszelkie sugestie będą mile widziane.

questionAnswers(1)

yourAnswerToTheQuestion