Web skripta Flashcards
- WWW - osnove (HTTP, HTML, URL)
World Wide Web (WWW) je servis interneta. Predstavlja mrežu dokumenata, to jest resursa,
povezanih preko hiperteksta, odnosno specijalnog teksta koji sadrži reference, takozvane
hiperlinkove, na druge tekstove i Web dokumente. Resursi na Web-u su identifikovani
pomoću URL-a (Uniform Resource Locator). Resursi na web-u i njegovi dokumenti prenose se
na način definisan pravilima HTTP-a (Hypertext Transfer Protocol). HTTP je protokol za
komunikaciju između servera i klijenta, koji funkcioniše po principu zahtev/odgovor. HTTP
klijent, koji je najčešće veb pregledač, inicira prenos podataka nakon što uspostavi TCP/IP
vezu s udaljenim veb-serverom na određenom portu. Resursima se pristupa preko aplikacija
koje se nazivaju web browser-i. Preko njih, ostvaruje se veza sa serverom na kome su
skladišteni resursi i koji je u stanju da ih šalje klijentima. Osnovni element web-a su stranice
koje su kreirane pomoću markup jezika HTML-a (HyperText Markup Language). Html sadrži
strukturu i sadržaj strane. (Više o HTML-u u posebnom pitanju br. 9).
URL predstavlja jedinstveni identifikator resursa na Web-u. Preko njega se navodi način
transfera resursa (protokol), kao i njegova lokacija na Web-u. Razmotrimo sledeći primer:
http://www.elfak.com/primer.html
U ovom primeru, http je protokol koji se koristi za razmenu. Zatim, nakon www, sledi ime
hosta, odnosno mašine na kojoj se nalazi resurs, a .com predstavlja domen u kome je taj
resurs registrovan. Nakon toga sledi ime dokumenta koji se zahteva. Ukoliko se navodi samo
ime, to znači da se zahtevani resurs nalazi u root folderu računara kome se pristupa. To ne
mora uvek da bude slučaj, tako da je moguće umesto imena navesti putanju od root foldera
do željenog resursa. (’Root folder’ nije pravi root folder u celokupnom fajl sistemu mašine na
kojoj se resurs nalazi, već se pod ’root’ misli na početni, vršni folder koji je na toj mašini
namenjen za skladištenje Web resursa.
World Wide Web (WWW) je globalni sistem povezanih dokumenata i resursa, dostupnih
putem Interneta. Osnovne tehnologije koje čine WWW su HTTP, HTML i URL. HTTP (Hypertext Transfer Protocol) je protokol koji se koristi za prenos podataka preko mreže.
To je protokol za zahtevanje i slanje dokumenata, slika, video zapisa i drugih resursa sa
servera na klijentske uređaje (npr. računare, telefone, tablete). HTTP koristi TCP/IP protokol i
funkcioniše tako što klijent šalje HTTP zahtev serveru, a server vraća HTTP odgovor.
HTML (Hypertext Markup Language) je jezik za strukturiranje sadržaja na Webu. To je
osnovni jezik kojim se opisuju i predstavljaju Web stranice. HTML dokumenti se sastoje od HTML tagova koji opisuju strukturu i semantičko značenje elemenata na stranici (npr. naslov,
paragraf, slika).
URL (Uniform Resource Locator) je niz karaktera koji se koristi za identifikaciju resursa na
Webu. URL se sastoji od protokola (http, https, ftp, itd.), naziva servera, putanje do fajla i
opcionalno, parametara zahteva.
Na primer, “https://www.google.com/search?q=web+development” je URL koji identifikuje
stranicu za pretragu na Google-u za ključnu reč “web development”.
Kombinacija ovih tehnologija omogućava korišćenje i pretraživanje dokumenata na Webu.
Korisnici mogu pregledati Web stranice putem Web pregledača, a Web programeri mogu
kreirati i razvijati Web stranice i aplikacije koristeći HTTP, HTML i URL.
- Web aplikacije
Web aplikacija se može definisati kao program koji se obično čuva na izdvojenom serveru i
koristi preko interneta uz pomoć interfejsa pretraživača. Aplikacija se sastoji od serverske i
klijentske strane.
● Serverska strana se može sastojati iz nekoliko slojeva. Prvi server kome se pristupi
kada se izvrši bilo kakva akcija u browseru je Web server, čija je glavna namena da
vrši komunikaciju sa klijentom koristeći HTTP protokol. On prima zahteve klijenta
(HTTP request), obrađuje ih i vraća nazad odgovor (HTTP response).
Drugi sloj servera predstavlja aplikacioni server, koji se bavi logikom same aplikacije i
može u pozadini vršiti sve stvari vezane za sam rad Web aplikacije, kao što su
održavanje mreže, slanje poruka, obrada ulaza i izlaza. Ovo je server na kome je
aplikacija koje je kreirana zapravo pokrenuta, i na njemu se izvršavaju njeni izvršni
delovi.
Poslednji sloj predstavlja server baze podataka, odnosno DBMS server, čija je namena
da obrađuje upite i manipuliše realnim podacima koji su skladišteni u bazi.
Klijentska strana - Klijent može biti bilo koji Web browser ili neki specijalno
napravljeni klient program koji kontaktira server da bi korisnik dobio rezultate.
Klijentska strana izvršava se na Web browser-u. Danas, moguće je da se deo logike
prikaza prebaci na klijenta, koji bi pomoću skripti pribavljenih od servera mogao da
ažurira prikaz. Svakako, primarna namena ove strane je da pruža korisniku interfejs
ka samoj aplikaciji, a da sa druge strane komunicira sa Web serverom.
- Desktop vs mobilne vs web aplikacije
Slika
● Desktop i mobilne aplikacije su, za razliku od web aplikacija, striktno vezane za
platformu.
● Za desktop i mobilne, potrebna je instalacija, dok se web aplikacije izvršavaju u
browser-u i ne zahtevaju da budu instalirane.
● Ažuriranje mobilnih i desktop aplikacija zahteva skidanje neophodnih instalacija i
njihovo instaliranje, dok se web aplikacije takoreći samo-ažuriraju iz ugla korisnika.
● Desktop i mobilne aplikacije ne zahtevaju uvek aktivnu internet konekciju, ali je ona
neophodna za rad web aplikacije, s obzirom na to da se komunikacija klijenta i
servera odvija upravo preko internet mreže. Naravno, određene desktop i mobilne
aplikacije, koje se koriste za komunikaciju na daljinu, takođe zahtevaju internet
konekciju.
● Desktop i mobilne imaju bolje performanse, i brže se izvršavaju. Web aplikacije su
sporije, odnosno odziv web aplikacije je generalno sporiji.
● Desktop aplikacije su namenje za izvršavanje na računaru ili laptopu i vezane su za
platformu i operativni sistem, a mogu zahtevati i određene hardverske resurse da bi
mogle da se izvršavaju. Mobilne su namenje za mobilne telefone i tablete i kreiraju se
za određeni mobilni operativni sistem (iOS, Android). Instalirane su na samom
uređaju i mogu da imaju pristup resursima uređaja, npr. GPS ili kamera. Korisnik
može da ih preuzme preko specijalizovanih prodavnica kao što su App Store, Google
Play, App Galery… Mora se obraćati pažnja na veličinu ekrana koje ove aplikacije
zauzimaju, zbog ograničene veličine istog kod mobilnih uređaja. Web aplikacije se
prilagođavaju svim uređajima. Zbog responsive design-a, web aplikacije danas
nalikuju native mobillnim aplikacijama.
● Mobilne su namenje za mobilne telefone i tablete i kreiraju se za određeni mobilni OS
(iOS, Android). Instalirane su na samom uređaju i imaju pristup resursima uređ
- Arhitektura web aplikacija (dijagram, cloud)
Arhitektura web aplikacije se može razložiti na tri segmenta:
SLIKA
Klijentska strana (Client side) - Front-end:
● Prezentacioni nivo: HTML, CSS, JS
● Pretraživač: Chrome, Firefox, Safari, Opera…
● Keširanje podataka servera: Cookies, File API, localStorage…
● Operativni sistem: Windows, MAC, Linux, IOS, Android…
Komunikacioni kanal (Communication Channel):
● Aplikativni nivo (HTTP/1.1, HTTP/2…)
On predstavlja najviši sloj TCP/IP modela koji se ogleda u postojanju protokola
visokog nivoa za razmenu podataka između aplikacija. Najvažniji protokol ovog sloja, što se
tiče web aplikacija je HTTP protokol.
Serverska strana (Server side) - Back-end:
● Logika: PHP, Node.js, Perl, Python, ASP .NET Core
● Web serveri: Nginx, Apache, IIS…
● Skladištenje: Relacione baze, NoSQL, graf, in-memory, ORACLE, MySQL…
● Operativni sistem (kod novijih sistema može da se uključi virtuelizacija, gde bi smo
imali i docker kontejere)
● Infrastruktura: Intel, ARM…
Prezentacioni sloj klijenteske strane je sloj koji je najbliži korisniku, odnosno onaj sa kojim
korisnik interaguje. Za pružanje prikaza korisniku, najvažnije su sledeće tri tehnologije:
● HTML za definisanje same strukture stranice, odnosno elemenata koje će stranica da
sadrži i primarnog rasporeda tih elemenata u smislu toga ko je roditelj, a ko su deca
određenog elementa; ovaj raspored definiše se ugnježdavanjem HTML tagova
● CSS za kreiranje takozvanih stylesheet-ova, odnosno stilskih pravila koja će važiti za
HTML elemente; CSS-om se definiše sam izgled stranice, u pogledu rasporeda,
veličine elemenata, boje, veličine teksta i ostalih stvari vezanih za stilizovanje
stranica
● JavaScript za definisanje ponašanja elemenata u odnosu na korisnikove akcije ili
promene u bazi Za „dostavljanje“ elemenata prezentacionog sloja korisniku, zadužen je specijalni softver –
Web browser (pretraživač). Neophodno je da pretraživači budu instalirani na klijentskoj
mašini, jer se preko njih vrši komunikacija sa serverom. Najpoznatiji predstavnici među
pretraživačima su Google Chrome, Mozila Firefox, Opera, Safari, Microsoft Edge.
Za ispravan rad klijentske strane koristi se i lokalni memorijski prostor klijentske mašine. Iako
se sav originalan sadržaj nalazi na serveru, radi efikasnog rada i povećanih performansi
neophodno je da klijent povremeno skladišti (kešira) stvari pristigle sa servera. Primer
može biti skladištenje i cele stranice, ali najpoznatiji primer jesu kolačići (cookies). Cookies
predstavljaju podatke koji se smeste u lokalnu memoriju klijenta nakon pristupanja nekom
web sajtu ili aplikaciji. Nakon ponovnog pristupa tom sajtu, po memoriji se traže kolačići
vezani za taj sajt, na osnovu kojih sajt može da zna kom sadržaju je korisnik pristupao i da
takav sadržaj stavlja u prvi plan na stranicama. Kolačići mogu na primer sadržati informaciju
o tome da li je korisnik bio prijavljen i da li ima potrebe da to radi ponovo u sledećem
pristupu web sajtu ili aplikaciji. Takođe, lokalno skladište može se koristiti kada je potrebno
da korisnik vrši trasfer fajlova preko stranica (recimo, HTML za ove svrhe pruža poseban tip
input taga, „type=file“, dok JavaScript pruža posebne funkcije za rad sa fajlovima).
Na dnu klijentske strane, naravno, nalazi se operativni sistem mašine.
Što se tiče servera, on se takođe sastoji iz nekoliko važnih celina. Jedna od njih je logički
sloj, koji je zadužen za održavanje biznis-logike same aplikacije i za vršenje obrade podataka
iz baze, kako u smeru KA bazi (obrada podataka radi smeštanja, upisa u bazu i ažuriranje
baze), tako i u smeru OD baze (obrada i pribavljanje podataka na osnovu kojih se generišu
komponente prezentacionog sloja koje se šalju ka klijentu). Ovaj sloj predstavlja
odgovornosti aplikacionog servera pomenutog u pitanju broj 2. U svrhe ispunjavanja
dužnosti ove logike, moguće je koristiti razne tehnologije – pisanje PHP skripti, korišćenje
programskih jezika Perl i Python, ili nekih novijih tehnologija kao što je ASP .NET Core.
Sledeća serverska celina predstavlja sloj Web servera. Njegove osnovne dužnosti su
komunikacija sa klijentom putem HTTP protokola. Danas se u ove svrhe najčešće koriste
usluge poznatih web-hosting kompanija. Najpoznatiji Web serveri su Apache, Apache
Tomcat, Ngnix. Zakupljivanjem web-hosting usluga nekog od ovih servera, kompletna logika
ovog serverskog sloja poveri se već razvijenim kompanijama, koje pružaju veliki broj
snažnih računara, tako da je ovaj pristup znatno efikasniji od kreiranja i pokretanja servera
na lokalnoj mašini na kojoj je razvijena i aplikacija. Takođe, ako se koriste web-hosting
usluge, developer nema potrebu da razmišlja o saobraćaju i o load-balancing tehnikama
(više o load-balancing-u u pitanju broj 6).
Za skladištenje i perzistenciju podataka zadužen je sloj skladištenja. Ovaj sloj takođe
podrazumeva i DBMS komponentu koja direktno manipuliše bazom. U svrhe skladištenja
koriste se neki od poznatih DBMS-ova, kao što su Oracle DBMS, MySQL, PostgreSQL, SQL
Server…
Infrastruktura servera predstavlja server u najnižem, hardverskom pogledu. Od velikog je
značaja da ova infrastruktura bude jaka i izdržljiva, s obzirom na to da se su serveri često
uska grla u čitavom sistemu Web aplikacije, i da moraju da obrađuju veliki broj pristupa
velikom brzinom, kao i da obezbede sigurnost podataka.
Cloud, odnosno princip korišćenja „računarstva u oblaku“, omogućuje razvojnom timu
aplikacije (pojedincu, grupi programera, firmi) da čitavu serversku stranu premeste na skup
računara lociranih u velikim data-centrima, rasprostranjenim po svetu. Time se izbegava
potreba da serverske komponente budu pokrenute na lokalnim računarima, koji zasebno
imaju mnogo manju moć nego skup računara u oblaku. Premeštanjem servera na udaljene
računare, sav serverski saobraćaj i serverska logika same aplikacije kreće da se izvršava na
računarima koji imaju veliku moć. Ovaj princip se odnosi i na bazu podataka, a smeštanjem
servera u oblak gubi se potreba i za jakom lokalnom serverskom infrastrukturom, s obzirom
na to da lokalni računari više nisu zaduženi za serverske poslove.
- Klijent strana (tehnologije, izazovi)
- Server strana (tehnologije, izazovi)
- Protokoli (HTTP 1.0, 1.1, 2.0, Websocket)
- HTTP - opis, metode zahteva, poruke odgovora
- HTML5 (opšte, struktura strane, semantički elementi)
- CSS opšte, progresivno poboljšanje
- CSS selektori
- Responsive dizajn strane, css grid, flexbox
- Modeli klijent-server komunikacije
- Websocket protokol
- WebRTC
- Prenos podataka sa klijenta na server
- AJAX
- CORS (primeri za same origin)
- Formati odgovora servera
- XML tehnologije (namespace, schema, xpath, xsl), obrada XML
dokumenta (DOM, SAX)
- Poređenje XML i HTML, XML i JSON
- JSON
- Web server (arhitektura, tehnologije)
- ORM alati
- Raspoređivanje opterećenja servera
- Računarstvo u oblaku
- Serverless arhitektura
- Web servisi (RPC, SOAP, REST)
- RESTful servisi
- GraphQL
- SPA