Documente Academic
Documente Profesional
Documente Cultură
web03ProgramareWeb AplicatiiWeb
web03ProgramareWeb AplicatiiWeb
r
.
S
a
b
i
n
B
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]
D
r
.
S
a
b
i
n
B
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
dect mult ajutor la timp nepotrivit.
Teyve
D
r
.
S
a
b
i
n
B
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?
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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 masina
clientului Web cu scopul de a fi accesate ulterior
de pe server
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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 utilizator
in anumite cimpuri
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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)
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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)
D
r
.
S
a
b
i
n
B
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 intruneste
toate conditiile de validitate
se potrivesc domeniul, calea de directoare,
timpul de expirare si
securitatea canalului de comunicatie
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
Client
Web
cerere HTTP
invocare script
rspuns HTTP
Set-Cookie: culoare=verde
Script
D
r
.
S
a
b
i
n
B
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
Client
Web
culoare=
verde
Script
D
r
.
S
a
b
i
n
B
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 server
conform conditiilor de validitate
Server
Web
Client
Web
cerere HTTP
Cookie: culoare=verde
rspuns HTTP
Script
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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)
D
r
.
S
a
b
i
n
B
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/
0
3415826816
29364629
4113724112
29364628
*
D
r
.
S
a
b
i
n
B
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>
D
r
.
S
a
b
i
n
B
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/bash
echo "Set-Cookie: culoare=verde; path=/;
expires=Mon, 07-May-2012 07:33:00 GMT"
...
D
r
.
S
a
b
i
n
B
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()
<?php
setcookie ("alta_culoare", "albastra");
echo "Un cookie de culoarea " . $_COOKIE["alta_culoare"];
?>
D
r
.
S
a
b
i
n
B
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:
<?php
setcookie ($nume_cookie, "", 0, "/", "", 0);
?>
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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 Cookies
a 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 zi
Response.Cookies.Add (vizita);
avansat
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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 cereri
succesive provin de la acelasi client
(eventual, de la aceeasi instanta a navigatorului)
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
exemple:
starea cosului de cumparaturi,
formulare Web completate in mai multi pasi,
paginarea continutului,
starea autentificarii
etc.
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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) consecutive
realizate de acelasi utilizator
D
r
.
S
a
b
i
n
B
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 consecutive
din partea aceleiasi instante de client
D
r
.
S
a
b
i
n
B
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 serverul
de aplicatii ori de configuratia stabilita
D
r
.
S
a
b
i
n
B
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 serverul
de aplicatii ori de configuratia stabilita
unele servere de aplicatii garanteaza
integritatea sesiunii si dupa o restartare
(a serverului sau a aplicatiei)
avansat
D
r
.
S
a
b
i
n
B
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 standardizat
referitor la manipularea sesiunilor Web
avansat
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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 sesiunii
nume = Session["Nume"].ToString ();
D
r
.
S
a
b
i
n
B
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)
avansat
D
r
.
S
a
b
i
n
B
u
r
a
g
a
w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o
GET / HTTP/1.1
Host: plus.google.com
User-Agent: Mozilla/5.0 (rv:10.0.2) Gecko/20100101 Firefox/10.0.2
Accept: text/html,application/xhtml+xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: PREF=ID=d7ab9cd8e5e1f17d:U=213749fe7b4fe3ea:;
SID=DQABANMAAAB5eFmWHrrpw203iK4g;
HSID=AlJExygxk_sNdOIAX;
SSID=ATkVPS5BM2xEjGwXZ;
APISID=cXJw6EX3K_WAUyDd/A8wP-XcSkrjWocGEe;
SAPISID=B13Zj7NiRE23qoe4/AlVGLP6D5ckMamKjz;
OTZ=1136908_48_48_123900_44_436380;
SS=DQABANMAAADjUhMKA;
ULS=EgYKBBICZW4YuLGa-gQ
cookie-uri (stocand inclusiv informatii
despre sesiunea curenta) intr-o cerere GET
avansat
D
r
.
S
a
b
i
n
B
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: exemplificare
HTTP/1.1 200 OK
Set-Cookie: SID=DQABANMAAAB5eFmWHrrpw203iK4g;
Domain=.google.com;
Path=/;
Expires=Sat, 26-Feb-2022 13:24:40 GMT
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Date: Wed, 29 Feb 2012 13:24:40 GMT
Expires: Wed, 29 Feb 2012 13:24:40 GMT
Server: GSE
<!DOCTYPE html>
raspunsul HTTP incluzand
setarea cookie-ului privitor la sesiune
avansat
D
r
.
S
a
b
i
n
B
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?
D
r
.
S
a
b
i
n
B
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 dezvoltare
a aplicatiilor Web de anvergura
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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) si
de modul de prezentare a acestora (interfata Web)
D
r
.
S
a
b
i
n
B
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) si
de modul de prezentare a acestora (interfata Web)
principiu: separation of concerns
D
r
.
S
a
b
i
n
B
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)
D
r
.
S
a
b
i
n
B
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)
D
r
.
S
a
b
i
n
B
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
Model
stocare persistenta
Controller
aplicatie Web la nivel de server
D
r
.
S
a
b
i
n
B
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
Model
stocare persistenta
Controller
aplicatie Web la nivel de server
HTML, CSS, SVG, Flash, Silverlight etc.
SQL, NoSQL, XML (XQuery), RDF,
CGI, servere de aplicatii
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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>
D
r
.
S
a
b
i
n
B
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 date
Interactiune Web
Cookie-uri & sesiuni
Procesari XML
Medii de dezvoltare & cadre de lucru
Caracteristici particulare
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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)
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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)
D
r
.
S
a
b
i
n
B
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)
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
recurgand 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.
avansat
D
r
.
S
a
b
i
n
B
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 specificate
in 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
D
r
.
S
a
b
i
n
B
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)
D
r
.
S
a
b
i
n
B
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 client
event driven Web applications
exemplu tipic: ASP.NET clasic
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
comerciale
Visual Studio .NET, Zend,...
versus
educationale, gratuite sau open-source
Aptana, Eclipse, Padre, Visual Web Developer Express
D
r
.
S
a
b
i
n
B
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
r
.
S
a
b
i
n
B
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 Web
SOAP si/sau REST
clase/componente/biblioteci aditionale
comerciale, gratuite (freeware), open-source
D
r
.
S
a
b
i
n
B
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,
avansat
D
r
.
S
a
b
i
n
B
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/
avansat
D
r
.
S
a
b
i
n
B
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)
avansat
D
r
.
S
a
b
i
n
B
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
avansat
D
r
.
S
a
b
i
n
B
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
avansat
D
r
.
S
a
b
i
n
B
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
r
.
S
a
b
i
n
B
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)
avansat
D
r
.
S
a
b
i
n
B
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 avansate
de tip enterprise:
SOA Service Oriented Architecture
workflow-uri
grid computing
cloud computing
avansat
D
r
.
S
a
b
i
n
B
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, WebGUI
PHP: CakePHP, CodeIgniter, Seagull, Symfony, Yii,
Python: Django, Grok, Zope
Ruby: Camping, Nitro, Rails, Sinatra
avansat
D
r
.
S
a
b
i
n
B
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?
D
r
.
S
a
b
i
n
B
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)
D
r
.
S
a
b
i
n
B
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
Fruit / Presentation
C. Henderson, Scalable Web Architectures,
Web 2.0 Expo, 2007: iamcal.com/talks/
D
r
.
S
a
b
i
n
B
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
Fruit / Presentation
C. Henderson, Scalable Web Architectures,
Web 2.0 Expo, 2007: iamcal.com/talks/
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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
Unicode
internationalization (i18n) & localization (l10n)
D
r
.
S
a
b
i
n
B
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 de
baze de date
Servere
Web
Servere de
stocare foto
Internet (Web)
D
r
.
S
a
b
i
n
B
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)
D
r
.
S
a
b
i
n
B
u
r
a
g
a
w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o
D
r
.
S
a
b
i
n
B
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 precum
ActionScript, C, Java, .NET, Perl, PHP, Python, Ruby etc.
D
r
.
S
a
b
i
n
B
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
D
r
.
S
a
b
i
n
B
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 deschis
via o suita de aplicatii Web colaborative: wiki-uri
alaturi de Wikipedia,
exista Wiktionary, Wikinews, Wikibooks, Wikiquote,
Wikisource, Wikiversity, Wikispecies, Wikimedia etc.
D
r
.
S
a
b
i
n
B
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)
D
r
.
S
a
b
i
n
B
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 generala
http://mituzas.lt/uc/workbook2007.pdf
D
r
.
S
a
b
i
n
B
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
avansat
D
r
.
S
a
b
i
n
B
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 media
si serverele de aplicatii
exemple de operatii uzuale:
store, publish, delete, generate thumbnail
avansat
D
r
.
S
a
b
i
n
B
u
r
a
g
a
w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o
rezumat
programare Web la nivel de server
cookie-uri & sesiuni
servere de aplicatii Web
arhitectura generica a unei aplicatii Web
D
r
.
S
a
b
i
n
B
u
r
a
g
a
w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o
?