SlideShare a Scribd company logo
1 of 18
CQRS
OVERZICHT
• Wat is CQRS
• Situering
• Vervolg
OVERZICHT
• Wat is CQRS
WAT IS CQRS
• Command Query Responsibility Segregation
• Idee: Een methode veranderd de status van
een object of geeft een resultaat terug, maar
niet beide.
• Gevolg: je kan een ander model gebruiken
voor ‘reads’ (queries) dan voor ‘writes’
(commands)
TRADITIONEEL: CRUD
• Alle acties (lezen en schrijven) gebeuren via
hetzelfde model en volgen hetzelfde pad.
• Hoofdzaak is het bewaren en opvragen van deze
model objecten.
• De vraag en noden worden meer complex.
• Verschillende views op de data
• Meerdere records samenvoegen in 1
weergave (virtuele records)
• Validatie bij het bewaren
• …
TRADITIONEEL: CRUD
Application
DB
UIModel
Model leest
uit database
Service biedt informatie
aan voor weergave
Gebruiker doet
wijzigingen
Wijziging doorsturen naar model
Model voert validatie en
logica uit
Model update
database
CQRS
• Structuur met verschillende weergaven kan
snel tot een complex model leiden
• Reden: de verschillende weergaven worden
vertaalt naar éénzelfde model dat als
integratiepunt dient.
• CQRS deelt dit op in verschillende modellen
voor update en weergave
Application
DB
UI
Command Model
Query model
leest uit DB
Query service biedt
informatie aan voor
weergave
Gebruiker doet
wijzigingen
Applicatie stuurt gewijzigde info
door naar het command model
Command model voert
validatie en logica uit
Command
model update
database
Query Model
CQRS
• De (in-memory) models kunnen dezelfde database
gebruiken
• Database is de communicatie tussen beide
models
• Ze kunnen ook verschillende databases gebruiken
• Optimalisatie mogelijk per DB voor de
specifieke taken (indexen, views, reporting …)
• Nood aan een communicatiemechanisme
tussen de models/databases
OVERZICHT
• Wat is CQRS
• Situering
SITUERING
• CQRS is GEEN volledige architectuur.
• CQRS is WEL een design pattern.
• CQRS is toepasbaar op onderdelen van een project waar het nodig
is. Niet op het volledige project.
• Past zeer goed in het kader van DDD (Domain Driven Design)
waarbij CQRS toegepast kan worden op specifieke sub-domeinen
(Bounded Context)
DOMAIN DRIVEN DESIGN
• Typisch (ref. CRUD) worden Domain Model en Store
model zeer gelijkaardig gehouden om mappings te
vereenvoudigen.
• Zeker met technologeën zoals EntityFramework
• Gevolg: Model wordt complexer dan nodig.
• Een zeer eenvoudige view kan door het model zeer
complexe queries en logica veroorzaken
• Bvb. Een order plaatsen op amazon is 1 klik op de knop,
achterliggend een volledige flow
• Bvb. data uit meerdere tabellen in 1 view tonen (joins)
UBIQUITOUS LANGUAGE (UL)
• Concept
• “Alomtegenwoordige” taal
• Verzameling gebruikte vaktermen
• Gedeeld door alle betrokken partijen
• Verwarring minimaliseren
UBIQUITOUS LANGUAGE (UL)
• Werkwoorden en zelfst. naamwoorden
• Sleutel concepten binnen de business logica
• Mappen naar technische implementaties
• Queries, commands en saga’s
BOUNDED CONTEXT (BC)
• Afgebakend deel van het domein, business logica
• Groeit naargelang de kennis van de UL groeit
• Één term kan meerdere betekenissen hebben in
verschillende BCs
BOUNDED CONTEXT (BC)
• Realiteit: Amazon.com
• “Gebruiker” in de login BC
• “Klant” in de payment BC
• Context is dus belangrijk
OVERZICHT
• Wat is CQRS
• Situering
• Vervolg
VERVOLG
• Verschillende implementatie mogelijkheden
• Basic
• Deluxe
• Eventsourcing
• Verschillende stores (read en write) in sync
houden
• Maakt CQRS de zaken niet complexer?

