8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 1/114
D r . S a b i n
B u r a g a
w w w . p u r l . o r g / n e t / b u s a
c o
Tehnologii Web
Programare Web (II)
cookie-uri & sesiuni, servere de aplicatii Web,
arhitectura aplicatiilor Web
detalii in [TX, 269-274] [CGI, 55-58]
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 2/114
D r . S a b i n
B u r a g a
w w w . p u r l . o r g / n e t / b u s a
c o
“Putin ajutor la timpul potrivit este mai bun
decât mult ajutor la timp nepotrivit.”
Teyve
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 3/114
D r . S a b i n
B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
Exista o maniera prin care se pot stoca
– temporar –, la nivel de client (browser ),date trimise de aplicatia Web de pe server?
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 4/114
D r . S a b i n
B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri
Mecanism standard ce permite ca un server Web
sa plaseze informatii pe calculatorul-client(la utilizator), prin intermediul browser -ului,
pentru ca, ulterior, navigatorul sa returneze
informatiile acelui server
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 5/114
D r . S a b i n
B u r a g a
w w w .
p u r l . o r g / n e t / b u s a c o
cookie-uri
Mijloc persistent de stocare a datelor pe masinaclientului Web cu scopul de a fi accesate ulterior
de pe server
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 6/114
D r . S a b i n
B u r a g a
w w w .
p u r l . o r g / n e t / b u s a c o
cookie-uri: utilizari
Memorarea preferintelor fiecarui utilizator
exemplu tipic: tema vizuala
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 7/114
D r . S a b i n
B u r a g a
w w w .
p u r l . o r g / n e t / b u s a c o
cookie-uri: utilizari
Completarea automata a formularelor
folosirea valorilor introduse anterior de utilizatorin anumite cimpuri
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 8/114
D r . S a b i n
B u r a g a
w w w .
p u r l . o r g / n e t / b u s a c o
cookie-uri: utilizari
Monitorizarea accesului la o resursa Web
aspecte de interes:Web analytics
user tracking
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 9/114
D r . S a b i n
B u r a g a
w w w .
p u r l . o r g / n e t / b u s a c o
cookie-uri: utilizari
Stocarea informatiilor de autentificare
e.g., retinerea datelor privitoare la contul utilizatorului
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 10/114
D r . S a b i n
B u r a g a
w w w .
p u r l . o r g / n e t / b u s a c o
cookie-uri: utilizari
Starea tranzactiilor in cadrul unei aplicatii Web
e.g., starea cosului de cumparaturi intr-un e-shop
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 11/114
D r . S a b i n
B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri: utilizari
Managementul sesiunilor Web
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 12/114
D r . S a b i n
B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri: tipuri
Cookie-uri persistente
nu vor fi distruse la inchiderea navigatorului,
ci vor fi memorate intr-un fisier, perioada lor de
viata fiind stabilita de creatorul cookie-urilor
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 13/114
D r . S a b i n
B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri: tipuri
Cookie-uri nepersistente
dispar la inchiderea browser -ului
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 14/114
D r . S a b i n
B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri
Un cookie poate fi privit ca fiind o variabila
a carei valoare este vehiculata via HTTP
intre server (aplicatia) Web si client (navigator)
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 15/114
D r . S a b i n
B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri
Un cookie poate fi privit ca fiind o variabila
a carei valoare este vehiculata via HTTP
intre server (aplicatia) Web si client (navigator)
consta dintr-o pereche nume=valoare
valoarea este un sir de caractere URL-encoded
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 16/114
D r . S a b i n
B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri
Datele referitoare la un cookie vor fi receptionate
de navigator care mentine o lista de cookie-uri
apartinind serverului care le-a trimis
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 17/114
D r . S a b i n
B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri
Un cookie este trimis unui client
folosind campul Set-Cookie dintr-un antet al unui mesaj de raspuns HTTP
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 18/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri
Set-Cookie: nume=valoare; expires=data; path=cale;
domain=domeniu
; secure
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 19/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri
Set-Cookie: nume=valoare; expires=data; path=cale;
domain=domeniu
; secure
expires – indica data si timpul
cand cookie-ul va expira si clientul il va distruge
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 20/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri
Set-Cookie: nume=valoare; expires=data; path=cale;
domain=domeniu
; secure
domain – desemneaza numele simbolic al serverului
care a generat cookie-ul
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 21/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri
Set-Cookie: nume=valoare; expires=data; path=cale;
domain=domeniu
; secure
path – specifica un subset de URL-uri
din domeniul corespunzator unui cookie
diferentiaza aplicatii existente pe acelasi server
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 22/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri
Set-Cookie: nume=valoare; expires=data; path=cale;
domain=domeniu
; secure
secure – indica faptul ca acest cookie va fi transmis
doar in cazul in care canalul de comunicatie este sigur
(via HTTPS)
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 23/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri
Un cookie este transmis inapoi de la client
spre serverul Web doar daca intrunestetoate conditiile de validitate
se potrivesc domeniul, calea de directoare,
timpul de expirare si
securitatea canalului de comunicatie
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 24/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri
Serverul va primi de la client,
in antetul HTTP, o linie de forma:
Cookie: nume1=valoare1; nume2=valoare2...
lista cookie-urilor ce respecta conditiile de validitate
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 25/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
cookie-uri
Invocarea script -ului conduce la returnarea
unei reprezentari + setarea de cookie-uri
Server
Web
ClientWeb
cerere HTTP
invocare script
răspuns HTTP
Set-Cookie: culoare=verde
Script
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 26/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s
a c o
cookie-uri
Cookie-urile – persistente sau nu – sunt memorate
la nivel de browser
Server
Web
ClientWeb
culoare=verde
Script
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 27/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s
a c o
cookie-uri
Urmatorul acces la script se face cu transmiterea
cookie-urilor spre serverconform conditiilor de validitate
Server
Web
ClientWeb
cerere HTTP
Cookie: culoare=verde
răspuns HTTP
Script
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 28/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s
a c o
cookie-uri: stocare
Stocarea cookie-urilor persistente:
Netscape/Firefox < 3 – fisierul cookies sau cookies.txt
domeniu acces cale securitate expirare nume valoare pinguin.info FALSE / FALSE 966862979 culoare verde pinguin.info FALSE / FALSE 966782841 alta_culoare gri
.uaic.ro FALSE /doc FALSE 969367226 accesari 3
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 29/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s
a c o
cookie-uri: stocare
Stocarea cookie-urilor persistente:
Mozilla Firefox >3 – o baza de date SQLite: cookies.sqlite
tabela moz_cookies (id INTEGER PRIMARY KEY,name TEXT, value TEXT, host TEXT, path TEXT,
expiry INTEGER, lastAccessed INTEGER,isSecure INTEGER, isHttpOnly INTEGER)
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 30/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s
a c o
cookie-uri: stocare
Stocarea cookie-urilor persistente:Internet Explorer – fisiere denumite [email protected]
[email protected] AnEFromrel_client www.elsevier.com/
0341582681629364629411372411229364628*
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 31/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s
a c o
cookie-uri: stocare
Stocarea cookie-urilor persistente:Safari – un document Cookies.plist in format XML
<plist>
<array><dict> <!-- sir de perechi cheie-valoare --><key>Created</key> <real>285860755.23853493</real><key>Domain</key> <string>.youtube.com</string><key>Expires</key> <date>2012-09-19T13:45:00Z</date><key> Name </key> <string>VISITOR_INFO1_LIVE</string><key> Path </key> <string> /</string><key> Value </key> <string>zoj_Hf4KPN0</string>
</dict></array>
</plist>
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 32/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s
a c o
cookie-uri: creare
Exemplu – pentru CGI, folosind bash:
#!/bin/bashecho "Set-Cookie: culoare=verde; path= /;
expires=Mon, 07-May-2012 07:33:00 GMT"
...
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 33/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s
a c o
cookie-uri: creare
Exemplu in cazul PHP – functia setcookie()
<?phpsetcookie ("alta_culoare", "albastra");echo "Un cookie de culoarea " . $_COOKIE["alta_culoare"];
?>
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 34/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
cookie-uri: expirare
Se anuleaza valoarea si timpul,
eventual resetindu-se si celelalte atribute ale cookie-ului
exemplu – pentru PHP:
<?phpsetcookie ($nume_cookie, "", 0, "/", "", 0);
?>
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 35/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
cookie-uri: consultare
Cookie-urile se regasesc in variabila-antet
HTTP_COOKIE
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 36/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
cookie-uri: consultare
Cookie-urile se regasesc in variabila-antet
HTTP_COOKIE
pentru PHP – cookie-ul e specificat (accesat) ca variabila:
$_COOKIE ['nume_cookie']
tablou asociativ
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 37/114
D r . S a b i
n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
cookie-uri: consultare
Exemplu pentru CGI – script Perl
@cookieuri = split ( /;/, $ENV{'HTTP_COOKIE'});foreach $pereche (@cookieuri) {
($nume, $val) = split ( /=/, $pereche);
$cookie{$nume} = $val; # tablou asociativ}$fundal = $cookie{'alta_culoare'};
avansat
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 38/114
D r . S a b i
n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
cookie-uri: manipulare
Pentru ASP.NET: proprietatea Cookiesa colectiei HttpCookieCollection
(vezi HttpRequest si HttpResponse din System.Web)
HttpCookie vizita = new HttpCookie ("ultima_vizita");DateTime timp_curent = DateTime.Now;vizita.Value = timp_curent.ToString ();vizita.Expires = timp_curent.AddHours (24); // expira peste 1 ziResponse.Cookies.Add (vizita);
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 39/114
D r . S a b i
n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
sesiuni Web
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 40/114
D r . S a b i
n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
preliminarii
HTTP este un protocol stateless,
neputand oferi informatii daca anumite cererisuccesive provin de la acelasi client
(eventual, de la aceeasi instanta a navigatorului)
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 41/114
D r . S a b i
n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
preliminarii
Apare necesitatea de a prezerva anumite date
de-a lungul mai multor accesari inrudite
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 42/114
D r . S a b i
n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
preliminarii
Apare necesitatea de a prezerva anumite date
de-a lungul mai multor accesari inruditeexemple:
starea cosului de cumparaturi,
formulare Web completate in mai multi pasi,paginarea continutului,
starea autentificarii
etc.
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 43/114
D r . S a b i
n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
sesiuni
Orice vizitator al sitului va avea asociat
un identificator unic – session ID (SID)
stocat intr-un cookie ori propagat via URL
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 44/114
D r . S a b i
n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
sesiuni
Orice vizitator al sitului va avea asociat
un identificator unic – session ID (SID)
astfel, se pot identifica vizite (cereri) consecutiverealizate de acelasi utilizator
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 45/114
D r . S a b i
n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
sesiuni
Unei sesiuni i se pot asocia diverse variabile
ale caror valori vor fi mentinute
intre accesari consecutivedin partea aceleiasi instante de client
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 46/114
D r . S a b i
n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
sesiuni
O sesiune se poate inregistra (initia)
implicit sau explicit, in functie de serverulde aplicatii ori de configuratia stabilita
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 47/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
sesiuni
O sesiune se poate inregistra (initia)
implicit sau explicit, in functie de serverulde aplicatii ori de configuratia stabilita
unele servere de aplicatii garanteaza
integritatea sesiunii si dupa o restartare(a serverului sau a aplicatiei)
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 48/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s
a c o
sesiuni: programare
In cazul CGI, managementul sesiunilor
cade in responsabilitatea programatorului
nu exista un mecanism standardizatreferitor la manipularea sesiunilor Web
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 49/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
sesiuni: programare
Pentru PHP: functiile session_start(), session_register(), session_id(), session_unregister(), session_destroy()
<?php session_start (); // initiem o sesiune
if (!isset ($_SESSION['accesari'])) {$_SESSION['accesari'] = 0; } else {$_SESSION['accesari']++; }
?>variabila
accesari atasata
sesiunii
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 50/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
sesiuni: programare
Pentru ASP.NET, vezi HttpSession (System.Web)ofera suport si pentru evenimente privind sesiunile
// preia numele de utilizator stocat in cadrul sesiuniinume = Session["Nume"].ToString ();
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 51/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
sesiuni: programare
Folosind un cadru de lucru ( framework ),
managementul cookie-urilor & sesiunilor
poate fi mult simplificat
cateva exemplificari:Apache::Session (modul Perl), Django (Python),
Struts (Java), Symfony (PHP)
GET / HTTP/1.1
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 52/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
Host: plus.google.com User-Agent: Mozilla/5.0 (rv:10.0.2) Gecko/20100101 Firefox/10.0.2Accept: text/html,application/xhtml+xml;q=0.9,*/*;q=0.8Accept-Language: en-us,en;q=0.5Accept-Encoding: gzip, deflateCookie: PREF=ID=d7ab9cd8e5e1f17d:U=213749fe7b4fe3ea:…;
SID=DQABANMAAAB5eFmWHrrpw203…iK4g;
HSID=AlJExygxk_sNdOIAX;SSID=ATkVPS5BM2xEjGwXZ;APISID=cXJw6EX3K_WAUyDd/A8wP-XcSkrjWocGEe;SAPISID=B13Zj7NiRE23qoe4/AlVGLP6D5ckMamKjz;
OTZ=1136908_48_48_123900_44_436380;SS=DQABANMAAADjUh…MKA;ULS=EgYKBBICZW4YuLGa-gQ
cookie-uri (stocand inclusiv informatii
despre sesiunea curenta) intr-o cerere GET
HTTP/1.1 200 OK avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 53/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
sesiuni: exemplificareSet-Cookie: SID=DQABANMAAAB5eFmWHrrpw203…iK4g;
Domain=.google.com;
Path=/;Expires=Sat, 26-Feb-2022 13:24:40 GMTContent-Type: text/html; charset=utf-8Content-Encoding: gzip
Date: Wed, 29 Feb 2012 13:24:40 GMTExpires: Wed, 29 Feb 2012 13:24:40 GMTServer : GSE
<!DOCTYPE html>…
raspunsul HTTP incluzand
setarea cookie-ului privitor la sesiune
Exista alternative la CGI
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 54/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
Exista alternative la CGI
pentru dezvoltarea de aplicatii Web?
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 55/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii
Eficientizeaza procesele de dezvoltarea aplicatiilor Web de anvergura
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 56/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii
Se bazeaza pe interfete de programare
(API – Application Programming Interfaces)
si/sau pe componente reutilizabile
puse la dispozitie de server ori de alti ofertanti
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 57/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii
Se integreaza in unul sau mai multe servere Web
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 58/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii
Pot incuraja sau impune o viziune arhitecturala
privind dezvoltarea de aplicatii Web
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 59/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii
Pot incuraja sau impune o viziune arhitecturala
privind dezvoltarea de aplicatii Web
modelul de structurare a datelor este separat
de maniera de procesare (controlul aplicatiei) side modul de prezentare a acestora (interfata Web)
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 60/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii
Pot incuraja sau impune o viziune arhitecturala
privind dezvoltarea de aplicatii Web
modelul de structurare a datelor este separat
de maniera de procesare (controlul aplicatiei) side modul de prezentare a acestora (interfata Web)
principiu: separation of concerns
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 61/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii: mvc
Majoritatea aplicatiilor Web sunt dezvoltate
pe baza MVC (Model-View-Controller )
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 62/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii: mvc
View (prezentare+interactiune)
Model(structura datelor)
Controller(procesare)
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 63/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii: mvc
View la nivel client(i) Web
Modelstocare persistenta
Controlleraplicatie Web la nivel de server
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 64/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii: mvc
View la nivel client(i) Web
Modelstocare persistenta
Controlleraplicatie Web la nivel de server
HTML, CSS, SVG, Flash, Silverlight etc.
SQL, NoSQL, XML (XQuery), RDF,…
CGI, servere de aplicatii
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 65/114
D r . S a b i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii
Uzual, ofera posibilitatea de a include cod (script )
direct in cadrul documentelor Web,
cod invocat pe server
generarea de continut dinamic pe partea de server
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 66/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii
Maniera de includere depinde
de serverul de aplicatii Web:<% ... %> pentru ASP.NET
<% ... %> pentru JSP ( Java Server Pages)
<?php ... ?> pentru PHP
<% ... %> pentru Ruby on Rails
mai general: <script language="...">...</script>
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 67/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii: facilitati
Limbaj(e) de programare
API-ul de baza
Stocare persistenta a modelelor de dateInteractiune Web
Cookie-uri & sesiuni
Procesari XML
Medii de dezvoltare & cadre de lucru
Caracteristici particulare
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 68/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii: facilitati
Limbaj(e) de programare
limbajele .NET: in special C#ASP.NET e independent
de limbaj, fiind parte din .NET Framework
Java (AppFuse, Play, Wicket etc.)
PHP (PHP + framework -uri: CakePHP, Symfony,…) Python (Django, Grok, Pyramid, Zope)
Ruby (Ruby on Rails, Sinatra)
altele
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 69/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii: facilitati
Limbaj(e) de programare
strong typed vs. weak typed (ASP.NET/JSP vs. PHP)
utilizare de spatii de nume si instante de clase
raportare de erori (PHP4) vs. exceptii (ASP.NET, PHP5)
pur obiectuale (ASP.NET, JSP) sau nu (PHP)
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 70/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii: facilitati
Limbaj(e) de programare
pot fi dinamice – e.g., Python, Ruby
interpretate sau compilate
uzual, se prefera generarea de cod intermediar:
IL – Intermediate Language
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 71/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u s a c o
servere de aplicatii: facilitati
API-ul de baza
contribuie la “puterea” limbajului
+ serverului de aplicatii
(via functii/clase predefinite)
securitate, consistenta,
acces la resursele mediului de operare
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 72/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
API-ul de baza
poate oferi suport pentru migrarea facila
de la aplicatii clasice la cele Web
poate asigura si independenta de platforma
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 73/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
API-ul de baza
functionalitati incluse – e.g., PHP built-in functions
versus
ASP.NET CLR (Common Language Runtime) / JSP
functionalitatile incluse in API-ul de baza nu necesita
recompilarea serverului de aplicatii
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 74/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Suport pentru stocare persistenta
in baze de date relationale – via SQL
pentru a avea acces sau a modifica date stocate persistent,
aplicatia Web functioneaza ca un client
pentru un server de baze de date
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 75/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Suport pentru stocare persistenta
in baze de date relationale – via SQL
exemplu:
functii PHP predefinite pentru o pleiada de RDBMS,
via biblioteci incorporate (SQLite + mysqli in PHP5)sau diverse extensii
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 76/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Suport pentru stocare persistenta
in baze de date relationale – via SQL
se poate recurge la un API pentru accesul la date
ORM (Object-Relational Mapping)
ADO.NET pentru ASP.NET
JDBC ( Java DataBase Connectivity ) pentru Java (JSP)
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 77/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Suport pentru stocare persistenta
in baze de date relationale – via SQL
eventual, se va recurge la framework -uri aditionale
e.g., Hibernate – Java; NHibernate, LINQ – .NET
“legarea” datelor de program (data binding)
poate fi realizata automat (ASP.NET) sau manual (PHP)
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 78/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Suport pentru stocare persistenta
pe baza modelelor arborescente: XML
date (semi)structurate
transformari in alte formate: XPath, XSLT
procesari: DOM, SAX, SimpleXML etc.validari: DTD, XML Schema, RELAX,…
interogari: XQuery
etc. cursurile
viitoare
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 79/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Suport pentru stocare persistentarecurgand la alte paradigme non-relationale,
distribuite la nivel de Internet, scalabile – NoSQL
http://asserttrue.blogspot.com/2009/12/nosql-required-reading.html
http://nosql-databases.org/
exemplificari:
Cassandra, CouchDB, Hadoop, MongoDB, Terrastore etc.
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 80/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Suport pentru interactiunea Web
interactiunea e facilitata de controale Web specificatein cadrul codului-sursa rulat pe server
emuleaza campurile din formularele (X)HTML si/sau
ofera controale noi – e.g., calendar, slideshow ,…
generarea de cod HTML (+JavaScript) in functie de client
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 81/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Suport pentru interactiunea Web
exemplificari
ASP.NET (<asp:control>) framework -ul PRADO (PHP)
similar, pentru platforma Java: e.g., JSF ( JavaServer Faces)
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 82/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Suport pentru interactiunea Web
procesarea evenimentelor provenind de la clientevent driven Web applications
exemplu tipic: ASP.NET clasic
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 83/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Suport pentru interactiunea Web
RIA (Rich Internet Applications)transfer asincron de date
via suita de tehnologii Ajax
eventual, via framework -uri/module/clase aditionale
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 84/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Medii de dezvoltare
comercialeVisual Studio .NET, Zend,...
versus
educationale, gratuite sau open-sourceAptana, Eclipse, Padre, Visual Web Developer Express
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 85/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Medii de dezvoltare
depanatoare (debuggers)
optimizatoare de cod – e.g., Zend Optimizer
profilers
si altele
important in
contextul RIA
d l f l
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 86/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Medii de dezvoltare
facilitati pentru dezvoltatorii de servicii WebSOAP si/sau REST
clase/componente/biblioteci aditionalecomerciale, gratuite (freeware), open-source
d li ii f ili i
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 87/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Suport acordat inginerilor software
aplicatii N -tier
se incurajeaza folosirea sabloanelor de proiectare
(design patterns):Container , MVC (Model-View-Controller ),
Proxy , Configuration Parameters, Invocation Context ,…
d li ii f ili i
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 88/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Suport acordat inginerilor software
unitati de testare automata – cadrul general dat de xUnit
HttpUnit , JUnit , PHPUnit , NUnit, Test::Class for Perl
(la nivel de server)
+JSUnit , FireUnit , Selenium
(la nivel de client)
de vizitat http://xunitpatterns.com/
d li ii f ili i
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 89/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Suport acordat inginerilor software
generarea automata de documentatii, in diverse formate
suport pentru source control – code review , versioning
pot viza si probleme legate de performanta (e.g., caching)
d li ii f ili i
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 90/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Suport acordat inginerilor software
incurajarea unui stil de scriere a codului-sursa
si/sau
recurgerea la o metodologie/paradigma
e.g., agile programming
d li tii f ilit ti
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 91/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
d li tii f ilit ti
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 92/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Alte caracteristici
descrierea atributelor unei pagini/sit(limbaj, sesiuni, tratare de evenimente, continut,...)
maniera de autentificare – suport pentru sesiuni
tema vizuala (skin)
sabloane de vizualizare (template-uri) etc.
<%@ directiva ... %> (ASP.NET, JSP)
d li tii f ilit ti
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 93/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Alte caracteristici
recurgerea la containere de componente
un exemplu de referinta:
EJB (Enterprise Java Beans)
d li tii f ilit ti
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 94/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Alte caracteristici
suport pentru arhitecturi/platforme avansatede tip enterprise:
SOA – Service Oriented Architecture
workflow -uri grid computing
cloud computing
d li tii f ilit ti
avansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 95/114
D r . S a b
i n B u r a g a
w w w
. p u r l . o r g / n e t / b u
s a c o
servere de aplicatii: facilitati
Utilizarea unui framework (cadru de lucru)
faciliteaza dezvoltarea de aplicatii Web complexe
ASP.NET: ASP.NET MVC, Vici MVC
Java: Play, Spring, Struts, Tapestry, Vaadin
Perl: Catalyst , CGI::Application, Jifty, WebGUIPHP: CakePHP, CodeIgniter, Seagull, Symfony, Yii,…
Python: Django, Grok , Zope
Ruby: Camping, Nitro, Rails, Sinatra
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 96/114
D r . S a b
i n B u r a g a
w w w . p u r l . o r g / n e t / b u
s a c o
Care este arhitectura unei aplicatii Web?
hit t li tiil b
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 97/114
D r . S a b
i n B u r a g a
w w w . p u r l . o r g / n e t / b u
s a c o
arhitectura aplicatiilor web
Uzual, implica trei strate (3-tier application)
Internet
(Web)
Client Server de aplicatii Stocare
(interface) (application) ( persistence)
Fruit / Presentation
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 98/114
D r . S a b
i n B u r a g a
w w w . p u r l . o r g / n e t / b u
s a c o
Sponge / Database
Jelly / Business Logic
Custard / Page Logic
Cream / Markup
C. Henderson, “Scalable Web Architectures”,
Web 2.0 Expo, 2007: iamcal.com/talks/
Fruit / Presentation
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 99/114
D r . S a b
i n B u r a g a
w w w . p u r l . o r g / n e t / b u
s a c o
Sponge / Database
Jelly / Business Logic
Custard / Page Logic
Cream / Markup
C. Henderson, “Scalable Web Architectures”,
Web 2.0 Expo, 2007: iamcal.com/talks/
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 100/114
D r . S a b
i n B u r a g a
w w w . p u r l . o r g / n e t / b u
s a c o
studiu de caz: Flickr
studiu de caz: flickr
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 101/114
D r . S a b
i n B u r a g a
w w w . p u r l . o r g / n e t / b u
s a c o
studiu de caz: flickr
Scop:
partajare on-line a continutului grafic (fotografii)
aplicatie reprezentativa a Web-ului social
agregare de comunitati – imaginea ca obiect social
suport pentru adnotari via termeni de continut (tagging)
+ comentarii
studiu de caz: flickr
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 102/114
D r . S a b
i n B u r a g a
w w w . p u r l . o r g / n e t / b u
s a c o
studiu de caz: flickr
Interactiune facila cu utilizatorul
Interactiune cu alte aplicatii via API-uri deschise
Unicodeinternationalization (i18n) & localization (l10n)
studiu de caz: flickr
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 103/114
D r . S a b
i n B u r a g a
w w w . p u r l . o r g / n e t / b u
s a c o
studiu de caz: flickr
Servere debaze de date
ServereWeb Servere destocare foto
Internet (Web)
studiu de caz: flickr tehnologii
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 104/114
D r . S a b
i n B u r a g a
w w w . p u r l . o r g / n e t / b u
s a c o
studiu de caz: flickr – tehnologii
PHP (procesare – application logic, acces la API,
sabloane de afisare via Smarty, modul de e-mail )
Perl (validarea datelor)Java (managementul nodurilor de stocare)
MySQL (stocare in format InnoDB)
ImageMagick (prelucrare de imagini)
Ajax (interactiune asincrona)Linux (platforma de rulare)
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 105/114
D r . S a b
i n B u r a g a
w w w . p u r l . o r g / n e t / b u
s a c o
studiu de caz: flickr
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 106/114
D r . S a b
i n B u r a g a
w w w . p u r l . o r g / n e t / b u
s a c o
studiu de caz: flickr
API-uri existente
www.flickr.com/services/api/
implementari disponibile in limbaje precumActionScript, C, Java, .NET, Perl, PHP, Python, Ruby etc.
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 107/114
D r . S a b
i n B u r a g a
w w w . p u r l . o r g / n e t / b u
s a c o
studiu de caz: Wikipedia
studiu de caz: wikimedia
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 108/114
D r . S a b
i n B u r a g a
w w w . p u r l . o r g / n e t / b u
s a c o
studiu de caz: wikimedia
Scop:
oferirea de continut deschisvia o suita de aplicatii Web colaborative: wiki-uri
alaturi de Wikipedia,
exista Wiktionary, Wikinews, Wikibooks, Wikiquote,
Wikisource, Wikiversity, Wikispecies, Wikimedia etc.
studiu de caz: wikimedia tehnologii
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 109/114
D r . S a b
i n B u r a g a
w w w . p u r l . o r g / n e t / b u
s a c o
studiu de caz: wikimedia – tehnologii
MediaWiki (sistemul wiki utilizat pentru toate serviciile)
PHP (platforma pe care ruleaza MediaWiki)
MySQL (solutia principala de stocare)
ImageMagick , DjVu, TeX, rsvg, ploticus etc.
(pentru procesare de continuturi grafice in MediaWiki)
Lucene (indexare textuala, facilitind cautarea)
Linux (platforma de rulare)
studiu de caz: wikimedia
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 110/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
studiu de caz: wikimedia
Wikipedia: arhitectura generalahttp://mituzas.lt/uc/workbook2007.pdf
studiu de caz: wikimediaavansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 111/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
studiu de caz: wikimedia
Continutul este distribuit prin intermediul
CDN – Content Distributed Network sistem de caching Web permitind echilibrarea incarcarii
(load balancing) pe baza de criterii geografice
caching avansat – pe niveluri –
al continutului preponderent static
http://www.cs.huji.ac.il/labs/danss/p2p/resources.html
studiu de caz: wikimediaavansat
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 112/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
studiu de caz: wikimedia
API-uri pentru comunicarea via HTTP
dintre serverele de stocare a resurselor mediasi serverele de aplicatii
exemple de operatii uzuale:
store, publish, delete, generate thumbnail
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 113/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s a c orezumat
programare Web la nivel de server cookie-uri & sesiuni
servere de aplicatii Web
arhitectura generica a unei aplicatii Web
8/12/2019 web03ProgramareWeb-AplicatiiWeb
http://slidepdf.com/reader/full/web03programareweb-aplicatiiweb 114/114
D r . S a b i n B u r a g a
w w w . p u r l . o r g / n e t / b u s a c o
?