Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Sirdhemond 31. 01. 2020, 16:43:53
-
Ahoj,
snažím se pochopit vrstvy v n-vrstvé architektuře a mám s tím docela problém...
N-vrstvá architektura rozděluje aplikaci mezi několik vzájemně spolupracujících vrstev, které spolu komunikují přes definované rozhraní. A řekněme, že bych měl 4-vrstvou architekturu s: Prezentační vrstvou, business vrstvou, aplikační vrstvou a datovou vrstvou.
Prezentační - poskytuje statický obsah jako html/css/js/audio/obrázky atd. Přijímá vstupy od uživatele a renderuje výstupy. Většinou běží na nějakém webovém serveru s veřejnou IP.
Datová vrstva - obsahuje data v podobě RDBMS/souboru. Přijímá požadavky od business layer a stará se o uložení a poskytování dat.
Aplikační vrstva - ???
Business vrstva - ???
Chápu Prezentační a Datovou vrstvu správně?
Jaký je rozdíl mezi aplikační a business vrstvou? Ve 3-tier architektuře tohle celé je pod jedním "blokem". Domnívám se, že business vrstva obsahuje datový model aplikace (třídy programátorské, které definují naše objekty) - je to tak správně? A co přesně má za úkol aplikační vrstva?
-
Asi hledej tam, kde jsi prisel na to, ze se neco ma rozdelit na business a aplikacni vrstvu.
4-vrstva architektura u klasicke webove aplikace bude spis klientska//prezentacni/aplikacni/datova. V zcela jine abstrakci mas pak treba rozdeleni na klienta//cdn//api//sluzby. Zalezi co se stavi a z ceho, aby to splnilo ucely skalovatelnosti a cistoty reseni.
-
Nemělo to být spíše:
prezentační - business - integrační - datová ?
-
Muzete se zkusit inspirovat tady: http://trailblazer.to/
-
Bussines vrstva by mala definovat strukturu a sposob spracovania dat. Idealne v jazyku ktory je na hromadne spracovanie dat urceny, napr, plSQL.
Aplikacna vrstva by mala zabezpecit interface medzi bussines vrstvou a klientom.Napr, aplikacna vrstva pre php, koli websluzbam a alikacna vrstva v cecku pre desktop klienta, dalej napr pre python pre serverove scripty... Vyhoda je ta ze netreba siahat do uz otestovanej a spravne fungujucej bussines logiky.
Vpripade ze uzivatel nezvlada plsql tak je mozne pisat bussines logiku aj v jazyku v ktorom pise aplikacnu vrstvu, dost sa ale v tomto pripade stiera motivacia aby dosledne oddelil bussines logiku a aplikacnu logiku.
Cize ak by si to chel rozdelit na jednotlive vrstvy:
Datova - fyzicke ulozene data, ci uz subor alebo tabulky v rdbms
Bussines logika - sposob spracovania a ulozenia dat - zvedsa struktura databazy a procedury ktore data spracovavaju (vysvetlujte danovakovi ze float v php vam neulozi milardovu ciastu na korunu presne ;)
Aplikacna logika - interface pre bussines logiku, riadenie opraveni, validacia vstupnych poziadavok - zvedsa nazyvane modely
Prezentacna vrstva(web) - zabezpeci odovzdanie dat z formularov do aplikacnej vrstvy, formatovanie vystupu cez sablony tak aby bol vhodny pre zobrazenie browserom, formatovanie vynimiek do citatelnej podoby. - view + controller(presenter)
Prezentacna vrstva(api) - ziskanie vstupnych dat, poziadaviek zo soap alebo json (a kadecoho ineho), odovzdania do plikacnej vrstvy a formatovanie dat alebo vynimiek ktore vrati aplikacna vrstva do spravneho formatu (spravidla rovnakeho typu ako bola poziadavka). - view + controller(presenter)
Tolko teoreticky pohlad, prakticky zalezi od toho na akej urovni su ludia ktory vo firme ke sa dostates uz pachali tu aplikaciu pred tebou. V lepsom pripade vcelku realisticky pokrcia pleciami ze zavadzat idealy by bolo uz priis nakladne a v horsom pripade budu mylne presvedceni o svojej jedinecnosti a s idealmi nezapadnes... Firiem kde by boli jednotlive vrstvy oddelene dosledne najdes bohuzial minimum...