More Related Content

Similar to Technische sessie: Intro to CQRS

DSD-NL 2019 Cloud services in onze waterwereld - Schotmeijer
DSD-NL 2019 Cloud services in onze waterwereld - SchotmeijerDSD-NL 2019 Cloud services in onze waterwereld - Schotmeijer
DSD-NL 2019 Cloud services in onze waterwereld - SchotmeijerDeltares
 
Presentatie Shift16 Organiseer IT voor de Cloud
Presentatie Shift16 Organiseer IT voor de CloudPresentatie Shift16 Organiseer IT voor de Cloud
Presentatie Shift16 Organiseer IT voor de CloudMarcel Van der Linden
 
Versiebeheer van database changes
Versiebeheer van database changesVersiebeheer van database changes
Versiebeheer van database changesArjen van Vliet
 
Meetup DB testing met SoapUI en Robot Framework.pdf
Meetup DB testing met SoapUI en Robot Framework.pdfMeetup DB testing met SoapUI en Robot Framework.pdf
Meetup DB testing met SoapUI en Robot Framework.pdfchristiantester
 
Gegevensbanken En Gebruikers
Gegevensbanken En GebruikersGegevensbanken En Gebruikers
Gegevensbanken En GebruikersErik Duval
 
TechDays 2015 - SharePoint van traditie naar verandering
TechDays 2015 - SharePoint van traditie naar veranderingTechDays 2015 - SharePoint van traditie naar verandering
TechDays 2015 - SharePoint van traditie naar veranderingAlbert-Jan Schot
 
Nlrs family guide doors 161220
Nlrs family guide doors 161220Nlrs family guide doors 161220
Nlrs family guide doors 161220Mark Maas
 
Eduvision - Webinar drupal: gratis online cursus Drupal
Eduvision - Webinar drupal: gratis online cursus DrupalEduvision - Webinar drupal: gratis online cursus Drupal
Eduvision - Webinar drupal: gratis online cursus DrupalEduvision Opleidingen
 
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo BruggeHTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo BruggePureplexity
 
SE & BIM: twee cruciale onderdelen van een succesvolle ketensamenwerking
SE & BIM: twee cruciale onderdelen van een succesvolle ketensamenwerkingSE & BIM: twee cruciale onderdelen van een succesvolle ketensamenwerking
SE & BIM: twee cruciale onderdelen van een succesvolle ketensamenwerkingCROW
 
Crowd Designing Microservices Architecture
Crowd Designing Microservices ArchitectureCrowd Designing Microservices Architecture
Crowd Designing Microservices ArchitectureRubiX BV
 
NL Front-end Guidelines (HTML,CSS,Javascript)
NL Front-end Guidelines (HTML,CSS,Javascript)NL Front-end Guidelines (HTML,CSS,Javascript)
NL Front-end Guidelines (HTML,CSS,Javascript)Mathijs Jong
 
Sdb Presentatie
Sdb PresentatieSdb Presentatie
Sdb Presentatiemenfey
 
SE & BIM 3. Een beter SE-proces met BIM? door Hans Hoeber en Gerwin Duine
SE & BIM 3. Een beter SE-proces met BIM? door Hans Hoeber en Gerwin DuineSE & BIM 3. Een beter SE-proces met BIM? door Hans Hoeber en Gerwin Duine
SE & BIM 3. Een beter SE-proces met BIM? door Hans Hoeber en Gerwin DuineCROW
 

Similar to Technische sessie: Intro to CQRS (20)

DSD-NL 2019 Cloud services in onze waterwereld - Schotmeijer
DSD-NL 2019 Cloud services in onze waterwereld - SchotmeijerDSD-NL 2019 Cloud services in onze waterwereld - Schotmeijer
DSD-NL 2019 Cloud services in onze waterwereld - Schotmeijer
 
