Introduktion til CQRS og event sourcing #5

Nu hvor vi har fået sluttet cirklen og har fået beskrevet hvordan vi kan få Cirqus op at køre med view-generering, så vil jeg lige dvæle lidt ved initialiseringen – jeg viste det følgende kodeeksempel:

// ved opstart:
var eventStore = new MsSqlEventStore<TimeToBeCrushedView>("mssql", "Events", automaticallyCreateSchema: true);
var repository = new DefaultAggregateRootRepository(eventStore);

var view = new MsSqlViewManager("mssql", "TimeToBeCrushed",
                                                     automaticallyCreateSchema: true);
var dispatcher = new ViewManagerEventDispatcher(aggregateRootRepository, view);

var commandProcessor = new CommandProcessor(eventStore, repository, dispatcher);

// først....
commandProcessor.Initialize();

// og så i resten af applikationens levetid:
commandProcessor.ProcessCommand(...);

og det er helt klart en gyldig måde at instantiere CommandProcessor‘en på, men rent API-æstetisk så mangler der lissom noget… både i forhold til læsbarhed, men måske især i forhold til API discoverability – så derfor vil jeg anbefale denne smøre i stedet for:

var view = new MsSqlViewManager<TimeToBeCrushedView&gt("mssql");

var commandProcessor = CommandProcessor.With()
    .EventStore(e => e.UseSqlServer("mssql", "Events"))
    .EventDispatcher(e => e.ViewManagerEventDispatcher(view))
    .Create();

som er fuldstændig ækvivalent med den anden. Der kan vist ikke være nogen tvivl om at nr. 2 er lidt mere lækker at se på – men hovedsagen er at man kan CTRL+SPACE sig vej igennem den, og afhængig af hvilke NuGet-pakker man har inkluderet, så vil der dukke flere extension methods op som konfigurationsmuligheder.

Share Button
The following two tabs change content below.
Profile photo of Mogens Heller Grabe

Mogens Heller Grabe

Software Developer af d60
Smidig .NET-håndværker, som svinger kodehammeren hos d60 om dagen og brygger open source om natten. Mine interesser indbefatter i særlig grad distribuerede systemer, messaging og moderne databaser, og teknologisk set er jeg velfunderet/-nedgravet i C# og .NET-land.
Profile photo of Mogens Heller Grabe

Nyeste indlæg af Mogens Heller Grabe (se alle)

Flattr this!

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *