MVC arhitektura je softverski patern Model-view-controller koji odvaja prikaz informacija od
interakcije korisnika sa tim informacijama. Model se sastoji od podataka aplikacije, poslovnih pravila, logike i funkcija. View može da bude bilo koji izlazni prikaz podataka, kao što je dijagram ili grafik. Više prikaza istog podatka je moguće, kao što je grafik sa barovima za menadžment i tabelarni prikaz za računovođe. Controller uzima ulazne podatke i konvertuje ih u komande za model ili view. Interakcije između komponenti MVC deli softverski sistem u tri dela: View - obezbeđuje korisniku interfejs pomoću koga korisnik unosi podatke i poziva odgovarajuće operacije koje treba da se izvrše nad model-om. View prikazuje korisniku stanje model-a. Controller - osluškuje i prihvata zahtev od klijenta za izvršenje operacije. Nakon toga poziva operaciju koja je definisana u model-u, i ukoliko model promeni stanje, obaveštava view o promeni stanja. Model - predstavlja stanje sistema koje mogu promeniti operacije model-a. Model ne mora da zna ko su view i controller. Korišćenje u web aplikacijama MVC je široko prihvaćen kao patern za aplikacije na svetskoj mreži, u svim značajnijim programskim jezicima. Nekoliko komercijalnih i nekomercijalnih framework-a koriste ovaj patern. Svaki od njih varira u interpretaciji po pitanju toga da su MVC odgovornosti podeljene između klijenta i servera. Oni raniji su podržavali da se ceo model, view i controller nalazi na serveru. U ovom pristupu, klijent je slao zahtev (na primer preko forme) a potom primao kompletnu novoformiranu web stranu. Kako je tehnologija napredovala, došlo se do toga da se MVC komponente delom izvršavaju na klijentu (Ajax). Istorijat Trygve Reenskaug je uveo MVC u Smalltalk-76 tokom posete Ziroksu sedamdesetih godina.[1] [2] Zatim, osamdesetih Jim Althoff i drugi su implementirali verziju MVC-a za Smalltalk-80 biblioteku klasa. Tek u članku iz 1988-e MVC je predstavljen kao koncept.[3] Ovaj prvi MVC koncept definiše controller kao modul koji radi sa ulaznim podacima (slično kao što view radi sa izlaznim podacima). U modernim aplikacijama od 2000-te godine, controller je modul ili deo koda koji služi za komunikaciju između model-a i view-a, koristeći ili direktan poziv ili observer. Drugi aspekti MVC-a su takođe evoluirali, ali kao varijante originalnog koncepta, i pošto delovi klasičnog MVC-a nemaju smisla kada se koriste kod debelih klijenata HMVC, MVA, MVP, MVVM i drugi su adaptirali MVC na drugačije načine.