web - web programming

73
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/ Tehnologii Tehnologii Web Web <?xml version=“1.0” ?> <curs desc=“…” /> Tehnologii Web Dr. SabinCorneliu Buraga Facultatea de Informatica Universitatea “A.I.Cuza” – Iasi, Romania http://www.infoiasi.ro/~busaco/

Upload: sabin-buraga

Post on 29-Nov-2014

1.112 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Tehnologii Web

Dr. Sabin­Corneliu BuragaFacultatea de Informatica

Universitatea “A.I.Cuza” – Iasi, Romania

http://www.infoiasi.ro/~busaco/

Page 2: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Programare Web

ServereServere de de aplicatiiaplicatii Web. Web. SesiuniSesiuniArhitecturaArhitectura aplicatiiloraplicatiilor WebWeb

DetaliiDetalii in in [[TX, 269TX, 269‐‐274]274] [CGI, 55[CGI, 55‐‐58] [AW, 4658] [AW, 46‐‐7070]]

Page 3: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

“Orice intrare trebuie platita.”

Mihai Giugariu

Page 4: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Caracteristici comuneale serverelor de aplicatii Web

Cookie‐uri & sesiuni

Arhitectura unei aplicatii Web. Studii de caz

cuprins

Page 5: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Ofera, uzual, posibilitatea de a include cod (script)direct in cadrul documentelor Web,

cod invocat pe servergenerarea de continut dinamic pe partea de server

servere de aplicatii

Page 6: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Maniera de includere depindede serverul de aplicatii Web:<% ... %> pentru ASP / ASP.NET

<% ... %> pentru JSP (Java Server Pages)<?php ... ?> pentru PHP

<% ... %> pentru Ruby on Rails

Mai general: <script language="...">...</script>

servere de aplicatii

Page 7: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Limbaj(e) de programareAPI‐ul de baza

Suport pentru baze de dateSuport pentru interactiuneaWebSuport pentru cookie‐uri & sesiuniSuport pentru procesari XML

Medii de dezvoltareAlte facilitati particulare

servere de aplicatii: facilitati

Page 8: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Limbaj(e) de programareVBScript & JScript (ASP)limbajele .NET (ASP.NET) 

ASP.NET este independent de limbaj, fiind parte a .NET Framework

Java (servlet‐uri, JSP)Python (Zope)Ruby (Ruby on Rails)altele

servere de aplicatii: facilitati

Page 9: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Limbaj(e) de programareStrong typed vs. weak typed(ASP.NET/JSP vs. ASP/PHP)

Utilizare de spatii de nume si instante de claseRaportare de erori (ASP, PHP4) vs.exceptii (ASP.NET, JSP, PHP5)

Pur obiectuale (ASP.NET, JSP) sau nu (PHP)Pot fi dinamice (e.g., Python, Ruby)Interpretate sau compilate (de cele mai multe ori, se prefera generarea de cod intermediar: IL – Intermediate Language)

servere de aplicatii: facilitati

Page 10: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

PlatformeWeb (Statistica SitePoint 2006/2007)

servere de aplicatii: facilitati

Page 11: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

API‐ul de bazaUtilizarea “puterii” limbajului si framework‐ului(functii/clase predefinite) 

securitate, consistenta, acces la resursele mediului de operare,migrare facila de la aplicatii clasice la cele Web

Poate asigura si independenta de platforma

servere de aplicatii: facilitati

Page 12: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

API‐ul de bazaPHP Built­in functions vs.ASP.NET CLR (Common Language Runtime) / JSP

Functionalitatile incluse in API‐ul de bazanu necesita recompilarea serverului de aplicatii

servere de aplicatii: facilitati

Page 13: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Suport pentru baze de dateADO.NET / LINQ pentru ASP.NETJDBC (Java DataBase Connectivity) pentru JSPFunctii PHP predefinite pentru o pleiada de RDBMS,via biblioteci incorporate (SQLite si mysqli in PHP5)sau extensii; se poate utiliza si interfata ODBC

servere de aplicatii: facilitati

Page 14: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Suport pentru baze de date“Legarea” datelor de program (data binding) realizata automat (ASP.NET) sau manual (PHP)

Se pot folosi framework‐uri aditionale(e.g., Hibernate – Java)

servere de aplicatii: facilitati

Page 15: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Suport pentru interactiunea WebControale Web disponibile pe server, fie emulind cimpurile din formularele (X)HTML, fie oferind controale noi (e.g., calendar)generarea de cod HTML (+JavaScript)in functie de client ASP.NET (<asp:control>), PHP 5 via PRADOsimilar, pentru platforma Java (e.g., JavaServer Faces)

