web03programareweb-aplicatiiweb

Post on 03-Jun-2018

220 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 nume@adresa.txt 

sabin@www.elsevier.txt 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

?