Vzor architektúry

Organizácia vzorov architektúry a interakcia medzi komponentmi

Viacvrstvová architektúra

Klasifikácia Existuje široká škála vzorov architektúry, ktoré sa rozumne používajú v závislosti od rozsahu a prostredia projektu: Model-View-Controller, Model-View-ViewModel Viacvrstvová a vrstvová architektúra, distribuované systémy, Domain Driven Design, Hexagonal Architecture Web Area, JavaEE, .Net, Client -Server orientovaný na služby (orientovaný na proces), peer-to-peer. Bohatý klient, aplikácia GUI Vnútorná štruktúra softvérových komponentov Reflexia, narušenie kontroly, vstrekovanie závislostí. Adaptívne (komponentné) systémy, oddelenie

Ovládač zobrazenia modelu Ovládanie prezentácie modelu

Problém/prostredie Rôzni používatelia alebo zobrazenia tých istých údajov Zobrazenie 1: Koláčový graf ASD: ASD: 95 95 CJA: CJA: 64 64 FBU: FBU: 109 109 JPQ: JPQ: 152 152 SGD: SGD: 204 204 Zobrazenie 2: Stĺpcový graf ASD 95 15% CJA 64 10% FBU 109 JPQ 152 18% SGD 33% 204 24% Zobrazenie 3: Spread Sheet

Problém/prostredie Na predstavenie modelu sa vygeneruje jedno alebo viac zobrazení. Každý pohľad musí zabezpečiť, aby správne odrážal aktuálny stav modelu. Riešenie: Pozorovateľ Každé zobrazenie sa zaregistruje u modelu ako pozorovateľ. Keď sa model zmení, upozorní to všetkých pozorovateľov. Toto dáva názorom príležitosť prispôsobiť sa. Problém: udalosti používateľa

Model-View-Controller Tri časti Výstup Používateľský vstup Model View Controller Zobraziť Controller Controller Model Model Dáta a ich spracovanie Prezentácia dát Vstup užívateľa Oddelenie rôznych častí aplikácie väčšia flexibilita

Zobraziť Zobrazuje údaje/informácie (prezentácia) Preposiela vstupy používateľa do radiča Pozná radič a model Je informovaný o zmenách údajov podľa modelu (pozorovateľ)

Ovládač Spravuje jedno alebo možno niekoľko zobrazení. Prijíma akcie používateľa (udalosti) z pohľadu a vyhodnocuje ich. Preposiela akcie modelu. Model môže byť informovaný o zmenách údajov (pozorovateľ), aby reagoval na zmeny stavu. Môže ovládať zobrazenie (zmeniť zobrazenie, prejsť na inú stránku)

Model Funkčná časť aplikácie. Zodpovedá za správu údajov a obchodnú logiku. Pozorovateľný Pozná registrovaných pozorovateľov (pohľady a kontrolóra). Upozorňuje všetkých pozorovateľov na zmeny údajov alebo stavu.

MVC s pozorovateľmi/pozorovateľmi

Spracovanie udalostí vo vzore MVC

Odkaz na iné vzory Pozorovateľ Ak sa v MVC zvyčajne používa Model View Presenter, View funguje iba s Presenter, toto je prepojenie medzi modelom a zobrazením riadi logické procesy medzi ostatnými dvoma. Modelové zobrazenie ViewModel MVP s príkazom a väzbou údajov

Otvorené body Rozdelenie logiky medzi ovládač a model? Vysporiadanie formátovania a internacionalizácia? Miesto na overenie vstupu používateľa? Riešia sa rôzne v rôznych implementáciách/rámcoch.

Zobrazenie modelu ViewModel Data Binding/Model View Presenter

Prostredie/účel Analogické pre model MVC Oddelenie reprezentácie a logiky Zjednodušenie rozhrania prostredníctvom dátovej väzby

Rozdelenie vlastností na samostatné časti Pohľad zapuzdruje štruktúru používateľského rozhrania (napr. HTML5). ViewModel zapuzdruje logiku prezentácie. Model zapuzdruje obchodnú logiku a jej údaje. Zobrazenie interaguje s voľnou väzbou ViewModel pomocou dátovej väzby a udalostí

Zobraziť Zobrazí údaje/informácie (prezentácia) Prijíma akcie používateľa. Nepozná ViewModel model. Nezodpovedá za spracovanie údajov používateľa. Definuje väzbu údajov a príkazov na ViewModel. V ideálnom prípade neobsahuje žiadnu obchodnú logiku.

Model Obsahuje údaje a obchodnú logiku. V prípade potreby pristupuje k backendu. Nezávislé od prezentácie (View) a kontroly (ViewModel). Zodpovedný za údaje a metódy manipulácie s údajmi (operácie CRUD).

