180 likes | 270 Views
MVC architektura. User. Enter data / control application. See. View. Controller. Update. Manipulate. Model. MVC architektura. User. See. Enter data / control application. See. View. View. Controller. Update. Update. Manipulate. M d (domain model) + M a (application model).
E N D
MVC architektura User Enter data / control application See View Controller Update Manipulate Model
MVC architektura User See Enter data / control application See View View Controller Update Update Manipulate Md(domain model) + Ma (application model)
Vícevrstváarchitektura • Multi-layer nebo multi-tier ?
Vícevrstváarchitektura • Multi-layer nebo multi-tier ? • Multilayer • Logickáorganizacevrstev – nesouvisí s fyzickýmumístěnímna tom čionomstroji • Multi-tier • Fyzickáorganizacevrstev – souvisí s fyzickýmumístěnímnarůznýchpočítačích • Zobecněníarchitekturyklient-server • 3-tier: tlustýklient (desktop), doménoválogika (aplikační server), databáze (databázový server)
3 layer architecture • Presentation layer • Domain logic layer • Data source layer
n layer architecture • Presentation layer (v případětenkéhoklienta: controller + templates) • Service layer (službytvořící API k doménovélogice + agregace) • Data access layer • Domain logic layer (bussinessobjekty) • Persistence layer (obvyklerelační DB, transparentní)
Striktní/relaxovanávícevrstvováarchitektura • Striktní: vyššívrstvapřistupujepouze k bezprostředněnižšívrstvě • Příklad: ISO/OSI síťový model (7 vrstev) • Relaxovaná: vyššívrstvapřistupuje k nižšímvrstvám ======================================== • Nižšívrstva v žádnémpřípaděnepřistupuje k vyššímvrstvám (ani je nezná). Pokudano, jedná se o spaghetti-code.
Organizacedoménovélogiky • Transaction script • Business objektobsahujespíše data nežlogiku • Logikacentralizována do jedné/několikatříd • Transakčnímuskriptu se poskytnou business objektykezpracování • Přirozšiřovánífunkcionality se musítransakčnískriptmodifikovat
Organizacedoménovélogiky • Transaction script • Domain Model • Business objektyobsahují data ilogiku • Doménoválogikarozptýlenamezi business objekty • Přehlednější z hlediskaobjektovéhonávrhu • Přirozšiřovánífunkcionality se vytvoří (odvodí) novýtyp business objektu, kterýposkytujepříslušnoufunkcionalitu
Organizacedoménovélogiky • Transaction script • Domain Model • Table Module • Organizacedoménovélogikypoplatnástruktuředatabáze • Logikasoustředěna v singletonech per table • Výsledkemzpracovánínení business objekt, ale result set • Můžebýtvýhodné pro některéframeworkypracující s result sety ??? • Neodpovídápřílišzásadámobjektovéhonávrhu
Organizacedoménovélogiky • Transaction script • Domain Model (preference) • Table Module
Dependency injection Způsob, jakrealizovatIoC
Service Layer • Typickyjednoduché API naddoménovoulogikou • Organizovánodle business transakcíodpovídajícíchpřípadůmužití • Zahrnujezabezpečení • Extrémy: • Pouhá(tenká) fasáda, doménoválogikasoustředěna v nižšívrstvě • Sadatransakčníchskriptůobsahujícíchvětšinudoménovélogiky, nížšívrstvapouze data wrappery • Někdemezi je controller-entity architektura • Kontrolery (služby) jsoutransakčnískriptytvořící API
Service Layer • EJB • Service layer realizovánapomocí Session beans • Stateless • Statefull (pozordvěinjekce = 2 různé instance, každámásvůjstav) • Dependency Injection možnápouze pro Session beans (service layer), nikoliv pro Entity Beans (business objects), proto service layer je spíšetransakční script a business objects jsouspíšewrapperydatovýchobjektů
Objektově-relačnímapování • JPA 2.0, Hibernate • Separace SQL přístupu od doménovélogiky • Organizacevzhledemkestruktuředatabáze • Row Data Gateway – instance per řádektabulky • Table Data Gateway – instance per tabulka – mámetodyzapouzdřující SQL dotazy, vracíResultSet (někdykolekceuloženýchprocedur) • Oddělenídoménovélogiky od obsluhy persistence • Active Record – objektobsahuje (dědí) metody pro select/insert/update/delete plus metodyobsahujícídoménovoulogiku • Data Mapper – odděluje business objekty (jejichmetody = výhradnědoménoválogika) od manipulace s databází (tuposkytuje Data Mapper)
Objektově-relačnímapování • Preference • Row Data Gateway • Data Mapper