Booosting 24sept13 bim dutch revit standards mark wieringa cepezed
Booosting 24sept13 bim dutch revit standards   mark wieringa cepezedBooosting 24sept13 bim dutch revit standards   mark wieringa cepezed
Booosting 24sept13 bim dutch revit standards mark wieringa cepezed
 
Presentatie Shift16 Organiseer IT voor de Cloud
Presentatie Shift16 Organiseer IT voor de CloudPresentatie Shift16 Organiseer IT voor de Cloud
Presentatie Shift16 Organiseer IT voor de Cloud
 
Versiebeheer van database changes
Versiebeheer van database changesVersiebeheer van database changes
Versiebeheer van database changes
 
Drupal 7 Architectuur
Drupal 7 ArchitectuurDrupal 7 Architectuur
Drupal 7 Architectuur
 
Meetup DB testing met SoapUI en Robot Framework.pdf
Meetup DB testing met SoapUI en Robot Framework.pdfMeetup DB testing met SoapUI en Robot Framework.pdf
Meetup DB testing met SoapUI en Robot Framework.pdf
 
Gegevensbanken En Gebruikers
Gegevensbanken En GebruikersGegevensbanken En Gebruikers
Gegevensbanken En Gebruikers
 
Dsl tools
Dsl toolsDsl tools
Dsl tools
 
TechDays 2015 - SharePoint van traditie naar verandering
TechDays 2015 - SharePoint van traditie naar veranderingTechDays 2015 - SharePoint van traditie naar verandering
TechDays 2015 - SharePoint van traditie naar verandering
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Nlrs family guide doors 161220
Nlrs family guide doors 161220Nlrs family guide doors 161220
Nlrs family guide doors 161220
 
Eduvision - Webinar drupal: gratis online cursus Drupal
Eduvision - Webinar drupal: gratis online cursus DrupalEduvision - Webinar drupal: gratis online cursus Drupal
Eduvision - Webinar drupal: gratis online cursus Drupal
 
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo BruggeHTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
 
SE & BIM: twee cruciale onderdelen van een succesvolle ketensamenwerking
SE & BIM: twee cruciale onderdelen van een succesvolle ketensamenwerkingSE & BIM: twee cruciale onderdelen van een succesvolle ketensamenwerking
SE & BIM: twee cruciale onderdelen van een succesvolle ketensamenwerking
 
Tiende Meetup: Microservices
Tiende Meetup: MicroservicesTiende Meetup: Microservices
Tiende Meetup: Microservices
 
Crowd Designing Microservices Architecture
Crowd Designing Microservices ArchitectureCrowd Designing Microservices Architecture
Crowd Designing Microservices Architecture
 
Modern web development
Modern web developmentModern web development
Modern web development
 
NL Front-end Guidelines (HTML,CSS,Javascript)
NL Front-end Guidelines (HTML,CSS,Javascript)NL Front-end Guidelines (HTML,CSS,Javascript)
NL Front-end Guidelines (HTML,CSS,Javascript)
 
Sdb Presentatie
Sdb PresentatieSdb Presentatie
Sdb Presentatie
 
SE & BIM 3. Een beter SE-proces met BIM? door Hans Hoeber en Gerwin Duine
SE & BIM 3. Een beter SE-proces met BIM? door Hans Hoeber en Gerwin DuineSE & BIM 3. Een beter SE-proces met BIM? door Hans Hoeber en Gerwin Duine
SE & BIM 3. Een beter SE-proces met BIM? door Hans Hoeber en Gerwin Duine
 

More from ABC-GROEP.BE

Kdg open erp DynApps
Kdg open erp DynAppsKdg open erp DynApps
Kdg open erp DynAppsABC-GROEP.BE
 
Sencha Touch - Introduction
Sencha Touch - IntroductionSencha Touch - Introduction
Sencha Touch - IntroductionABC-GROEP.BE
 
