Forfatter Arkiv for Mogens Heller Grabe

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.

Introduktion til CQRS og event sourcing #6

I det forrige indlæg viste jeg Cirqus’ konfigurations-API, som helt objektivt set i høj grad kan klassificeres som “lækker”, måske endda “herre-nice”. Nu skal vi snakke lidt mere om event-processering – eller “projektioner”, som det også kaldes – altså det her, der sker med events efter at de er blevet genereret. “Projektioner” er i dette eksempel begrænset til views, altså materialiserede read-modeller i en…

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,…

Introduktion til CQRS og event sourcing #4

Nu hvor vi de foregående tre indlæg har arbejdet os hen til at kunne processere commands, så mangler vi bare det sidste trin i raketten for at kunne slutte cirklen: Views. Views dannes ud fra events efterhånden som de sker, og med Cirqus foregår dette ved at man installerer en passende IEventDispatcher implementation. En IEventDispatcher er en dims, der får mulighed for at gøre…

Introduktion til CQRS og event sourcing #3

I det forrige indlæg så hvordan vi kunne kode en Beetroot, som vi kunne sende en SqueezeCommand til. Når command’en blev processeret ville den kalde Squeeze(howMuch)-funktionen på rødbeden, som så ville emitte en BeetrootSquashed event hvis den stadig havde list saft i sig, og ellers ville den emitte en BeetrootCompletelyCrushed – så langt så godt! Men vi mangler stadigvæk at få bragt lidt liv…

Introduktion til CQRS og event sourcing #2

I det forrige indlæg beskrev jeg i grove træk principperne i event sourcing og CQRS, og så lovede jeg at give en introduktion til d60s Cirqus-framework… samtidig med introduktionen til Cirqus vil jeg også sørge for at vi har en fælles ordbog, sådan at vi er nogenlunde enige om hvad vi snakker om resten af tiden. Here goes: Domain-driven design Greg Youngs ide om…

Introduktion til CQRS og event sourcing #1

Da jeg har brugt den seneste tid dybt begravet i CQRS og event sourcing, og da der ikke p.t. på QED.dk findes artikler om emnet – og da vi hos d60 for nylig har udgivet vores egenudviklede CQRS + event sourcing framework, Cirqus, som FOSS på GitHub – så synes jeg lige det er på sin plads at introducere emnet. Dette indlæg vil give…

Softwareudvikling, aber og kokosnødder

abefælde

I Robert M. Pirsigs syrede roman, Zen And The Art Of Motorcycle Maintenance, beskriver hovedpersonen Phaedrus en række “mods-fælder” (“gumption traps”), hvoraf den farligste efter hans udsagn er “value rigidity” – altså værdi-rigiditet. Værdi-rigiditet er, kort beskrevet, manglende evne til at reevaluere sine opfattelse af en situation, forårsaget af en binding til tidligere værdier. Et eksempel på dette er den sydindiske abefælde, som er…