Tuesday, April 8, 2008

Arhitektura na tri nivoa

Tronivovska arhitektura je poznatija kao "3-tier architecture" (od n-tier) koju je Microsoft prisvojio za web aplikacije koje barataju podacima ciji je izvor i odrediste baza podataka (dakle klijent-server arhitektura), a inace je ideja ziva vec poodavno. Medjutim, Microsot je prvi omogucio da u svom IDE alatu (Visual Studio) vizuleno povezete nivoe koji su do tada bili samo teoretski povezani, a programer je morao da zna sta i odakle poziva.

N-Tier arhitektura ima daleko vise nivoa, ali je arhitektura obicne desktop i web aplikacije svedena na osnovna tri - podaci (data access), logika (bussines logic) i prezentacija (presentation). Koncept se zasniva na tome da svaki nivo radi svoj posao, da je svaki nivo "ucauren" (ko zna sta on radi, prim aut.) i da svaki od njih moze biti koriscen sa vise strana (npr. istu logiku i pristup podacima mogu da koriste web i windows aplikacija) sto omogucava modularnost. Takodje, pri izvrsavanju programa nivoi se ne mogu preskakati (sem u izuzetnim slucajevima) vec proces ide korak po korak (jel to neko pomenuo Windows Workflow Foundation?)

Podaci - U ovom nivou se samo odredjuje pristup podacima i definisu CRUD operacije (CReate, Update i Delete), bilo one store procedure ili zivi upiti. Konekcija na bazu se takodje vrsi iz ovog nivoa. Dakle, bilo sta sto se radi sa bazom podataka se nalazi u ovom sloju.

Poslovna logika - Ovaj sloj definise sta se radi sa podacima koji dolaze/odlaze iz aplikacije/baze podataka. Ispituju se pravila upisa, konvertuju se podaci i jednog tipa u drugi i tome sl. Ovde bi trebala da se nalazi sva pamet aplikacije.

Prezentacija - Ovo je zapravo samo korisnicki interfejs. Znaci prozori i web stranice. Mnogi neiskusni programeri sve strpaju u ovaj nivo tako da se dobijaju "spageti" u kodu i gomila metoda kojima jednostavno tu nije mesto, vec u poslovnom sloju aplikacije.


Kako bi ovo bilo jasnije, postavicu najjednostavniji primer u formi za kreiranje novog korisnika.

- Prezentacija (ono sto korisnik vidi) sadrzi web/winform kontrole, textbox-ove za unos podataka, labele za opise i dugmad (ili samo dugme). Pored ovoga moraju postojati i EventHandler-i, najmanje jedan, za kontrolu dugmeta "Unesi korisnika". Pritiskom na ovo dugme , poziva se metoda iz biznis sloja kojoj se prosledjuju podaci (ime korisnika, lozinka i e-mail adresa) koji su ucitani iz kontrola.
- Poslovna logika je tu da proveri validnost unetih podataka (format e-mail adrese, proveru domena, provera politike za format lozinke i za naziv korisnika) i da doda jos informacija (datum kada je korisnik kreiran, IP adresa, naziv i verzija browser-a i sl.) i neke default vrednosti (broj logovanja, datum poslednjeg logovanja i sl). U ovom sloju se kreira entitet (tj. objekat iz sloja baze podataka) Korisnik koji predstavlja jedan zapis u tabeli Korisnici. Kada se kreira entitet sa svim ispravnim podacima poziva se jedna od CRUD metoda iz najnizeg sloja kome se prosledjuje ceo entitet popunjen podacima.
- Podaci ili sloj baze podataka prihvata objekat (entitet) sa svojim podacima i izvrsava jednu od operacija koja je pozvana - kreiranje, brisanje ili izmena zapisa. Opcionalno moze vracati rezultate izvrsenja opereracije.


Vise o n-tier arhitekturi mozete pronaci na linkovima:
http://en.wikipedia.org/wiki/Three-tier_(computing)
http://www.microsoft.com/belux/nl/msdn/community/columns/hyatt/ntier1.mspx
3-tier Architecture with ASP.NET 2.0

No comments: