Introducing
Your new presentation assistant.
Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.
Trending searches
Azt modellezzük, amit eddig papíron, elavult szoftverrel végeztek
Ha a nyelv közös, mindenki számára könnyebben átláthatók a folyamatok.
Többnyire az ügyfél oldalon van
Aggregate root
Az a téma, amelyben dolgozunk, amelyben szoftvert írunk
ValueObject
Meg kell értenünk és elsajátítanunk az ügyfél
Az exceptionök
a korábbi serviceből
setterek eltűntek
Anemic domain model
Tranzakciós határ
Törlés és mentés egyszerre
Optimistic locking?
Sose tudhatjuk, mikor fut le egy query
Aggregate Root
fontos a sorszám is
csak az érték a fontos
Például repositorykra,
factorykra van szükség
Ne adjuk át az entitynek
a repositoryt!
Új objektumokat
nem itt hozunk létre!
pl.: JpaMatchRepository
Aggregaten belül eager loading - kezelhető legyen
Üzleti logika
Izolált a többi rétegtől
Controller
Facade
DTO
Koordinátor szerep
Services
Application Event (JMS, stb.)
Perzisztencia
E-mail küldés
HTTP és egyéb kommunikáció
Gyors unit test
A logika egy helyen, minden más máshol
Domain Event
Eric Evans
Entitykben getterek - elérhetők az aggregatek belső elemei
Konvertálás DTO-ra
Bonyolult lekérdezések
(Command-Query Separation)
Alkalmazzuk magasabb szinten
Event storage ugyanazt tárolja, amit az ORM kiszámol aggregate változásnál.
Felhasználói beavatkozás, üzleti folyamatként definiált
Domain Event
getter, setter
Megjelenítéshez adatlekérés
Utasítás, amit a felhasználó tenni kíván
Végeredmény: metódus hívás entityn a küldött paraméterekkel
Szerializált metódushívás
Pl.: ScoreBlue
Query Storage frissítése
Immutability!
Pl.: BlueTeamWon
http://blogs.msdn.com/b/cesardelatorre/archive/2012/02/22/cqrs-bus-and-windows-azure-technologies.aspx
Greg Young
Bármely időpillanatra a rendszer visszaállítható
Nem csak az utolsó állapotot tárolja (bankszámla)
Given: loadFromHistory()
When: command
Then: events
Teljesítmény: 10.000 tranzakció / sec.
public void loadFromHistory(List<Event> events);
Ha túl sok az event, akkor snapshoting
-> szerializálva tároljuk az aggregatet is
Event és Aggregate adatbázis tábla (össz. 2)
Eventek == Audit log
Interface nem változott!
Nincs ORM
Nincs Exception dobás!
Implementing Domain-Driven Design
Domain-Driven Design: Tackling Complexity in the Heart of Software
Effective Aggregate Design - http://dddcommunity.org/library/vernon_2011/
Domain-Driven Design Quickly - http://www.infoq.com/minibooks/domain-driven-design-quickly
http://dddsample.sourceforge.net/