+ All Categories
Home > Documents > web03ProgramareWeb-AplicatiiWeb

web03ProgramareWeb-AplicatiiWeb

Date post: 03-Jun-2018
Category:
Upload: xistense
View: 218 times
Download: 0 times
Share this document with a friend
83
   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]
Transcript
Page 1: web03ProgramareWeb-AplicatiiWeb

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]

Page 2: web03ProgramareWeb-AplicatiiWeb

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

Page 3: web03ProgramareWeb-AplicatiiWeb

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?

Page 4: web03ProgramareWeb-AplicatiiWeb

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

Page 5: web03ProgramareWeb-AplicatiiWeb

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

Page 6: web03ProgramareWeb-AplicatiiWeb

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

Page 7: web03ProgramareWeb-AplicatiiWeb

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

Page 8: web03ProgramareWeb-AplicatiiWeb

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

Page 9: web03ProgramareWeb-AplicatiiWeb

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

Page 10: web03ProgramareWeb-AplicatiiWeb

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

Page 11: web03ProgramareWeb-AplicatiiWeb

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

Page 12: web03ProgramareWeb-AplicatiiWeb

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 

Page 13: web03ProgramareWeb-AplicatiiWeb

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 

Page 14: web03ProgramareWeb-AplicatiiWeb

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)

Page 15: web03ProgramareWeb-AplicatiiWeb

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  

Page 16: web03ProgramareWeb-AplicatiiWeb

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

Page 17: web03ProgramareWeb-AplicatiiWeb

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

Page 18: web03ProgramareWeb-AplicatiiWeb

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 

Page 19: web03ProgramareWeb-AplicatiiWeb

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

Page 20: web03ProgramareWeb-AplicatiiWeb

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

Page 21: web03ProgramareWeb-AplicatiiWeb

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

Page 22: web03ProgramareWeb-AplicatiiWeb

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)

Page 23: web03ProgramareWeb-AplicatiiWeb

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 

Page 24: web03ProgramareWeb-AplicatiiWeb

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

Page 25: web03ProgramareWeb-AplicatiiWeb

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

Page 26: web03ProgramareWeb-AplicatiiWeb

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

Page 27: web03ProgramareWeb-AplicatiiWeb

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

Page 28: web03ProgramareWeb-AplicatiiWeb

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

Page 29: web03ProgramareWeb-AplicatiiWeb

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) 

Page 30: web03ProgramareWeb-AplicatiiWeb

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* 

Page 31: web03ProgramareWeb-AplicatiiWeb

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> 

Page 32: web03ProgramareWeb-AplicatiiWeb

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"

... 

Page 33: web03ProgramareWeb-AplicatiiWeb

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"];

?>

Page 34: web03ProgramareWeb-AplicatiiWeb

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);

?>

Page 35: web03ProgramareWeb-AplicatiiWeb

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 

Page 36: web03ProgramareWeb-AplicatiiWeb

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

Page 37: web03ProgramareWeb-AplicatiiWeb

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

Page 38: web03ProgramareWeb-AplicatiiWeb

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

Page 39: web03ProgramareWeb-AplicatiiWeb

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

Page 40: web03ProgramareWeb-AplicatiiWeb

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)

Page 41: web03ProgramareWeb-AplicatiiWeb

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

Page 42: web03ProgramareWeb-AplicatiiWeb

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.

Page 43: web03ProgramareWeb-AplicatiiWeb

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

Page 44: web03ProgramareWeb-AplicatiiWeb

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

Page 45: web03ProgramareWeb-AplicatiiWeb

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

Page 46: web03ProgramareWeb-AplicatiiWeb

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

Page 47: web03ProgramareWeb-AplicatiiWeb

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

Page 48: web03ProgramareWeb-AplicatiiWeb

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

Page 49: web03ProgramareWeb-AplicatiiWeb

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

Page 50: web03ProgramareWeb-AplicatiiWeb

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

Page 51: web03ProgramareWeb-AplicatiiWeb

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

Page 52: web03ProgramareWeb-AplicatiiWeb

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

Page 53: web03ProgramareWeb-AplicatiiWeb

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

Page 54: web03ProgramareWeb-AplicatiiWeb

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?

Page 55: web03ProgramareWeb-AplicatiiWeb

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

