PV179 – Úvod do vrstvy business logiky Martin Macák 25. 10. 2022 Fakulta informatiky, Masarykova univerzita, Brno V minulej časti ste videli... Architektúra webovej aplikácie Controller Model View napĺňa predáva dáta HTML UI Fasády ORM Prezentačná vrstva Vrstva "business" logiky Dátová vrstva CRUD operácie dotazy SQL vyberá Controller Web API F1 F2 Fn S1 S2 Sm Služby Repozitáre Query objekty Unit of Work HttpStatusCode + JSON / XML Model napĺňa Query zostavujú Databáza Commit Osnova prednášky 1. DTOs a mapovanie 2. Query Objects 3. Services 4. Façades 5. rekapitulačné videjko DTOs - motivácia DTOs ∙ Data Transfer Object. ∙ Trieda reprezentujúca dáta, ktoré sa prenášajú medzi dvoma vrstvami aplikácie. ∙ Pomáha vrstve nad Business Layer nebyť závislá na entitách. ∙ Typicky jeden DTO = jeden use case. Mapovanie Mapovanie ∙ Uľahčuje písanie kódu. ∙ DTO ←→ Entita. ∙ Typicky sa mapuje jedna entita na viacero DTOčiek. CRUD ∙ Create – prezentačná vrstva ponúkne DTO ∙ Retrieve – prezentačná vrstva dostane DTO ∙ Update – prezentačná vrstva ponúkne DTO ∙ Delete – DTO nepotrebujeme Query Object ∙ Návrhový vzor. ∙ Reprezentuje dotaz nad dátami v databáze. ∙ Vykoná dotaz pomocou ExecuteQuery, ktorá podľa zadaného filtru FilterDto získa dáta do QueryResultDto. ∙ FilterDto – napríklad paging, sorting, špecifické filtrovanie podľa vlastností entity, . . . ∙ QueryResultDto – DTO na QueryResult, obsahuje kolekciu DTO entít, ktoré dotaz vrátil, . . . Query Object – výhody ∙ Dotazy sú na jednom mieste. ∙ Sú transparentné. ∙ Odstránenie duplicitného kódu. ∙ Jednoduchšia úprava dotazov. Services ∙ V kontextu našeho predmetu je to trieda, ktorá obsahuje súvisiacu aplikačnú logiku. ∙ Často obsahuje operácie nad konkrétnou entitou (nie je to ale vždy ideálne riešenie). ∙ Dekompozícia logiky aplikácie do služieb by mala byť mimo iné na základe Single responsibility princípu. ∙ High Cohesion & Low Coupling Façades ∙ Poskytujú jednoduché rozhranie pre prezentačnú vrstvu. ∙ Typicky kombinujú funkcionalitu viacerých služieb. ∙ Počet fasád je zásadne menší než počet služieb. Zhrnutie architektúry (video) Rekapitulácia 1. DTOs a mapovanie 2. Query Objects 3. Services 4. Façades macak@mail.muni.cz