Customer Case Microsoft Partnership
Customer Case Microsoft PartnershipCustomer Case Microsoft Partnership
Customer Case Microsoft PartnershipABC-GROEP.BE
 
ITMoov 2012 - MarathonMan Stefaan Engels
ITMoov 2012 - MarathonMan Stefaan EngelsITMoov 2012 - MarathonMan Stefaan Engels
ITMoov 2012 - MarathonMan Stefaan EngelsABC-GROEP.BE
 
ITmoov 2012 - Enterprise Social Networking
ITmoov 2012 - Enterprise Social NetworkingITmoov 2012 - Enterprise Social Networking
ITmoov 2012 - Enterprise Social NetworkingABC-GROEP.BE
 
ITMoov 2012 - Data governance en data quality
ITMoov 2012 - Data governance en data qualityITMoov 2012 - Data governance en data quality
ITMoov 2012 - Data governance en data qualityABC-GROEP.BE
 
ITmoov 2012 - Het OpenERP business model
ITmoov 2012 - Het OpenERP business modelITmoov 2012 - Het OpenERP business model
ITmoov 2012 - Het OpenERP business modelABC-GROEP.BE
 
ITmoov 2012 - Introductie ABC-Groep
ITmoov 2012 - Introductie ABC-GroepITmoov 2012 - Introductie ABC-Groep
ITmoov 2012 - Introductie ABC-GroepABC-GROEP.BE
 
ITmoov 2012 - De Business Intelligence achter de pensioenhervorming
ITmoov 2012 - De Business Intelligence achter de pensioenhervormingITmoov 2012 - De Business Intelligence achter de pensioenhervorming
ITmoov 2012 - De Business Intelligence achter de pensioenhervormingABC-GROEP.BE
 
ITmoov 2012 - De Ondernemerstriathlon
ITmoov 2012 - De OndernemerstriathlonITmoov 2012 - De Ondernemerstriathlon
ITmoov 2012 - De OndernemerstriathlonABC-GROEP.BE
 
ITmoov 2012 - Rogerthat multiple choice messaging platform
ITmoov 2012 - Rogerthat multiple choice messaging platformITmoov 2012 - Rogerthat multiple choice messaging platform
ITmoov 2012 - Rogerthat multiple choice messaging platformABC-GROEP.BE
 
DynApps - Case IOK Afvalbeheer
DynApps - Case IOK AfvalbeheerDynApps - Case IOK Afvalbeheer
DynApps - Case IOK AfvalbeheerABC-GROEP.BE
 
Forum Event KA-TI: OpenERP at a glance
Forum Event KA-TI: OpenERP at a glanceForum Event KA-TI: OpenERP at a glance
Forum Event KA-TI: OpenERP at a glanceABC-GROEP.BE
 
Forum Event KA-TI: Open source ook voor bedrijfskritische applicaties
Forum Event KA-TI: Open source ook voor bedrijfskritische applicatiesForum Event KA-TI: Open source ook voor bedrijfskritische applicaties
Forum Event KA-TI: Open source ook voor bedrijfskritische applicatiesABC-GROEP.BE
 
ABC-Groep in Antwerpen Manager
ABC-Groep in Antwerpen ManagerABC-Groep in Antwerpen Manager
ABC-Groep in Antwerpen ManagerABC-GROEP.BE
 
Customer Case Oracle - VMM
Customer Case Oracle - VMMCustomer Case Oracle - VMM
Customer Case Oracle - VMMABC-GROEP.BE
 
Customer Case SharePoint - Qualiphar
Customer Case SharePoint - QualipharCustomer Case SharePoint - Qualiphar
Customer Case SharePoint - QualipharABC-GROEP.BE
 
Customer Case Oracle - Bibnet
Customer Case Oracle - BibnetCustomer Case Oracle - Bibnet
Customer Case Oracle - BibnetABC-GROEP.BE
 