servere de aplicatii: facilitati

Page 16: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Suport pentru interactiunea WebProcesarea evenimentelor provenind de la client(ASP.NET) – event driven Web applications

Transferuri asincrone prin AJAX(eventual, via module/clase aditionale)

servere de aplicatii: facilitati

Page 17: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Suport pentru procesari XMLProcesari prin DOMProcesari prin SAXProcesari via o interfata simplificata(ASP.NET, PHP5)

Alte tipuri de procesari – e.g., XPP (Java)Transformari XSL Validare (DTD, XML Schema,…)Suport pentru invocare/dezvoltare de servicii WebXML data binding (ASP.NET, JSP)

servere de aplicatii: facilitati

Page 18: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Medii de dezvoltareUnele, foarte sofisticateComerciale (Visual Studio .NET, Zend,...)De evaluare, educationale ori gratuite(e.g., Eclipse, Visual Web Developer Express)

Depanatoare, optimizatoare de cod (e.g., Zend Optimizer), profilers si altele

Facilitati pentru dezvoltatorii de servicii WebClase/componente/biblioteci aditionale(comerciale ori gratuite)

servere de aplicatii: facilitati

Page 19: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Medii de dezvoltare (Statistica SitePoint 2006/2007)

servere de aplicatii: facilitati

Page 20: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Suport acordat inginerilor softwareAplicatii N‐tierSe incurajeaza folosirea sabloanelor de proiectare(design patterns): Container, MVC (Model­View­Controller), Proxy, Configuration Parameters, Invocation Context,…Unitati de testare automata – cadrul general dat de XUnit (JUnit, PHP Unit, NUnit,...)

servere de aplicatii: facilitati

Page 21: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Suport acordat inginerilor softwareGenerarea automata de documentatii, in diverse formateSuport pentru source control– code review, versioning (CVS, Subversion,…)

Pot folosi o paradigma (e.g., agile programming)

servere de aplicatii: facilitati

Page 22: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

servere de aplicatii: facilitati

Page 23: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

AlteleDezvoltarea de aplicatii Web complexe

descrierea atributelor unei pagini/sit (limbaj, import, sesiuni, tratare de evenimente, tip de continut,...)

modul de autentificaretema vizuala (skin)sabloane de vizualizare (template‐uri) etc.<%@ directiva ... %> (ASP.NET, JSP)

servere de aplicatii: facilitati

Page 24: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

AlteleAplicatiileWeb pot folosi containere de componenteSuport pentru arhitecturi/platforme avansatede tip enterprise – e.g., SOA, workflow‐uri, Grid

servere de aplicatii: facilitati

Page 25: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Tendinte conform Google Trends – februarie 2008

servere de aplicatii: facilitati

Page 26: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Mecanism standard care permite ca un server Web sa trimita anumite informatii pe calculatorul unuiclient (utilizator), prin intermediul browser‐ului,sa ceara clientului sa stocheze aceste informatiipentru ca, ulterior, navigatorul sa returneze

informatiile spre serverul WWW 

cookie‐uri

Page 27: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Mijloc persistent de stocare a datelor pe masinaclientului Web cu scopul de a fi accesate ulterior

de pe server 

cookie‐uri

Page 28: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Memorarea preferintelor utilizatorilor Completarea automata a formularelor Stocarea informatiilor de autentificareTranzactii in cadrul comertului electronic Managementul sesiunilor Web

…si multe altele

cookie‐uri: utilizari

Page 29: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Cookie‐uri persistentenu vor fi distruse la inchiderea navigatorului,ci vor fi memorate intr‐un fisier, perioada lor deviata fiind stabilita de creatorul cookie‐urilor

Cookie‐uri nepersistentedispar la inchiderea browser‐ului

cookie‐uri: tipuri

Page 30: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Un cookie consta dintr‐o pereche nume=valoareValoarea este un sir de caractere codificat in maniera URL‐urilor

Datele referitoare la un cookie vor fi receptionatede navigator care mentine o lista de cookie‐uriapartinind serverului care le‐a trimis

Un cookie este trimis unui client incluzindcimpul‐antet Set-Cookie intr‐un raspuns HTTP

cookie‐uri

Page 31: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Set-Cookie: nume=valoare; expires=data; path=cale; domain=domeniu; secure

cookie‐uri

Page 32: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Set-Cookie: nume=valoare; expires=data; path=cale; domain=domeniu; secureexpires – indica data si timpul cind cookie‐ulva expira si va fi sters de pe disc 

cookie‐uri