ViewModel Poskytuje údaje z modelu a príkazy pre (jedno) zobrazenie. Implementuje akčnú logiku pohľadu. Pozná model, ale nie pohľad (iba prostredníctvom dátovej väzby). Prihláste sa na odber modelu ako pozorovateľ. Je informovaný o zmenách v modeli.

Príklad: Uhlový zdroj: https://angular.io/guide/architecture

Príklad: Uhlové (View and ViewModel) zobrazenie:

zoznam hrdinov

vyberte hrdinu zo zoznamu

Výhody Jednoduchšie zobrazenie (takmer žiadne GlueCode) Ľahko vymeniteľné Striktné oddelenie dizajnu a logiky Dobrá testovateľnosť Dáta viazané na zobrazenie sa automaticky aktualizujú Nevýhody Väčšia zložitosť Obojstranný pozorovateľ Veľké výpočtové úsilie

Aplikácia MVVM sa používa v XAML/WPF JavaFX HTML5 (HTML/JavaScript, napr. Angular, Knockout.).

Viacvrstvová a vrstvená architektúra

Prostredie Viacvrstvová architektúra je vzor architektúry, v ktorom je aplikácia rozdelená do niekoľkých nezávislých vrstiev (vrstiev), ktoré sú samostatnými behovými inštanciami. Vzor architektúry architektúry s vrstvami tiež rozdeľuje aplikáciu na niekoľko vrstiev, ktoré však zvyčajne nie sú všetky nezávislé a samostatné inštancie za behu. V obidvoch prípadoch hovor vždy prichádza z „vyššej“ do „nižšej“ vrstvy/vrstvy. Model je model vrstvy OSI (teória operačného systému).

Kategória/účel vrstvovej architektúry Architektúra vrstiev je často používaným princípom štruktúrovania. Architektúra vrstiev znižuje zložitosť závislostí v systéme Jasné rozdelenie úloh Nízka väzba Vrstvy zabraňujú cyklom v grafe závislostí Vrstvy sú dobre pochopené (kvôli svojej presne definovanej úlohe).

Kategória/účel viacvrstvovej architektúry Rozdelenie aplikácie na niekoľko jednotiek runtime s jasne definovanými úlohami umožňuje škálovanie aplikácie podľa potreby. Každá vrstva má svoju vlastnú jasnú úlohu: Jasné rozdelenie úloh Nízka väzba 3-vrstvová architektúra: Rozdelenie aplikácie na: Klient (napr. Klient JavaScript, beží v prehliadači používateľa) Server (obchodná logika, beží na serveri X alebo v cloude) Databáza (vytrvalosť, beží na serveri Y alebo v cloude) Viacvrstvová architektúra vyžaduje použitie vrstiev, ale nie naopak.

Príklad zdroja vrstvenej architektúry: referenčná architektúra softvéru FDJP

Príklad viacvrstvovej architektúry Zdroj: https://www.lucidchart.com/pages/uml/deployment-diagram

Výhody viacúrovňovej/vrstvovej architektúry Viacúrovňové architektúry sú ľahko škálovateľné a majú vysoký stupeň flexibility. Jednotlivé úrovne resp. Vrstvy sú ľahko zameniteľné. Ak dôjde k zmene rozhraní/rozhraní, budú k dispozícii iba dve susedné úrovne, resp. Ovplyvnené vrstvy. Viacúrovňové architektúry zapuzdrujú závislosti strojov, a preto sú ľahko prenosné. Viacvrstvové architektúry umožňujú miestnu distribúciu úrovní (vysoká dostupnosť, riadenie rizika katastrof)

Škálovateľnosť Škálovateľnosť je zvyčajne možná iba s drahým hardvérom Viacvrstvová architektúra je zvyčajne predpokladom škálovania. V cloude je škálovanie štandardom. Cloud sa môže škálovať dynamicky na základe zaťaženia. Viacvrstvová architektúra je preto dnes pre podniky štandardom aj vrstvená architektúra. Aplikácie.

Nevýhody Často je zložité štruktúrne usporiadať systémy vo vrstvách. Medzi vrstvami sú potrebné ďalšie triedy/rozhrania alebo dokonca vzdialené rozhrania. Dodatočná réžia v dôsledku rozdelenia do vrstiev (preposielanie správ) Problémy s výkonom (príliš) veľké množstvo vrstiev spôsobuje zbytočne zložitú štruktúru

Používanie viacvrstvových a vrstvených architektúr je výhodné, keď sa vyžaduje vysoká škálovateľnosť a flexibilita aplikácie. výmena jednotlivých vrstiev by mala byť ľahká. Rozhrania zostávajú stabilné (štandardné rozhrania). Komponenty a hardvérové ​​/ softvérové ​​platformy by mali byť vzájomne zameniteľné. Hardvérové ​​/ softvérové ​​platformy kupujete v cloude. malo by byť možné ďalej rozdeliť komponenty so zložitou funkčnosťou. systém by malo vytvoriť niekoľko tímov s jasnou zodpovednosťou.