Page 56: web03ProgramareWeb-AplicatiiWeb

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

Page 57: web03ProgramareWeb-AplicatiiWeb

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

Page 58: web03ProgramareWeb-AplicatiiWeb

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

Page 59: web03ProgramareWeb-AplicatiiWeb

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)

Page 60: web03ProgramareWeb-AplicatiiWeb

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

Page 61: web03ProgramareWeb-AplicatiiWeb

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 )

Page 62: web03ProgramareWeb-AplicatiiWeb

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)

Page 63: web03ProgramareWeb-AplicatiiWeb

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

Page 64: web03ProgramareWeb-AplicatiiWeb

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

Page 65: web03ProgramareWeb-AplicatiiWeb

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

Page 66: web03ProgramareWeb-AplicatiiWeb

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>

Page 67: web03ProgramareWeb-AplicatiiWeb

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

Page 68: web03ProgramareWeb-AplicatiiWeb

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

Page 69: web03ProgramareWeb-AplicatiiWeb

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)

Page 70: web03ProgramareWeb-AplicatiiWeb

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 

Page 71: web03ProgramareWeb-AplicatiiWeb

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

Page 72: web03ProgramareWeb-AplicatiiWeb

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

Page 73: web03ProgramareWeb-AplicatiiWeb

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

Page 74: web03ProgramareWeb-AplicatiiWeb

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

Page 75: web03ProgramareWeb-AplicatiiWeb

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

Page 76: web03ProgramareWeb-AplicatiiWeb

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)

Page 77: web03ProgramareWeb-AplicatiiWeb

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)

Page 78: web03ProgramareWeb-AplicatiiWeb

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

Page 79: web03ProgramareWeb-AplicatiiWeb

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.

Page 80: web03ProgramareWeb-AplicatiiWeb

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

Page 81: web03ProgramareWeb-AplicatiiWeb

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)

Page 82: web03ProgramareWeb-AplicatiiWeb

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

Page 83: web03ProgramareWeb-AplicatiiWeb

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

Page 84: web03ProgramareWeb-AplicatiiWeb

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

Page 85: web03ProgramareWeb-AplicatiiWeb

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

Page 86: web03ProgramareWeb-AplicatiiWeb

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

Page 87: web03ProgramareWeb-AplicatiiWeb

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

Page 88: web03ProgramareWeb-AplicatiiWeb

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

Page 89: web03ProgramareWeb-AplicatiiWeb

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

Page 90: web03ProgramareWeb-AplicatiiWeb

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

Page 91: web03ProgramareWeb-AplicatiiWeb

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

Page 92: web03ProgramareWeb-AplicatiiWeb

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

Page 93: web03ProgramareWeb-AplicatiiWeb

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

Page 94: web03ProgramareWeb-AplicatiiWeb

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

Page 95: web03ProgramareWeb-AplicatiiWeb

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

Page 96: web03ProgramareWeb-AplicatiiWeb

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

Page 97: web03ProgramareWeb-AplicatiiWeb

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

Page 98: web03ProgramareWeb-AplicatiiWeb

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

Page 99: web03ProgramareWeb-AplicatiiWeb

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/

Page 100: web03ProgramareWeb-AplicatiiWeb

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

Page 101: web03ProgramareWeb-AplicatiiWeb

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

Page 102: web03ProgramareWeb-AplicatiiWeb

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

Page 103: web03ProgramareWeb-AplicatiiWeb

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

Page 104: web03ProgramareWeb-AplicatiiWeb

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)

Page 105: web03ProgramareWeb-AplicatiiWeb

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

Page 106: web03ProgramareWeb-AplicatiiWeb

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.

Page 107: web03ProgramareWeb-AplicatiiWeb

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

Page 108: web03ProgramareWeb-AplicatiiWeb

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

Page 109: web03ProgramareWeb-AplicatiiWeb

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

Page 110: web03ProgramareWeb-AplicatiiWeb

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

Page 111: web03ProgramareWeb-AplicatiiWeb

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

Page 112: web03ProgramareWeb-AplicatiiWeb

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

Page 113: web03ProgramareWeb-AplicatiiWeb

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

Page 114: web03ProgramareWeb-AplicatiiWeb

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

?