Professional Documents
Culture Documents
03 Arhitektura Web Aplikacija PDF
03 Arhitektura Web Aplikacija PDF
INFORMACIONI SISTEMI
Arhitektura web aplikacija
dr Miloš Dobrojević
dr Miloš Dobrojević
Sadržaj
• Web aplikacije • MVC arhitektura
– Šta je to web aplikacija? – Šta je to MVC?
– Poslovna primena – Model, View, Controller
– Prednosti i nedostaci
• OOP
– Platforma
– Šta je to OOP?
– Frontend, Bakend
– Pravila formiranja klasa
– Kako rade web aplikacije?
– Metode
• Arhitektura • Literatura
– Slojevi
– Troslojne aplikacija • Korisni linkovi
– Višeslojne aplikacije
Web aplikacije
• Šta je to web aplikacija?
– Web aplikacije predstavljaju grupu aplikacija koje su nastale
popularizacijom Interneta.
– Web aplikacija je softver čiji se kod nalazi na web serveru.
– Korisnik pristupa aplikaciji
• Poslovna primena
– Upravljanje projektima
– Lanac nabavke
– HR, CRM, ERP, ...
Web aplikacije
• Prednosti
– Cross-platform. Kompatibilnost jedne aplikacije sa različitim
OS / platformama (Windows, Linux, Mac itd).
– Ažuriranje i održavanje na serveru, bez potrebe da se
distribuira i/ili instalira na računarima krajnjih korisnika. To je
velika prednost u organizacijama i sistemima sa velikim brojem
korisnika.
– Podaci se takođe nalaze na serveru.
– Po kvalitetu su ravnopravne desktop aplikacijama.
– HTML5 omogućava kreiranje bogatog interaktivnog okruženja u
okviru web pretraživača (video, audio, vizuelni efekti).
– Ne zauzimaju mesto na računaru korisnika.
– SaaS
Web aplikacije
• Prednosti
– Neuporedivo niža cena u odnosu na desktop aplikacije.
– Otežava softversko piratstvo i/ili reverse engineering.
– Laka integracija sa drugim web servisima.
Web aplikacije
• Nedostaci
– Aplikacija je neupotrebljiva u slučaju prekida Internet veze.
– Cross-browser kompatibilnost , JavaScript, CSS.
– Rad aplikacije u potpunosti zavisi od servera i kompanije koja je
vlasnik aplikacije (ASP = application service provider).
– U slučaju bankrota kompanije ili prestanka funkcionisanja
određene usluge, krajnji korisnik nema skoro nikakva prava.
– ASP može da prati sve što korisnici rade. Problem privatnosti i
zaštite poslovnih podataka.
– Ukoliko se objavi nova verzija aplikacije, korisnicima se često
ne ostavlja mogućnost izbora između nove i stare verzije.
Web aplikacije
• Nedostaci
– Sve manje otvorenog koda.
• Zatvoreni kod
• Zatvoreni hardver
• Licence.
– Sve više SaaS.
Web aplikacije
• Platforma
– OS Windows, Linux, ...
– Web server Apache, lighttpd, nginx
– Domen, hosting
– PHP
– Baza podataka MySQL, MsSQL, PostgreSQL...
– HTML HTML4, HTML5
– CSS CSS3
– JavaScript
Web aplikacije
• Iz čega se sastoje web aplikacije?
– Front-end
• HTML, CSS, JavaScript
– Back-end
• PHP, DB / SQL
Web aplikacije
• Kako rade web aplikacije?
– Korisnik šalje zahtev
• Korisnik u web pretraživač unosi adresu ili popunjava obrazac
• Kompjuter korisnika šalje HTTP ili HTTPS zahtev putem mreže
(preko interneta) do web servera na kome se nalaze HTTP server,
skripting jezik i web aplikacija.
– Web aplikacija analizira upućeni zahtev i po potrebi:
• Povlači i/ili obrađuje podatke
• Komunicira sa drugim web serverima ili web servisima
• Priprema redirekciju na drugi web server (primer: CDN)
– Rezultat rada web aplikacije može biti web stranica, CSS, XML, slika,
video, flash itd. koje web server šalje preko interneta do kompjutera
korisnika.
Arhitektura
• Slojevi
– Logički slojevi (Layers)
– Fizički nivoi (Tiers)
Arhitektura
• Logički slojevi (Layers)
– Način na koji se organizuje programski kod
• Zašto?
– Radi bolje preglednosti koda
– Skalabilnost
– Lakše održavanje
– Brži razvoj
– Smanjenje troškova razvoja i održavanja.
Arhitektura
• Primer
– Korisnički interfejs
– Funkcionalna logika
• Load balancing (softverski)
• Bezbednost
• Autorizacija
• Templejti
• ...
– Skladištenje podataka
– Pristup podacima
– ...
Arhitektura
• Fizički nivoi (Tiers)
– Mesta na kojima se slojevi nalaze i gde se izvršavaju.
• Zašto?
– Prvenstveno da bi se ostvarila ravnoteža između
• Performansi
• Skalabilnosti
• Tolerancije na greške
• Bezbednosti.
Arhitektura
• Primer
– Prezentacioni sloj
– Web server
– CDN
– email server
– DB server
– ...
Arhitektura
• Troslojne aplikacije
Arhitektura
• Višeslojne aplikacije
Arhitektura
• Prednosti
– Omogućava razvoj fleksibilnih aplikacija, čiji se delovi zajedno ili
nezavisno mogu iznova koristiti u različitim projektima.
– Izmene u jednom sloju su izolovane u odnosu na ostale slojeve.
– Protok informacija između slojeva je deo arhitekture i zasnovan
je na jednom ili više protokola (sockets, web servisi...).
• Mane
– Sa porastom broja slojeva, i što je aplikacija složenija, sve je
teže pratiti protok podataka kroz slojeve.
Arhitektura
• Izbor arhitekture
– Na osnovu trenutnih, ali i budućih potreba sistema.
– Za statičke web sajtove i jednostavne web aplikacije sa malim
brojem korisnika, dovoljna je dvoslojna arhitektura.
– Za web aplikacije sa većim brojem korisnika, SaaS ili poslovne
aplikacije, neophodni minimum je troslojna arhitektura.
– Kriterijumi za izbor
• Projektovani broj korisnika
• Primenjena platforma i softverski alati
• Tip i veličina baze podatak
• Broj i veličina dokumenata
• ...
MVC arhitektura
• Podsetnik: kako radi web aplikacija?
– Web aplikacija od korisnika prima neki zahtev ili podatke
– Web server prepoznaje zahtev i obrađuje podatke na osnovu
ugrađene poslovne logike
– Na kraju, web server generiše web stranicu koja će biti
prikazana korisniku.
MVC arhitektura
• Šta je to MVC?
– MVC arhitektura (engl. Model-View-Controller) je softverski
šablon (engl. software pattern) koji razdvaja aplikaciju na tri
međusobno povezana dela.
– Klasičan MVC pristup smešta svu logiku na web server, dok su
nove tehnologije (Ajax, AngularJS, EmberJS, JavaScriptMVC,
Backbone) omogućile da se MVC komponente delimično
izvršavaju i na strani klijenta.
– Primenom MVC-a se pruža mogućnosti prikaza modela na
različite načine, a olakšani su procesi dodavanja novih ili izmene
postojećih izveštaja, izmene interakcije sa korisnikom kao i
izmene poslovne logike.
MVC arhitektura
• Model
– Obrađuje podatke dobijene putem Controller-a.
• View
– Prikaz podataka, shodno promenama u modelu.
• Controller
– Tumači zahtev korisnika i prosleđuje ga na Model ili View
komponente.
OOP
Klase tipovi koji opisuju strukturu objekta
Objekti konkretni podaci
• Šta je to OOP?
– Objektno-orijentisano programiranje (OOP) je metod
programiranja upotrebom "objekata", koji su instance klasa i
poseduju.
• Skupove atributa (osobina) koji ih opisuju i
• Funkcije (operacije) - metode
– OO program obično sadrži različite tipove objekata, svaki sa
skupom podataka koji opisuju neku realnu pojavu:
• Automobil
• Račun u banci
• Profil sportiste
• ...
OOP
• Pravila formiranja klasa
– Razdvojiti bitno od nebitnog za dati problem. Ono što je bitno,
implementirati u klasi.
– Svi podaci u klasi su skriveni osim onih koji su eksplicitno
deklarisani kao javni.
– Enkapsulacija
• Kontrola pristupa komponentama objekta
• Public, private, protected
– Modularnost. Razbijanje koda na manje delove koji mogu
samostalno da funkcionišu.
– Nasleđivanje. Kada jedna klasa nasledi drugu ona zadržava
kompletan sadržaj klase koju nasleđuje, i taj sadržaj može
redefinisati ili proširiti.
OOP
• Metode
– Modifier
– Accessor
OOP
• Motorno vozilo (osnovna)
– Tip auto, kombi, kamion
– Gorivo benzin, dizel, TNG
– Boja bela, crvena, ...
– Broj vrata 2, 3, 4, ...
– Težina x kg
– Godina proizvodnje godina
– Registarski broj
– Registracija datum
OOP
• Auto (extends)
– Karoserija sedan, hatch, karavan
– Broj sedišta 2, 3, 4, 5
OOP
• Kombi (extends)
– Tip putnički, teretni
– Broj sedišta 2, 3, 4, 5, 6, 7, ...
– Nosivost 500, 800, ...
OOP
• Kamion (extends)
– Tip tegljač, cisterna, ...
– Broj sedišta 2, 3
– Nosivost 1.5t, 5t, 7.5t, ...
– Max. doz. težina x kg
– Osovinsko
opterećenje x kg
OOP
• Motor (extends)
– Kubikaža x cm3
– Broj cilindara 2-12
– Ulje tip mineralno, sint.
– Ulje marka Castrol, Total, ...
– Ulje gradacija 5W40, 15W40, SAE30
– Svećice ...
Literatura
• Kako napraviti web aplikaciju
– M. Dobrojević, Magma, 2016
Poglavlja
1.1 Web server
1.2 Slojevi
Korisni linkovi
• Should all apps be n-tier?
• What's the difference between “Layers” and
“Tiers”?
• Classes and Objects
• OOP