• MVC (Model View Controller) arhitektura je prvobitno
formulisana krajem sedamdesetih godina prošlog vijeka od strane Norveškog informatičara Trygve Reenskauga kao dio Smalltalk programskog jezika. • Danas se MVC koristi u velikom broju modernih veb i GUI framework-a kao što su CodeIgniter, Ruby on Rails, Apple Cocoa, Apache Struts… Istorijat i osnove • Dve centralne ideje se nalaze u osnovi ove arhitekture, a to su ponovno korišćenje već postojećeg koda i jasna raspodjela zaduženja među različitim djelovima sistema. ▫ Prva ideja omogućava da se jednom napisani kod uz minimalne ili čak nikakve izmjene može koristiti u više razlilitih projekata. ▫ Druga ideja je podjela sistema na više međusobno nezavisnih cjelina od kojih svaka ima svoj zadatak i koje se pojedinačno mogu modifikovati bez rizika da će se te promjene odraziti na ostatak sistema. Struktura • MVC dijeli aplikacije na tri različite komponente i definiše njihove međusobne interakcije: Struktura • Model je zadužen za procesiranje događaja koje mu controller prosledi i vraćanje obrađenih podataka controller-u. • Kod CodeIgniter aplikacija modeli obično sadrže funkcije za rad sa bazama. • View korisniku prezentuje podatke primljene od controller-a i prima korisničke zahteve i prosleđuje ih controller-u. Struktura • Kod CodeIgniter aplikacija view su najčešće veb strane, mada mogu biti i samo fragmenti veb strana poput header-a ili footer-a. • Controller služi kao posrednik između view-a i modela. Preuzima korisničke zahteve od view-a, manipuliše njima i prosleđuje ih modelu i na osnovu podataka dobijenih od njega modifikuje view. Struktura • CodeIgniter ima poprilično slobodan pristup MVC arhitekturi pošto je moguće izbaciti modele. • Ukoliko želite možete ih u potpunosti ignorisati i kreirati aplikaciju koristeći samo komponente controller i view. Prednosti • Glavne prednosti MVC arhitekture su ponovno korišćenje koda i podela sistema na međusobno nezavisne cjeline, a odatle proizilaze i ostale prednosti. ▫ Projekti su mnogo sistematičniji, njihovi pojedinačni delovi se mogu lako mijenjati i poboljšavati, kod pisan na ovaj način je neuporedivo lakše testirati, paralelni razvoj aplikacije se može lako organizovati i samim tim se povećava produktivnost. Mane • Previše je kompleksan za implementaciju kod razvoja manjih aplikacija i njegovo korišćenje u tim slučajevima dovodi do pogoršanja kako dizajna tako i performansi. • Ponekad se može desiti da usled čestih promjena modela view bude preplavljen zahtevima za izmjenu. • Ukoliko on služi za prikazivanje sadržaja kojem je potrebno određeno vreme za renderovanje, česti zahtevi za izmjenu mogu dovesti do kašnjenja.