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.