Page 33: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Set-Cookie: nume=valoare; expires=data; path=cale; domain=domeniu; securedomain – desemneaza numele simbolic al serverului care a generat cookie‐ul

cookie‐uri

Page 34: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Set-Cookie: nume=valoare; expires=data; path=cale; domain=domeniu; securepath – specifica un subset de URL‐uridin domeniul corespunzator unui cookie

cookie‐uri

Page 35: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Set-Cookie: nume=valoare; expires=data; path=cale; domain=domeniu; securesecure – indica faptul ca acest cookie este transmisdoar daca tranzactia este sigura (via HTTPS)

cookie‐uri

Page 36: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Un cookie e transmis doar daca intruneste toate conditiile de validitate – se potrivesc domeniul, calea de directoare, 

timpul de expirare si securitatea canalului de comunicatie

Serverul va primi de la client, in antetul HTTP, o linie de forma: 

Cookie: nume1=valoare1; nume2=valoare2...

cookie‐uri

Page 37: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

cookie‐uri

Invocarea script‐ului conduce la returnareaunei reprezentari + setarea de cookie‐uri

Server Web

Client Web

cerere HTTPinvocare script

răspuns HTTPSet-Cookie: culoare=verde

Script

Page 38: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

cookie‐uri

Cookie‐urile – persistente sau nu – sunt memoratela nivel de browser

Server Web

Client Web

culoare=verde

Script

Page 39: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

cookie‐uri

Urmatorul acces la script se face cu transmitereacookie‐urilor spre server

conform conditiilor de validitate

Server Web

Client Web

cerere HTTPCookie: culoare=verde

răspuns HTTP

Script

Page 40: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Stocarea cookie‐urilor persistente:Netscape/Mozilla (fisierul cookies sau cookies.txt)

domeniu acces cale securitate expirare nume valoarelocalhost FALSE / FALSE 966862979 culoare verde localhost FALSE / FALSE 966782841 alta_culoare albastra.uaic.ro FALSE /doc FALSE 969367226 accesari 3

cookie‐uri: stocare

Page 41: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Stocarea cookie‐urilor persistente: Internet Explorer – fisiere denumite [email protected]

[email protected] AnEFromrel_clientwww.elsevier.com/ 0 3415826816 29364629 4113724112 29364628 *

cookie‐uri: stocare

Page 42: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Pentru CGI (bash):

#!/bin/bashecho "Set-Cookie: culoare=verde; path=/; expires=Mon, 06-May-2008 07:33:00 GMT"

...

cookie‐uri: creare

Page 43: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Cazul PHP – functia setcookie()

<?phpsetcookie ("alta_culoare", "albastra"); echo "Un cookie de culoarea " . $_COOKIE["alta_culoare"];

?>

cookie‐uri: creare

Page 44: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Se anuleaza valoarea si timpul, eventual resetindu‐se si celelalte atribute ale cookie‐ului

Exemplu – pentru PHP:

<?phpsetcookie ($nume_cookie, "", 0, "/", "", 0);

?>

cookie‐uri: expirare

Page 45: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Cookie‐urile se regasesc in variabila‐antetHTTP_COOKIE

Pentru PHP – cookie‐ul este vazut ca o variabila: $_COOKIE['nume_cookie']

cookie‐uri: consultare

Page 46: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Exemplu pentru CGI (Perl)

@cookieuri = split(/;/, $ENV{'HTTP_COOKIE'}); foreach $pereche (@cookieuri) { ($nume, $val) = split(/=/, $pereche); $cookie{$nume} = $val;

} $fundal = $cookie{'alta_culoare'};

cookie‐uri: consultare

Page 47: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

ASP.NET – proprietatea Cookies a colectieiHttpCookieCollection (vezi HttpRequest siHttpResponse 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);

cookie‐uri: manipulare

Page 48: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

HTTP este un protocol stateless, neputind oferi informatii daca anumite cereri

succesive provin de la acelasi client(eventual, de la aceeasi instanta a navigatorului)

sesiuni

Page 49: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Apare necesitatea de a prezerva anumite datede‐a lungul mai multor accesari inrudite

Exemple: starea cosului de cumparaturi,

formulare Web completate in mai multi pasi, paginarea continutului, starea autentificarii

etc.

sesiuni

Page 50: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Orice vizitator al sitului va avea asociatun identificator unic – session ID (SID)Stocat intr‐un cookie ori propagat via URL

Unei sesiuni i se pot asocia diverse variabilesa fie mentinute intre accesari consecutive

sesiuni

Page 51: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

O sesiune se poate inregistra (initia)implicit sau explicit, in functie de serverulde aplicatii ori de configuratia stabilita