More from ABC-GROEP.BE (20)

Kdg technisch
Kdg technischKdg technisch
Kdg technisch
 
Kdg open erp DynApps
Kdg open erp DynAppsKdg open erp DynApps
Kdg open erp DynApps
 
Sencha Touch - Introduction
Sencha Touch - IntroductionSencha Touch - Introduction
Sencha Touch - Introduction
 
Customer Case Microsoft Partnership
Customer Case Microsoft PartnershipCustomer Case Microsoft Partnership
Customer Case Microsoft Partnership
 
ITMoov 2012 - MarathonMan Stefaan Engels
ITMoov 2012 - MarathonMan Stefaan EngelsITMoov 2012 - MarathonMan Stefaan Engels
ITMoov 2012 - MarathonMan Stefaan Engels
 
ITmoov 2012 - Enterprise Social Networking
ITmoov 2012 - Enterprise Social NetworkingITmoov 2012 - Enterprise Social Networking
ITmoov 2012 - Enterprise Social Networking
 
ITMoov 2012 - Data governance en data quality
ITMoov 2012 - Data governance en data qualityITMoov 2012 - Data governance en data quality
ITMoov 2012 - Data governance en data quality
 
ITmoov 2012 - Het OpenERP business model
ITmoov 2012 - Het OpenERP business modelITmoov 2012 - Het OpenERP business model
ITmoov 2012 - Het OpenERP business model
 
ITmoov 2012 - Introductie ABC-Groep
ITmoov 2012 - Introductie ABC-GroepITmoov 2012 - Introductie ABC-Groep
ITmoov 2012 - Introductie ABC-Groep
 
ITmoov 2012 - De Business Intelligence achter de pensioenhervorming
ITmoov 2012 - De Business Intelligence achter de pensioenhervormingITmoov 2012 - De Business Intelligence achter de pensioenhervorming
ITmoov 2012 - De Business Intelligence achter de pensioenhervorming
 
ITmoov 2012 - De Ondernemerstriathlon
ITmoov 2012 - De OndernemerstriathlonITmoov 2012 - De Ondernemerstriathlon
ITmoov 2012 - De Ondernemerstriathlon
 
ITmoov 2012 - Rogerthat multiple choice messaging platform
ITmoov 2012 - Rogerthat multiple choice messaging platformITmoov 2012 - Rogerthat multiple choice messaging platform
ITmoov 2012 - Rogerthat multiple choice messaging platform
 
DynApps - Case IOK Afvalbeheer
DynApps - Case IOK AfvalbeheerDynApps - Case IOK Afvalbeheer
DynApps - Case IOK Afvalbeheer
 
Forum Event KA-TI: OpenERP at a glance
Forum Event KA-TI: OpenERP at a glanceForum Event KA-TI: OpenERP at a glance
Forum Event KA-TI: OpenERP at a glance
 
Forum Event KA-TI: Open source ook voor bedrijfskritische applicaties
Forum Event KA-TI: Open source ook voor bedrijfskritische applicatiesForum Event KA-TI: Open source ook voor bedrijfskritische applicaties
Forum Event KA-TI: Open source ook voor bedrijfskritische applicaties
 
ABC-Groep in Antwerpen Manager
ABC-Groep in Antwerpen ManagerABC-Groep in Antwerpen Manager
ABC-Groep in Antwerpen Manager
 
Customer Case Oracle - VMM
Customer Case Oracle - VMMCustomer Case Oracle - VMM
Customer Case Oracle - VMM
 
Customer Case SharePoint - Qualiphar
Customer Case SharePoint - QualipharCustomer Case SharePoint - Qualiphar
Customer Case SharePoint - Qualiphar
 
Customer Case Oracle - Bibnet
Customer Case Oracle - BibnetCustomer Case Oracle - Bibnet
Customer Case Oracle - Bibnet
 
IT Methodologies
IT MethodologiesIT Methodologies
IT Methodologies
 

