Pre nego što počnem o ovome, mislim da treba da razgraničimo šta su nivoi a šta slojevi.
Sloj (En. Layer)
Nivo (En. Tier)
Koja je razlika između ova dva? Iako na prvi pogled deluju kao sinonimi, razlika je ogromna. Kada se govori o slojevima, prvo se misli na logičkom nivou, dok se kod nivoa misli na fizičkom. Šta to znači u programiranju? S obzirom da ću se koncentrisati na .NET framework, koristiću termine koji su tamo standardni, ali verujem da će se i poklonici ostalih jezika snaći. Ako kažemo da imamo dve klase koje pripadaju različitim slojevima, to znači da su one u istom projektu, ali u okviru različitih namespace-ova. Dok ako kažemo da dve klase pripadaju različitim nivoima, to znači da pripadaju različitim projektima, pa čak i da su na različitim računarima nakon instalacije.
Uzori arhitekture izražavaju fundamentalnu strukturnu organizaciju ili šemu sistema. Oni pružaju set predefinisanih podsistema, opisuju njihove odgovornosti i uključuju pravila i smernice za organizaciju odnosa između datih podsistema. Ono što je bitno kod arhitekturnih uzora, to je da oni nisu previše konkretni. Oni predstavljaju jednu ogromnu apstrakciju sistema, koja se može tumačiti i implementirati na više načina.
Postoji više uzora arhitekture. MVC je samo jedan od njih. IBM je skupio neke ahtitekturne uzore koji se odnose na e-poslovanje. Možete ih pogledati ovde: http://www-128.ibm.com/developerworks/patterns/
Ako želite da saznate više o arhitekturnim uzorima pogledajte http://wi.wu-wien.ac.at/home/uzdun/publications/ArchPatterns.pdf i http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science) , a ja ću se zadržati MVC uzoru
MVC (Model – View – Controller) uzor je arhitekturni uzor koji organizuje aplikaciju u tri odvojena sloja: jedan za aplikacioni model sa prikazom podataka i biznis logikom, drugi za prezentaciju podatala korisniku i unos podataka i treći za kontroler koji prosleđuje zahteve i izvršava tok. Imajte na umu da arhitekturni uzori uzimaju olako termine kao što su sloj i nivo, jer im je svejedno da li će se MVC na primer implementirati u okviru jednog projekta ili više.
Postoji više implementacija MVC uzora, ali dva najčešća imaju oblike kao na slikama
Pune linije predstavljaju direktne asocijacije, dok su isprekidane indirektne. Isprekidane linije se mogu implementirati preko događaja, ali je najpoželjnije da se implementira preko observer uzora, o kome ću malo kasnije kada budem pisao o GoF uzorima.
Šta radi Kontroler:
Upravlja tokom programa
Odlučuje koji view da prikaže
Odlučuje koji model da menja
Upravlja izuzecima
Šta radi View:
Renderuje UI (HTML, GUI…)
Omogućava prikaz korisnicima
Prihvata i proverava da li su podaci validni
Šta radi model:
Sadrži poslovnu logiku
Ima pristup nižim servisima
Sadrži perzistentne objekte (iako je model sam po sebi tranzijentan)
Najbolji program za surfovanje po internetu