Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

342 views

Published on

CQRS (Command Query Responsibility Segregation) predstavlja inovativni način razvoja softvera koji unapređuje klasičnu, višeslojnu arhitekturu. On otvara vrata za složenu nadgradnju i brži razvoj, pogotovo na "cloud"-u, pa je bio logičan izbor za Smartwave. CQRS objedinjuje više dokazanih šablona i praktičnih rešenja za isporuku agilnih i skalabilnih rešenja koja unapređuju iskustva krjanjeg korisnika a kompleksnost čine upravljivom.

Published in: Software
  • Be the first to comment

Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

  1. 1. #tarabica16
  2. 2. #tarabica16
  3. 3. #tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.NET-om Skorić Milan<milan@smartwave.rs>
  4. 4. #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“.
  5. 5. #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
  6. 6. #tarabica16 Agenda • O tehnologijama • Moderna arhitektura poslovnih aplikacija • Šta je to CQRS šablon? • Primer implementacije CQRS-a u Microsoft .Net • Slobodno pitajte
  7. 7. #tarabica16 Agenda • Molim vas da popunite anketu pre izlaska. • Red drugi, zaokružite broj sale (005) i ocenu, hvala!
  8. 8. #tarabica16 Digitalizacija
  9. 9. #tarabica16 Metapodaci
  10. 10. #tarabica16
  11. 11. #tarabica16 Ciljevi za Smartwave • Dostupan • Brz odziv • Laka integracija • Agilnost • Jedostavno za postavljanje • Telemetrija • Ako je moguće i jeftino
  12. 12. #tarabica16 Fokus ASP.NET MVC XAMARIN SignalR, EF Code Frist ASP.NET Web API Visual Studio & .NET
  13. 13. #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/
  14. 14. #tarabica16 A arhitektura Kreirana za laku zamenu umesto česte ponovne upotrebe
  15. 15. #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
  16. 16. #tarabica16 #Onokad baza nije centar Core Domain API Infrastructure
  17. 17. #tarabica16 Domenski model - DDD Segments Party Process Roles
  18. 18. #tarabica16 DDD iz prakse sa EF
  19. 19. #tarabica16 Izbegavajte javne konstruktore bez parametara
  20. 20. #tarabica16 Koristite privatne članove a ponašanje držite uz objekte http://thedatafarm.com/data-access/entity-framework-private- constructors-and-private-setters/
  21. 21. #tarabica16 Microservice UI HTML, WPF … APIJSON, XML … SVC Model Aggregates, Entities, Value Objects, Events • Svaki „mikro“ deo sadrži sve što je neophodno da bude potpuno samostalan
  22. 22. #tarabica16 CQ(R)S iz perspektive koda • CQRS ( najprostiji)• CQS
  23. 23. #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 C Q ES SqL Docu ment Graph
  24. 24. #tarabica16 Standardna implementacija Application Layer State DB Event store Read stack Domain Layer In Memory Handlers Command Event Data Handlers Model Services B U S
  25. 25. #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 Event Handler Query Handler HTTP Req./Res. HTTP Req. Worker Role Web Role Unit of Work
  26. 26. #tarabica16 Demo
  27. 27. #tarabica16 WebAPI
  28. 28. #tarabica16 Komanda
  29. 29. #tarabica16 Obrada komande
  30. 30. #tarabica16 Provera ispravnosti
  31. 31. #tarabica16 Command Bus
  32. 32. #tarabica16 Upit
  33. 33. #tarabica16 Read-Only EF Context
  34. 34. #tarabica16 Domenski događaji
  35. 35. #tarabica16 Događaji iz domenskih objekata
  36. 36. #tarabica16 Obrada događaja
  37. 37. #tarabica16 Demo
  38. 38. #tarabica16 Kružna arhitektura Task based UI Read Model Domain Model Commands: Create Comment Queries: Find all comments Event: Comment Created
  39. 39. #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
  40. 40. #tarabica16 Resursi • https://msdn.microsoft.com/en-us/library/jj554200.aspx By Patterns & Practices • http://www.codemag.com/article/1411071 By Leonardo Esposito • http://martinfowler.com/bliki/CQRS.html By Martin Fowler • http://codebetter.com/gregyoung/2012/09/09/cqrs-is- not-an-architecture-2/ By Greg Young – http://www.udidahan.com By Udi Dahan
  41. 41. #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
  42. 42. #tarabica16
  43. 43. #tarabica16

×