Unele servere de aplicatii garanteazaintegritatea sesiunii si dupa o restartare

(a serverului sau a aplicatiei)

sesiuni

Page 52: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

PHP – functiile session_start(), session_register(),session_id(), session_unregister(), session_destroy()

<?phpsession_start();if (!isset($_SESSION['accesari'])) {

$_SESSION['accesari'] = 0; } else {$_SESSION['accesari']++; }

?>

sesiuni: programare

Page 53: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

ASP.NET – vezi HttpSession (System.Web)Ofera suport si pentru evenimente de sesiune

Exemplu: 

nume = Session["Nume"].ToString ();

sesiuni: programare

Page 54: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

intrebare

Care este arhitectura unei aplicatii Web?

Page 55: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

arhitectura aplicatiilor web

Uzual, implica trei strate (3­tier application)

Internet(Web)

Client Server de aplicatii Stocare

Page 56: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

arhitectura aplicatiilor web

Sponge / Database

Jelly / Business Logic

Custard / Page Logic

Cream / Markup

Fruit / Presentation

C. Henderson, “C. Henderson, “Scalable Web ArchitecturesScalable Web Architectures”, Web 2.0 Expo, 2007: ”, Web 2.0 Expo, 2007: iamcal.com/talks/iamcal.com/talks/

Page 57: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

arhitectura aplicatiilor web

Sponge / Database

Jelly / Business Logic

Custard / Page Logic

Cream / Markup

Fruit / Presentation

C. Henderson, “C. Henderson, “Scalable Web ArchitecturesScalable Web Architectures”, Web 2.0 Expo, 2007: ”, Web 2.0 Expo, 2007: iamcal.com/talks/iamcal.com/talks/

Page 58: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

studiu de caz: flickr

Scop:partajarea on­line a fotografiilor

bazata pe retele socialeagregare de comunitati

suport pentru adnotari (tagging)

Page 59: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

studiu de caz: flickr

Interactiune facila cu utilizatorul

Interactiune cu alte aplicatii (via API‐uri deschise)

Unicodeinternationalization (I18n) & localization (L10n)

Page 60: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

studiu de caz: flickr

Servere de baze de date

ServereWeb

Servere de stocare

Internet (Web)

Page 61: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

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)

Volum: ~60000 linii de cod propriu‐zis (in 2006)

Page 62: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Page 63: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Page 64: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

studiu de caz: flickr

API‐uri – vezi www.flickr.com/services/api/.NETPerlPHPPython

ActionScriptetc.

Page 65: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

studiu de caz: flickr

Page 66: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

studiu de caz: wikimedia

Scop: suita de aplicatii Web colaborative

oferind continut deschis

alaturi de Wikipedia, exista Wiktionary, Wikinews, Wikibooks, Wikiquote, Wikisource, Wikiversity, Wikispecies, Wikimedia

Page 67: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

studiu de caz: wikimedia

Continutul este distribuit prin intermediulCDN – Content Distributed Network

sistem de cachingWeb permitind echilibrarea incarcarii(load balancing) pe baza de criterii geografice

caching avansat – pe niveluri –al continutului preponderent static

Page 68: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

studiu de caz: wikimedia

Tehnologii: MediaWiki(sistemulwiki utilizat pentru toate serviciile)

PHP (platforma pe care ruleaza MediaWiki)MySQL (solutia principala de stocare)ImageMagick, DjVu, TeX, rsvg, ploticus etc. (pentru continuturi grafice in MediaWiki)

Lucene (indexare textuala, facilitind cautarea)Linux (platforma de rulare)

Page 69: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

studiu de caz | wikimedia

Page 70: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

studiu de caz: wikimedia

Datele persistente se stocheaza in 3 forme:Meta‐date (categorii de articole, legaturi cu altele, istoricul reviziilor) + conturi de utilizatori + setaristocate in bazele de date principale (core DBs)

Textul aflat sub revizia utilizatorilor este stocatin cimpuri blob in external storage

Fisierele statice (imagini) se memoreazaseparat pe image server; meta‐datele acestora sint stocate in core DBs

Core DBs sint replicate

Page 71: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

studiu de caz: wikimedia

API‐uri bazate pe HTTP pentru comunicareadintre serverele de stocare media 

si serverele de aplicatii

Operatii: store, publish, delete, generate thumbnail

Page 72: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

rezumat

Programare Web la nivel de serverCaracteristici comune ale serverelor de aplicatii Web

Cookie‐uri & sesiuniStudii de caz

Page 73: Web - Web programming

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

??