Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om
-
Upload
milan-skoric -
Category
Software
-
view
235 -
download
2
Transcript of Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om
![Page 1: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/1.jpg)
#tarabica16
![Page 2: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/2.jpg)
#tarabica16
![Page 3: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/3.jpg)
#tarabica16
Arhitektura i implementacija CQRS
šablona sa Microsoft.NET-om
Skorić Milan<[email protected]>
![Page 4: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/4.jpg)
#tarabica16
Cilj prezentacije
• CQRS - “Command Query
Responsibility Segregation”
nije samo za velika i kompleksna
„enterprise“ rešenja već je
upotrebljiv i prikladan u svakom
rešenju, pogotovo za „cloud“.
![Page 5: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/5.jpg)
#tarabica16
O meni
• Prvi profesionalni kod
napisan uz pomoć „beta“
verzije .Net Framework-a
početkom 2001. godine
• Pionir mobilnih i
elektronskih servisa za
bankarstvo u regionu
• Jedan od osnivača
![Page 6: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/6.jpg)
#tarabica16
Agenda
• O tehnologijama
• Moderna arhitektura poslovnih aplikacija
• Šta je to CQRS šablon?
• Primer implementacije CQRS-a u Microsoft .Net
• Slobodno pitajte
![Page 7: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/7.jpg)
#tarabica16
Agenda
• Molim vas da popunite anketu pre izlaska.
• Red drugi, zaokružite broj sale (005) i ocenu, hvala!
![Page 8: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/8.jpg)
#tarabica16
Digitalizacija
![Page 9: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/9.jpg)
#tarabica16
Metapodaci
![Page 10: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/10.jpg)
#tarabica16
![Page 11: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/11.jpg)
#tarabica16
Ciljevi za Smartwave
• Dostupan
• Brz odziv
• Laka integracija
• Agilnost
• Jedostavno za postavljanje
• Telemetrija
• Ako je moguće i jeftino
![Page 12: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/12.jpg)
#tarabica16
Fokus
ASP.NET MVC XAMARIN
SignalR, EF Code Frist
ASP.NET Web API
Visual Studio & .NET
![Page 13: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/13.jpg)
#tarabica16
U oblacima sa BizSpark-om
• Jednostavno se postavlja uz Visual Studio
• Nema „gvožđa“ za održavanje
• Skalabilnost dostupna na klik
• Multi-tenant
https://azure.microsoft.com/en-
us/documentation/articles/sql-database-elastic-
tools-multi-tenant-row-level-security/
![Page 14: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/14.jpg)
#tarabica16
A arhitektura
Kreirana za laku zamenu umesto česte ponovne
upotrebe
![Page 15: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/15.jpg)
#tarabica16
Tradicija
PREDNOSTI
• Jednostavno se pravi
• Puna podrška
menadžmenta
• Već utabane staze
MANE
• Limitirana skalabilnost
• Teško se održava a često i
sporo
• Prekomerna konverzija
poruka koji se šetaju među
slojevima
![Page 16: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/16.jpg)
#tarabica16
#Onokad baza nije centarCore
Domain
API
Infrastructure
![Page 17: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/17.jpg)
#tarabica16
Domenski model - DDD
Segments
Party Process
Roles
![Page 18: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/18.jpg)
#tarabica16
DDD iz prakse sa EF
![Page 19: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/19.jpg)
#tarabica16
Izbegavajte javne konstruktore bez
parametara
![Page 20: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/20.jpg)
#tarabica16
Koristite privatne članove a
ponašanje držite uz objekte
http://thedatafarm.com/data-access/entity-framework-private-constructors-and-private-setters/
![Page 21: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/21.jpg)
#tarabica16
Microservice
UI HTML, WPF …
APIJSON, XML …
SVC
ModelAggregates,
Entities, Value Objects, Events
• Svaki „mikro“ deo
sadrži sve što je
neophodno da bude
potpuno samostalan
![Page 22: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/22.jpg)
#tarabica16
CQ(R)S iz perspektive koda
• CQRS ( najprostiji)• CQS
![Page 23: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/23.jpg)
#tarabica16
Tipovi implementacija
• Regularna implementacija – vraća novac
– Transakcija po akciji
– Upiti vraćaju DTO
• Standardna implementacija
– Domenski model je fokusiran na ponašanje
koje menja stanje
– Tabela po upitu
• “Event Sourcing”
– Čuvaju se samo događaji na osnovi kojih se
gradi stanje domena
– Automatski rešen istorijat i audit podataka
CQ
ES
SqLDocument
Graph
![Page 24: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/24.jpg)
#tarabica16
Standardna implementacija
ApplicationLayer
State DB
Event store
Read stack
Domain Layer
In MemoryHandlers
Command Event Data
Handlers
Model Services
BUS
![Page 25: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/25.jpg)
#tarabica16
Azure implementacija
SPA
Web API
Query Command
Repository
Read Model
Azure – BUS sub-system
Queue
Blob Storage
Azure Table Storage as
Event Store
Command handler
Domain Events
EventHandler
Query Handler
HTTPReq./Res.
HTTPReq.
Worker RoleWeb Role
Unit ofWork
![Page 26: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/26.jpg)
#tarabica16
Demo
![Page 27: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/27.jpg)
#tarabica16
WebAPI
![Page 28: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/28.jpg)
#tarabica16
Komanda
![Page 29: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/29.jpg)
#tarabica16
Obrada komande
![Page 30: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/30.jpg)
#tarabica16
Provera ispravnosti
![Page 31: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/31.jpg)
#tarabica16
Command Bus
![Page 32: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/32.jpg)
#tarabica16
Upit
![Page 33: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/33.jpg)
#tarabica16
Read-Only EF Context
![Page 34: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/34.jpg)
#tarabica16
Domenski događaji
![Page 35: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/35.jpg)
#tarabica16
Događaji iz domenskih objekata
![Page 36: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/36.jpg)
#tarabica16
Obrada događaja
![Page 37: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/37.jpg)
#tarabica16
Demo
![Page 38: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/38.jpg)
#tarabica16
Kružna arhitektura
Task based UI
Read ModelDomain Model
Commands: Create Comment
Queries: Find all comments
Event: Comment Created
![Page 39: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/39.jpg)
#tarabica16
Prednosti i mane
PREDNOSTI
• Komande su glagoli i
podržavaju uvek samo
jedan scenario
• Query Store – može da
bude NoSQL
• Proširivost
• Performantnost
• Lako se testira
• Lako se integriše
MANE
• Teško je održavati
sinhronizaciju između više
skladišta podataka
• Puno novih koncepata
• Puno novih odluka koje
treba doneti
• Limitirana praksa
![Page 40: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/40.jpg)
#tarabica16
Resursi
• https://msdn.microsoft.com/en-us/library/jj554200.aspxBy Patterns & Practices
• http://www.codemag.com/article/1411071By Leonardo Esposito
• http://martinfowler.com/bliki/CQRS.htmlBy Martin Fowler
• http://codebetter.com/gregyoung/2012/09/09/cqrs-is-not-an-architecture-2/By Greg Young
– http://www.udidahan.comBy Udi Dahan
![Page 41: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/41.jpg)
#tarabica16
Pitanja i odgovori
• Slobodno se prijavite, Smartwave trenutno nudi
besplatno „beta“ verziju za testiranje i evaluaciju
http://smartwavebeta.cloudapp.net/
• Kod sa predavanja biće dostupan na:
https://github.com/milanskoric
![Page 42: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/42.jpg)
#tarabica16
![Page 43: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om](https://reader031.fdocuments.us/reader031/viewer/2022022412/58f1b64e1a28ab2b188b45a9/html5/thumbnails/43.jpg)
#tarabica16