Technische sessie: Intro to CQRS

  • 2. OVERZICHT • Wat is CQRS • Situering • Vervolg
  • 4. WAT IS CQRS • Command Query Responsibility Segregation • Idee: Een methode veranderd de status van een object of geeft een resultaat terug, maar niet beide. • Gevolg: je kan een ander model gebruiken voor ‘reads’ (queries) dan voor ‘writes’ (commands)
  • 5. TRADITIONEEL: CRUD • Alle acties (lezen en schrijven) gebeuren via hetzelfde model en volgen hetzelfde pad. • Hoofdzaak is het bewaren en opvragen van deze model objecten. • De vraag en noden worden meer complex. • Verschillende views op de data • Meerdere records samenvoegen in 1 weergave (virtuele records) • Validatie bij het bewaren • …
  • 6. TRADITIONEEL: CRUD Application DB UIModel Model leest uit database Service biedt informatie aan voor weergave Gebruiker doet wijzigingen Wijziging doorsturen naar model Model voert validatie en logica uit Model update database
  • 7. CQRS • Structuur met verschillende weergaven kan snel tot een complex model leiden • Reden: de verschillende weergaven worden vertaalt naar éénzelfde model dat als integratiepunt dient. • CQRS deelt dit op in verschillende modellen voor update en weergave
  • 8. Application DB UI Command Model Query model leest uit DB Query service biedt informatie aan voor weergave Gebruiker doet wijzigingen Applicatie stuurt gewijzigde info door naar het command model Command model voert validatie en logica uit Command model update database Query Model
  • 9. CQRS • De (in-memory) models kunnen dezelfde database gebruiken • Database is de communicatie tussen beide models • Ze kunnen ook verschillende databases gebruiken • Optimalisatie mogelijk per DB voor de specifieke taken (indexen, views, reporting …) • Nood aan een communicatiemechanisme tussen de models/databases
  • 10. OVERZICHT • Wat is CQRS • Situering
  • 11. SITUERING • CQRS is GEEN volledige architectuur. • CQRS is WEL een design pattern. • CQRS is toepasbaar op onderdelen van een project waar het nodig is. Niet op het volledige project. • Past zeer goed in het kader van DDD (Domain Driven Design) waarbij CQRS toegepast kan worden op specifieke sub-domeinen (Bounded Context)
  • 12. DOMAIN DRIVEN DESIGN • Typisch (ref. CRUD) worden Domain Model en Store model zeer gelijkaardig gehouden om mappings te vereenvoudigen. • Zeker met technologeën zoals EntityFramework • Gevolg: Model wordt complexer dan nodig. • Een zeer eenvoudige view kan door het model zeer complexe queries en logica veroorzaken • Bvb. Een order plaatsen op amazon is 1 klik op de knop, achterliggend een volledige flow • Bvb. data uit meerdere tabellen in 1 view tonen (joins)
  • 13. UBIQUITOUS LANGUAGE (UL) • Concept • “Alomtegenwoordige” taal • Verzameling gebruikte vaktermen • Gedeeld door alle betrokken partijen • Verwarring minimaliseren
  • 14. UBIQUITOUS LANGUAGE (UL) • Werkwoorden en zelfst. naamwoorden • Sleutel concepten binnen de business logica • Mappen naar technische implementaties • Queries, commands en saga’s
  • 15. BOUNDED CONTEXT (BC) • Afgebakend deel van het domein, business logica • Groeit naargelang de kennis van de UL groeit • Één term kan meerdere betekenissen hebben in verschillende BCs
  • 16. BOUNDED CONTEXT (BC) • Realiteit: Amazon.com • “Gebruiker” in de login BC • “Klant” in de payment BC • Context is dus belangrijk
  • 17. OVERZICHT • Wat is CQRS • Situering • Vervolg
  • 18. VERVOLG • Verschillende implementatie mogelijkheden • Basic • Deluxe • Eventsourcing • Verschillende stores (read en write) in sync houden • Maakt CQRS de zaken niet complexer?

Editor's Notes

  1. Idee: Een vraag stellen mag het antwoord niet wijzigen of het antwoord mag niet beïnvloed worden door de vraag. Typisch: Commands return void Queries declare a return type Before describing the details of CQRS we need to understand the two main driving forces behind it: collaboration and staleness. Collaboration refers to circumstances under which multiple actors will be using/modifying the same set of data – whether or not the intention of the actors is actually to collaborate with each other. There are often rules which indicate which user can perform which kind of modification and modifications that may have been acceptable in one case may not be acceptable in others. We’ll give some examples shortly. Actors can be human like normal users, or automated like software. Staleness refers to the fact that in a collaborative environment, once data has been shown to a user, that same data may have been changed by another actor – it is stale. Almost any system which makes use of a cache is serving stale data – often for performance reasons. What this means is that we cannot entirely trust our users decisions, as they could have been made based on out-of-date information.
  2. Idee: Een vraag stellen mag het antwoord niet wijzigen of het antwoord mag niet beïnvloed worden door de vraag. Typisch: Commands return void Queries declare a return type
  3. Idee: Een vraag stellen mag het antwoord niet wijzigen of het antwoord mag niet beïnvloed worden door de vraag. Typisch: Commands return void Queries declare a return type
  4. Opdelen van modellen tussen lezen en schrijven: Voor veel problemen (zeker in complex domeinen) is het dikwijls veel complexer om hetzelfde model te gebruiken voor commando’s en queries met als gevolg dat beiden niet 100% goed zijn. Nooit optimaal CQRS laat ook toe om meerde read-modellen te hebben. Zo kan je het model optimaliseren naar de view, cfr de virtuele in-memory records
  5. Als we weggaan van het CRUD principe, kunnen we eenvoudig naar een task-based UI gaan (tasks = commands) Het command model gaat goed samen met eventsourcing: zie vervolg sessie Verschillende models: hoe consistent houden? => gebruik van “Eventual consistency”
  6. Geen vervanging voor reporting database
  7. Voorbeeld UL = stijve 2,5 carré in de electriciteit = koperen geleider van 2,5mm doorsnede met een harde kern Ander voorbeeld = niet een “record deleten” maar “bestelling annuleren”
  8. Voorbeeld UL = stijve 2,5 carré in de electriciteit = koperen geleider van 2,5mm doorsnede met een harde kern Ander voorbeeld = niet een “record deleten” maar “bestelling annuleren” Link vermelden naar commands Saga’s => workflows, user stories, een serie van acties die geen user interventie vragen Vb. een order plaatsen start een bepaalde flow (saga) Stock aanpassen Leverdatum bepalen Leveringsdienst reserveren …
  9. BCs = login area, buy area Gebruiker verschillende interpretaties binnen een website (aanmelden, koper...) VB: MVC Areas (IntraNet) Area om producten te bestellen (gebruikers zijn klanten) Niet elke werknemer mag producten bestellen => sommige zijn dus geen klanten Area om vragen te stellen aan HR Gebruiker is werknemer De gegevens voor beide gebruikers zijn verschillend en hebben niet noodzakelijk een verband
  10. BCs = login area, buy area Gebruiker verschillende interpretaties binnen een website (aanmelden, koper...) VB: MVC Areas (IntraNet) Area om producten te bestellen (gebruikers zijn klanten) Niet elke werknemer mag producten bestellen => sommige zijn dus geen klanten Area om vragen te stellen aan HR Gebruiker is werknemer De gegevens voor beide gebruikers zijn verschillend en hebben niet noodzakelijk een verband
  11. Waar zou ik het willen gebruiken? Een zekere complexiteit Rekening houden met overhead Overkill voor kleine projecten We gaan een antwoord bieden op volgende vragen: Hoe implementeer ik het? Waarom zou ik CQRS gebruiken?