SlideShare une entreprise Scribd logo
1  sur  130
Télécharger pour lire hors ligne
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Tehnologii Web
programare Web (II)
de la MVC la arhitecturi Web și studii de caz
Dr. Sabin Corneliu Buraga – profs.info.uaic.ro/~busaco/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
„Simplitatea este o complexitate rezolvată.”
Constantin Brâncuși
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Aplicații Web
sisteme software complexe,
în evoluție permanentă
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Realitate
mijloace multiple de interacțiune Web cu utilizatorul
mobil laptop PC tabletă (smart) TV ecran urban
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Realitate
mijloace multiple de interacțiune Web cu utilizatorul
mobil laptop PC tabletă (smart) TV ecran urban
plus, noii veniți:
🎮 game console ⌚ smart watch 👟 smart clothing
🔌smart appliances 🏡 smart home 🚗 smart transportation
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Realitate
creșterea masei de utilizatori,
având așteptări tot mai mari din partea software-ului
de la conținut (hiper)textual 🔗
la aplicații Web sociale 👥 + interacțiune naturală 👏👂
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Realitate
suportul privind dezvoltarea de aplicații
(limbaje, API-uri, biblioteci de cod, instrumente,...)
oferit de platforma hardware/software
la nivel de server(e) și/sau de client(i)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Realitate
neadaptare la cerințele economice (de tip business)
🛠 development vs. 📝 marketing vs. 👔 management
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Realitate
privind proiectele Web de anvergură
întârzieri în lansare
neîncadrare în buget
lipsa funcționalității
calitatea precară a aplicației
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
adaptare după Crumlish & Malone, 2009
scopuri
psihologie
comportament
⧉ 💡 
interacțiune
controale
limbi naturale
funcționalități
tehnologii
algoritmi
indexare
structurare
meta-date
instrumente
metodologii
stimuli
utilizatori interfață software conținut creatori
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
evoluția manierei de
dezvoltare a produselor
digitale (software)
Alan Cooper et al., 2014
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Asigurarea calității aplicațiilor Web
corectitudine și robustețe (reliability)
extindere + reutilizare (modularitate)
compatibilitate
eficiență (asigurarea performanței)
portabilitate
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Asigurarea calității aplicațiilor Web
facilitarea interacțiunii cu utilizatorul (usability)
funcționalitate
relevanța momentului lansării (timeliness)
mentenabilitate
securitate
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Asigurarea calității aplicațiilor Web
alte aspecte de interes:
integritate
reparabilitate
verificabilitate – inclusiv monitorizare (logging)
economie
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Asigurarea calității aplicațiilor Web
esențialmente, de considerat:
preluarea și dirijarea cererilor – dispatch
oferirea funcționalităților de bază – core services
asocierea dintre construcții/abstracțiuni software
(e.g., obiecte) și modele de date – mapping
managementul datelor – data
monitorizarea și evaluarea sistemului – metrics
adaptare după Matt Ranney, “What I Wish I Had Known
Before Scaling Uber to 1000 Services”, GOTO Chicago 2016
highscalability.com/blog/2016/10/12/lessons-learned-from-scaling-uber-to-2000-engineers-1000-ser.html
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Necesități
scopuri + cerințe clar specificate
dezvoltarea sistematică, în faze, a aplicațiilor Web
planificarea judicioasă a etapelor de dezvoltare
controlul permanent al întregului proces de dezvoltare
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Necesități
scopuri + cerințe clar specificate
dezvoltarea sistematică, în faze, a aplicațiilor Web
planificarea judicioasă a etapelor de dezvoltare
controlul permanent al întregului proces de dezvoltare
inginerie Web
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
În ce mod dezvoltăm o aplicație Web?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
modelare
Uzual, se recurge la o metodologie
se preferă abordările conduse de modele
(MDA – model-driven architecture)
www.omg.org/mda/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
avansat
Robert Baxley
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
dezvoltarea aplicațiilor Web
Cerințe (requirements)
Analiză & proiectare (software design)
Implementare (build)
Testare (testing)
Exploatare (deployment)
Mentenanță (maintenance)
Evoluție (evolution)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Methodologies
Jesse Garrett, The Elements of User Experience (2nd Edition), New Riders, 2011
aplicație Web
(produs software)
funcționalitate
+
informații oferite
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
dezvoltarea aplicațiilor Web
programare (server + client)
creare/adaptare
de conținut
mentenanță
testare
documen-
tare
arhitectura info
+ navigarecerințe
public beta lansare
www.webpagefx.com/blog/web-design/agile/
actualmente, sunt preferate metodologii agile
www.infoq.com/process-practices/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
dezvoltarea aplicațiilor Web
Metodologii moderne – exemple:
aim42 – practici și șabloane privind evoluția, mentenanța,
migrarea și îmbunătățirea sistemelor software
aim42.github.io
12 Factor App – vizând aplicațiile aliniate
paradigmei SaaS (Software As A Service)
12factor.net
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
start with needs
do less
design with data
do the hard work to make it simple
iterate. then iterate again
build for inclusion
understand context
build digital services, not Websites
be consistent, not uniform
make things open; it makes things better
dezvoltarea aplicațiilor Web: principii
exemplu pentru gov.uk – Paul Downey & David Heath (2013)
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Stabilirea standardelor de calitate
cerințe
context
con-
tentusers
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Obținere / licitare / negociere
a conținutului (datelor) și/sau codului-sursă
drepturi de autor – copyright
versus
cod deschis (Open Source Licenses)
www.opensource.org/licenses/category
+
date deschise
Creative Commons – www.creativecommons.org/licenses/
cerințe
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
detalii despre licențele de utilizare
a software-ului/datelor la tldrlegal.com
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Documentare privind domeniul aplicației Web
cu atragerea experților
– subject matter expert (SME) sau domain expert –
în domeniul problemei
ce trebuie soluționată de aplicația Web
cerințe
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
cerințe: exemple
Viziune (big idea)
Basecamp: “solves the critical problems
that every growing business deals with”
Vimeo: “Watch, upload and share HD and 4K videos
with no ads”
Wikidata: “a free and open knowledge base
that can be read and edited by both humans and machines”
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
cerințe: exemple
Punctele de plecare în dezvoltarea Flickr
presupuneri inițiale (assumptions):
oamenilor le place să-și împărtășească amintirile
folosirea succesului blogging-ului
partajarea nu doar a însemnărilor,
ci și a fotografiilor (personale)
suport pentru realizarea de comentarii + tagging
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
noi tipuri de cerințe
Privitoare la conținut
audiența – e.g., internaționalizare
context de navigare
preferințe
disponibilitate permanentă (7 zile, 24 de ore/zi)
recurgerea la surse eterogene de date
căutare, filtrare, recomandare
etc.
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
noi tipuri de cerințe
Interacțiunea cu utilizatorul în contextul Web
inclusiv vizând Web-ul social
content mash-up
“it’s yours to take, re-arrange and re-use”
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
noi tipuri de cerințe
Privitoare la mediul de execuție
(in)dependența de navigatorul Web
wired vs. wireless
on-line vs. off-line
suport pentru diverse standarde HTML
interactivitate multi-dispozitiv (responsive Web design)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
noi tipuri de cerințe
Referitoare la evoluție
utilizatorii sunt capabili să exploateze aplicația Web
fără a trebui s-o (re)instaleze pe calculator/dispozitiv
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
noi tipuri de cerințe: aspecte de interes
inițial:
oferirea funcționalităților esențiale – less is more
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
noi tipuri de cerințe: aspecte de interes
inițial:
oferirea funcționalităților esențiale – less is more
versiuni ulterioare:
extinderea aplicației Web
– uzual, via o interfață de programare (API) publică,
încurajând dezvoltarea de soluții propuse de utilizatori
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi
Calitatea aplicațiilor Web este influențată
de arhitectura pe care se bazează
Martin Fowler, Software Architecture Guide (2019)
martinfowler.com/architecture/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi
Web application architecture
body of code
that’s seen by developers as a single unit
group of functionality
that business customers see as a single unit
initiative
that those with the money see as a single budget
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi
Dezvoltarea unei arhitecturi software ia în calcul:
cerințe funcționale
impuse de clienți,
vizitatori,
concurență,
factori decizionali (management),
evoluție socială/tehnologică,
…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi
Dezvoltarea unei arhitecturi software ia în calcul:
factori calitativi
utilizabilitate
performanță
securitate
refolosire a datelor/codului
etc.
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi
Dezvoltarea unei arhitecturi software ia în calcul:
aspecte tehn(olog)ice
platforma hardware/software (sistem de operare)
infrastructura middleware
servicii disponibile – e.g., via API-uri publice
limbaj(e) de programare
sisteme tradiționale (legacy)
…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi
Dezvoltarea unei arhitecturi software ia în calcul:
experiența
recurgerea la arhitecturi și platforme existente
șabloane de proiectare (design patterns)
soluții „la cheie”: biblioteci, framework-uri, instrumente,…
management de proiecte
etc.
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
client(i)
mandatar (proxy)
zid de protecție (firewall)
intermediar(i) (middleware)
server(e) Web
server(e) de aplicații Web
cadre de lucru, biblioteci, alte componente
server(e) de stocare persistentă – e.g., baze de date
server(e) de conținut multimedia
server(e) de management al conținutului – e.g., CMS, wiki
aplicații/sisteme tradiționale (legacy)
„ingrediente” tipice
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
client(i)
mandatar (proxy)
zid de protecție (firewall)
intermediar(i) (middleware)
server(e) Web
server(e) de aplicații Web
cadre de lucru, biblioteci, alte componente
server(e) de stocare persistentă – e.g., baze de date
server(e) de conținut multimedia
server(e) de management al conținutului – e.g., CMS, wiki
aplicații/sisteme tradiționale (legacy)
eventual, recurgând la servicii în „nori” – cloud computing
partajarea la cerere a resurselor de calcul și a datelor cu alte
calculatoare/dispozitive pe baza tehnologiilor Internet (găzduire,
infrastructură scalabilă, procesare paralelă, monitorizare,…)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Există anumite „rețete”
privind dezvoltarea de aplicații Web?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
proiectare
Pattern (șablon)
regulă ce exprimă o relație
dintre un context, o problemă și o soluție
considerând punctul de vedere al unui expert
context
problemă soluție
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
proiectare
Specificarea și/sau „recunoașterea” unui pattern
poate avea loc la diverse niveluri:
prezentare a datelor – UI, user interaction, visualization,…
procesare – business logic, scripting etc.
integrare a componentelor – code library development
stocare a datelor – database queries, database design,…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
proiectare
Exemple de colecții de șabloane
(pattern repositories)
privind proiectarea de software
wiki.c2.com/?DesignPatterns
patterns of enterprise application architecture
martinfowler.com/eaaCatalog/
interacțiunea cu utilizatorul (Adele – a repository of
publicly available design systems and pattern libraries)
adele.uxpin.com
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
proiectare
Web Patterns
Model View Controller
Page Controller
Front Controller
Template View
Transform View
Application Controller
M. Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley (2003)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
proiectare
Session State Patterns
Client Session State
Server Session State
Database Session State
M. Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley (2003)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
proiectare
Data Source Architectural Patterns
Table Data Gateway
Row Data Gateway
Active Record
Data Mapper
M. Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley (2003)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
aplicație Web = interfață + program + conținut (date)
trei strate (3-tier application)
Client Server de aplicații Stocare
(interface) (application) (persistence)
Internet
(Web)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Blat / Baza de date
Jeleu / Funcționalitate
Cremă / Rol specific
Frișcă / Marcaje
Fructe / Prezentare
C. Henderson, Scalable Web Architectures, Web 2.0 Expo, 2007: iamcal.com/talks/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
persistence
application
interface
C. Henderson, Scalable Web Architectures, Web 2.0 Expo, 2007: iamcal.com/talks/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi web
Modelul de structurare a datelor este separat
de maniera de procesare
(controlul aplicației, business logic) și
de modul de prezentare a acestora (interfața Web)
principiu:
demarcarea responsabilităților
(separation of concerns)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi web: mvc
Majoritatea aplicațiilor Web sunt dezvoltate
conform MVC (Model-View-Controller)
Trygve Reenskaug, 1979
heim.ifi.uio.no/~trygver/1979/mvc-2/1979-12-MVC.pdf
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi web: mvc
View
(prezentare + interacțiune)
Model
(structura datelor)
Controller
(procesare)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi web: mvc
View
la nivel de client(i) – e.g., Web
Model
stocare persistentă
Controller
aplicație (server și/sau client)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi web: mvc
View
la nivel de client(i) – e.g., Web
Model
stocare persistentă
Controller
aplicație (server și/sau client)
😍 ↔ ⧉
HTML, CSS, SVG,
MathML, WebGL, WebXR etc.

(No)SQL, JSON,
XML (XQuery), RDF (SPARQL),…
💡
servere de aplicații, framework-uri
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi web: mvc
Poate fi implementat și într-un limbaj neorientat-obiect
încurajat/impus de framework-uri Web specifice
exemplificări diverse:
ASP.NET MVC (C# et al.), Catalyst (Perl), ColdBox (ColdFusion),
Django (Python), FuelPHP, Grails (Groovy), Laravel (PHP),
Lift (Scala), Rails (Ruby), Sails (Node.js), TurboGears (Python),
Yesod (Haskell), Wicket (Java), Wt (C++), Zikula (PHP), ZK (Java)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi web: mvc
Controller
responsabil cu preluarea cererilor de la client
(cereri GET/POST emise pe baza acțiunilor utilizatorului)
gestionează resursele necesare satisfacerii cererilor
uzual, va apela un model conform acțiunii solicitate
și, apoi, va selecta un view corespunzător
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi web: mvc
Model
resursele gestionate de software – utilizatori, mesaje,
produse etc. – au modele specifice
desemnează datele + regulile (i.e. restricțiile)
vizând dateleconcepte manipulate de aplicația Web
oferă controller-ului o reprezentare a datelor solicitate
și e responsabil cu validarea datelor menite a fi stocate
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi web: mvc
View
furnizează diverse maniere de prezentare a datelor
furnizate de model via controller
pot exista view-uri multiple,
alegerea lor fiind realizată de controller
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi web: mvc
etape tipice:
(1) cerere trimisă de client – e.g., navigator Web,
(2) dirijare (routing) a cererii către controller,
(3) recurgerea la un model, (4) furnizare date dorite,
(5) selectare a unui view, (6) transmitere conținut la client
Client Dispatcher Controller
Model
View
1 2
3 4
56
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi web: mvc
Arhitectura generică a unei aplicații Web
va consta dintr-un set de resurse referitoare la
controller, model și view
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi web: mvc
Arhitectura generică a unei aplicații Web
va consta dintr-un set de resurse referitoare la
controller, model și view
uzual, framework-ul Web folosit impune o anumită
structură a fișierelor aplicației ce va fi implementată
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
├───app
│ ├───assets
│ │ ├───images
│ │ ├───javascripts
│ │ └───stylesheets
│ ├───controllers
│ ├───helpers
│ ├───mailers
│ ├───models
│ └───views
│ └───layouts
├───config
├───db
├───doc
├───lib
├───log
├───public
├───script
├───test
│ ├───fixtures
│ ├───functional
│ ├───integration
│ ├───performance
│ └───unit
├───tmp
├───vendor
└───plugins
„scheletul” unei aplicații Web
create în Ruby on Rails
rubyonrails.org
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
├───app
│ ├───Config
│ ├───Console
│ ├───Controller
│ ├───Lib
│ ├───Locale
│ ├───Model
│ │ ├───Behavior
│ │ └───Datasource
│ ├───Plugin
│ ├───Test
│ ├───tmp
│ ├───Vendor
│ ├───View
│ │ ├───Elements
│ │ ├───Errors
│ │ ├───Helper
│ │ ├───Layouts
│ │ ├───Pages
│ │ └───Scaffolds
│ └───webroot
│ ├───css
│ ├───files
│ ├───img
│ └───js
├───lib
├───plugins
└───vendors
structura de directoare
în cazul unei aplicații Web
folosind framework-ul
CakePHP
cakephp.org
altele: CodeIgniter, FuelPHP,
Laravel, Symfony, Yii
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
├───app
│ ├───assets
│ │ ├───javascripts
│ │ └───stylesheets
│ │ ├───apps
│ │ ├───libs
│ │ └───main
│ ├───controllers
│ ├───models
│ └───views
├───conf
├───project
└───public
├───images
│ └───icons
└───javascripts
structura de directoare în cazul unei aplicații Web
ce recurge la framework-ul Play pentru Java și Scala
www.playframework.com
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
structura proiectului software
pentru o aplicație ASP.NET MVC
www.asp.net/mvc
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitecturi web: mvc
Variante derivate:
HMVC (Hierarchical Model-View-Controller)
MVP (Model View Presenter)
MVVM (Model View ViewModel)
pentru detalii, a se studia
Herberto Graca, MVC and its alternatives (2017)
herbertograca.com/2017/08/17/mvc-and-its-variants/
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
(în loc de) pauză
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Prin ce mijloace poate fi implementată
o aplicație Web?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
implementare
Server de aplicații Web
scop:
eficientizarea proceselor de dezvoltare
a aplicațiilor Web complexe
poate încuraja sau impune o viziune arhitecturală
privind dezvoltarea de aplicații Web – e.g., MVC ori variații
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitectura aplicațiilor Web:
abordarea MV* tradițională
www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
brow-
ser
prezen-
tare
proce-
sare
abstrac-
tizare
date
pagini <Web/>
HTML, CSS,…
server „gras”
(fat)
client „prostuț”
(dumb)
frontend backend
generarea de conținut
la nivel de server Web
uzual, aplicație monolitică
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitectura aplicațiilor Web:
abordarea MV* tradițională
brow-
ser
prezen-
tare
proce-
sare
abstrac-
tizare
date
pagini <Web/>
HTML, CSS,…
server „gras”
(fat)
client „prostuț”
(dumb)
frontend backend
principiu de proiectare:
layers of isolation
modificările operate la un anumit strat nu au impact
sau nu afectează componentele din alt strat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
implementare
Framework (cadru de lucru)
facilitează dezvoltarea de aplicații Web complexe,
simplificând unele operații uzuale
(e.g., acces la baze de date, caching, generare de
cod, management de sesiuni, control al accesului)
și/sau încurajând reutilizarea codului-sursă
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
implementare
Diverse framework-uri care facilitează dezvoltarea de
aplicații Web la nivel de server:
ASP.NET: ASP.NET Core MVC
Java: Play, Spring, Sling, Struts, Tapestry, Wicket
JavaScript (Node.js): Express, Geddy, LoopBack, Meteor
Perl: Catalyst, Dancer, Mojolicious
Python: CherryPy, Django, Flask, TurboGears
Ruby: Padrino, Rails, Sinatra
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
implementare
Bibliotecă Web (library)
colecție de resurse computaționale reutilizabile
– i.e., structuri de date + cod –
oferind funcționalități (comportamente) specifice
implementate într-un limbaj de programare
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
implementare
Bibliotecă Web (library)
colecție de resurse computaționale reutilizabile
– i.e., structuri de date + cod –
oferind funcționalități (comportamente) specifice
implementate într-un limbaj de programare
poate fi referită de alt cod-sursă (software):
server de aplicații, framework, bibliotecă,
serviciu, API ori componentă Web
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Biblioteci cu acces liber la codul-sursă – exemple:
Apache PDFBox – pdfbox.apache.org
Beautiful Soup – www.crummy.com/software/BeautifulSoup
D3.js – d3js.org
Expat – libexpat.github.io
ImageMagick – www.imagemagick.org
libcurl – curl.haxx.se
Libxml2 – www.xmlsoft.org
OpenCV – opencv.org
Requests-HTML – github.com/kennethreitz/requests-html
TensorFlow.js – www.tensorflow.org/js/
zlib – www.zlib.net
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
implementare
Serviciu Web
software – utilizat la distanță de alte aplicații/servicii –
oferind o funcționalitate specifică,
frecvent via un API (Application Programming Interface)
implementarea sa nu trebuie cunoscută
de programatorul ce invocă serviciul
în cursurile viitoare
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
implementare
SDK (Software Development Kit)
încapsulează funcționalitățile API-ului într-o bibliotecă
(implementată într-un anumit limbaj de programare,
pentru o platformă software/hardware specifică)
API façade pattern
exemplu: Octokit (pentru .NET, Objective-C, Ruby)
oferit de Github – developer.github.com/v3/libraries/
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
implementare
Web component
parte a unei aplicații Web
ce include o suită de funcții înrudite
dezvoltare bazată pe o bibliotecă/framework JavaScript
e.g., calendar, cititor de fluxuri de știri,
buton de partajare a URL-ului în altă aplicație
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
implementare
Widget
aplicație – de sine-stătătoare sau
inclusă într-un container (e.g., un document HTML) –
ce oferă o funcționalitate specifică
rulează la nivel de client (platformă pusă la dispoziție
de sistemul de operare și/sau de navigatorul Web)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
implementare
(Web) app
o aplicație (Web) instalabilă
care folosește API-urile oferite de o platformă:
browser, server de aplicații, sistem de operare,…
a distributed computer software application designed for
optimal use on specific screen sizes and
with particular interface technologies
Robert Shilston, 2013
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Web browser
SPA
Single
Page
App
platform
(OS + device)
native
app
HTTP
Web Socket
adaptare după Adrian Colyer (2012)
aplicații
Web
și
servicii
(API-uri)
app store
☁ ☁
avansat
Google Drive app
for Android/iOS
drive.google.com Google Drive API
Google Drive SDK
for Java, Node.js, Python
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Add-on
denumire generică a aplicațiilor asociate unui browser
(extensii, teme vizuale, dicționare,
maniere de căutare pe Web, plug-in-uri etc.)
exemplificare: addons.mozilla.org
implementare
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
dezvoltare
Recurgerea la medii de dezvoltare
exemplificări – aplicații native (pentru desktop):
Anjuta, Aptana Studio, Eclipse, Emacs, IntelliJ IDEA,
KomodoIDE, Padre, PHPStorm, PyCharm, RubyMine,
Visual Studio, Zend Studio
soluții bazate pe cloud computing:
AWS Cloud9, Codenvy, Koding, RELP.it etc.
S. Buraga, „Cu codul în nori”: www.slideshare.net/busaco/cu-codul-n-nori
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
instrumente de
dezvoltare (IDE)
dezvoltare
rulare
mediu de execuție
(runtime environment)
cod-sursă stocat
(code repositories)
A.Iqbal,M.Haunsenblas,S.Decker(2012)
Development as a Service
☁
☁☁
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
instrumente de
dezvoltare (IDE)
dezvoltare
rulare
mediu de execuție
(runtime environment)
cod-sursă stocat
(code repositories)
☁
☁☁
Web: AWS Cloud9, Koding, Ideone etc.
desktop: Eclipse, Visual Studio (Code),…
BitBucket
GitHub
instrumente utile la github.com/ripienaar/free-for-dev
DigitalOcean, Google Cloud Platform, Heroku,
Jelastic, OpenStack, Windows Azure,…
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
dezvoltare
Generarea automată de documentații,
în diverse formate
instrumente specifice (documentation generators)
exemplificări:
Doc, Document! X, Doxygen,
JavaDoc, JSDoc, phpDocumentor
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
dezvoltare
Controlul versiunilor surselor de programe
(VCS – Version Control System)
code review, revision control, versioning
monitorizarea modificărilor asupra codului-sursă
realizate de o echipă de programatori
asupra aceleași suite de programe (codebase)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Instrumente client/server:
Apache Subversion – SVN
Microsoft Team Foundation Server – TFS
Soluții distribuite:
Git (implementat în bash, C și Perl)
git-scm.com
Mercurial (dezvoltat în Python)
mercurial.selenic.com
Rational Team Concert (oferit de IBM)
jazz.net/products/rational-team-concert/
Sisteme Web de găzduire de software
(SCM – source code management):
BitBucket – developer.atlassian.com/cloud/bitbucket
GitHub – developer.github.com
GitLab – about.gitlab.com/handbook/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
dezvoltare
Încurajarea/impunerea
unui stil de redactare a codului-sursă
la nivel de client:
HTML + CSS
www.oreilly.com/web-platform/free/files/little-book-html-css-coding-guidelines.pdf
JavaScript – profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html#week7
la nivel de server:
C# – github.com/dennisdoomen/csharpguidelines
Perl – perldoc.perl.org/perlstyle.html
PHP – www.php-fig.org/psr/psr-2/
Python – www.python.org/dev/peps/
Ruby – github.com/styleguide/ruby
Scala – docs.scala-lang.org/style/
pentru altele, de considerat google.github.io/styleguide/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
dezvoltare
Management de pachete software
căutare, instalare, compilare, verificare a dependențelor
exemplificări:
Bower, Composer, npm, NuGet, RubyGems, Yarn
de experimentat github.com/showcases/package-managers
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
dezvoltare
Suport pentru fluxuri de activități (workflow-uri)
eventual, realizate automat
„construirea” unei aplicații Web pornind
de la codul-sursă + componentele adiționale (build tool)
exemplificări:
Ant, Grunt, Gulp, make, Mimoza, Rake, tup, Yeoman
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
testare
Teste referitoare la codul-sursă
unități de testare automată – cadrul general dat de xUnit
HttpUnit, JUnit (Java), PHPUnit, xUnit.net (C#, F#),
Test::Class (Perl), unittest (Python), Unit.js
+
JSUnit, FireUnit, Mocha, Selenium etc.
la nivel de client
pentru amănunte, de parcurs xunitpatterns.com
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
testare
Teste specifice în contextul aplicațiilor Web
privind conținutul – structură, validare HTML, CSS,...
probleme la nivel de hipertext (e.g., broken links)
utilizabilitate – inclusiv accesibilitate, multi-lingvism
estetica interfeței Web – dificil de evaluat/testat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
testare
Teste specifice în contextul aplicațiilor Web
integrare a componentelor
gradul de disponibilitate permanentă și de flexibilitate
(evoluție continuă)
gradul de independență de dispozitiv – multi-screen
(număr mare de dispozitive + caracteristici potențiale)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
testare
Alte tipuri de testări:
privind performanța
încărcare (load), stressing, testare continuă, scalabilitate
studii de caz reale:
High Scalability – highscalability.com
Performance Planet – calendar.perfplanet.com
Web Performance Stats – wpostats.com
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
testare
Alte tipuri de testări:
referitoare la securitate
într-un
curs viitor
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
testare: exemplificare
Documente HTML – serviciul validator.w3.org
Foi de stiluri CSS – CSS Lint: csslint.net
Date JSON – validare via JSONLint
Documente XML – bine-formatate / valide
Script-uri pe partea client (JavaScript) via JS/ES Hint
Programe rulate la nivel de server – e.g., xUnit
Integritatea și accesul la sisteme de fișiere
Integritatea și accesul la sisteme de baze de date
Suport oferit de navigatorul Web – caniuse.com
Probleme de securitate – www.owasp.org
Aspecte vizând performanța aplicațiilor Web
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
exploatare
Publicarea sitului
server dedicat
versus
furnizor de găzduire Web (hosting)
soluție gratuită vs. comercială
timp de răspuns, scalabilitate, securitate, suport tehnic,...
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
exploatare
Mentenanța (administrarea) conținutului
obținerea, crearea, pregătirea, managementul,
prezentarea, procesarea, publicarea și reutilizarea
conținuturilor în manieră sistematică și structurată
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
exploatare: management
La nivel organizațional:
managementul cunoștințelor (knowledge management)
managementul relațiilor cu clienții
(CRM – Client Relationship Management)
planificarea resurselor
(ERP – Enterprise Resource Planning)
managementul workflow-urilor + business rules
integrarea aplicațiilor (EAI – Enterprise App Integration)
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
exploatare: management
La nivel tehnic:
managementul conținutului de către personal non-tehnic
pe baza principiului separation of concerns
sisteme de management al conținutului
(CMS – Content Management Systems)
instrumente colaborative
(e.g., enterprise wiki)
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
exploatare: management
Privind utilizatorul:
interacțiune Web – e.g., utilizabilitate
profs.info.uaic.ro/~busaco/teach/courses/hci/
șabloane de proiectare a aplicațiilor Web sociale
profs.info.uaic.ro/~busaco/teach/courses/hci/hci-film.html#week7
performanța Web la nivel de browser
profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html#week13
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
exploatare: analiza utilizării
Usage analysis
metode explicite
bazate pe date oferite de utilizator
e.g., chestionare și monitorizare (user testing),
analiza mesajelor de e-mail, reacții pe rețele sociale etc.
metode implicite
colectare automată a datelor de interes (user analytics)
uzual, folosind cookie-uri
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
exploatare: analiza utilizării
Usage analysis
construirea profilului utilizatorilor: Web usage mining
analiza fișierelor de jurnalizare a accesului
(e.g., access.log la Apache, AWStats,…)
măsurarea „popularității” sitului: viteză de încărcare,
numărul de accesări, timpul + durata de vizitare etc.
servicii de monitorizare/raportare
exemple: Google Analytics, WordPress Statistics
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
parametrii unui proiect web
obiectiv principal
durată
cost
abordare
tehnologii
procese
rezultat
resurse umane
profilul echipei
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
echipa proiectului Web
management
Web Project
Manager
funcționalitate
Software
Developer(s)*
Multimedia
Designer(s)
conținut (date)
Domain
Expert
Business
Expert
*frontend sau backend sau full-stack (frontend + backend)
www.slideshare.net/busaco/sabin-buraga-dezvoltator-web-2019
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Câteva exemplificări
privind arhitectura unor aplicații Web?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
studiu de caz: flickr
Scop:
partajare on-line a conținutului grafic (fotografii)
aplicație reprezentativă a Web-ului social
agregare de comunități – imaginea ca obiect social
suport pentru adnotări via termeni de conținut (tagging)
+ comentarii
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
studiu de caz: flickr – tehnologii
PHP (procesare – application logic, acces la API,
prezentare de conținut via Smarty, modul de e-mail)
Perl (validarea datelor)
Java (managementul nodurilor de stocare)
MySQL (stocare în format InnoDB)
ImageMagick (bibliotecă C de prelucrare de imagini)
Ajax (interacțiune asincronă)
Linux (platformă de rulare)
alte detalii la highscalability.com/flickr-architecture
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
arhitectura inițială – conform (Cal Henderson, 2007)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
studiu de caz: flickrinterfețe de programare (API-uri)
oferite de Flickr
facilitează accesul la serviciile Web
în cadrul aplicațiilor rulând
pe platforme variate
cereri via REST, XML-RPC, SOAP
răspunsuri REST, XML-RPC, SOAP, JSON
www.flickr.com/services/api/
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
aspecte generice vizând proiectarea sistemului:
categorii de resurse: user + picture
relații între instanțe de tip user – e.g., follow
relații între instanțe de tip user și picture
(make, depicts, comment, like,…)
asigurarea performanței:
timp de răspuns, arhitectură software scalabilă,
stocare persistentă scalabilă, optimizarea imaginilor
recomandarea resurselor (user/picture) de interes
detalii în articolul Create a Photo Sharing App (2016)
blog.gainlo.co/index.php/2016/03/01/system-design-interview-question-create-a-photo-sharing-app/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Scop: oferire de conținut video la cerere
(streaming) + televiziune Web (Web TV)
servicii disponibile pe dispozitive/platforme multiple
exploatare „în nori”
recurge și la tehnologii deschise
netflixtechblog.com
studiu de caz: netflix
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
studiu de caz: netflix
aspecte de interes:
conținut – filme, emisiuni TV,…
stocare + (de)codificare (transcoding)
difuzare adaptivă (adaptive streaming)
redare (playback) – suport pentru dispozitive eterogene
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
procesare backend Java, Python, Node.js (JavaScript)
procesare frontend React, WinJS (JavaScript)
sisteme de stocare
MySQL, Apache Cassandra,
Apache Hadoop, DynomiteDB etc.
servicii în „nori”
Amazon EC2 (procesare video)
Amazon S3 (stocare)
servicii SQL Amazon RDS (Relational DB Service)
servicii NoSQL Amazon DynamoDB
management de cod GitHub (implementat în Ruby + C)
integrare continuă Jenkins (implementare Java)
gestionare servere Apache Mesos (implementare C++)
distribuire de conținut
(content distribution network)
Open Connect CDN (FreeBSD, Nginx),
Akamai, Level 3, Limelight
monitorizare Boundary, LogicMonitor, Vector,…
highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html
stackshare.io/netflix/netflix
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
studiu de caz: netflix
avansat
privire de ansamblu asupra arhitecturii interne
Di Lin, Girish Lingappa & Jitender Aswani (2019)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Scop: aplicație Web pentru managementul
ciclului de dezvoltare software via Git
de la planificarea proiectului și gestiunea codului-sursă
până la integrare continuă și monitorizare
distribuit liber (community edition) – instalabil pe Linux –
ori prin subscripții (enterprise edition)
docs.gitlab.com/ee/development/architecture.html
about.gitlab.com/handbook/engineering/infrastructure/production-architecture/
studiu de caz: gitlab
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
studiu de caz: gitlab
reverse proxy: NGINX  server Web: Unicorn  stocare persistentă:
PostgreSQL (utilizatori, meta-date), Redis (sesiuni Web, cache, cozi
de mesaje)  acces la Git: Gitaly  procesare cozi de mesaje: Sidekiq
 monitorizare (metrici): Prometeus  infrastructură: Terraform
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Aplicație
Web
Procesare la nivel de server
(backend)
Stocare
persistentă
Amazon Perl, Java
MySQL (MariaDB),
Amazon DynamoDB,
Amazon SimpleDB,
Amazon ElastiCache
Coursera
Django (Python), Node.js
(JavaScript), Play (Scala)
MySQL,
Apache Cassandra
DuckDuck
Go
Node.js PostgreSQL
Facebook
Hack, PHP (HHVM), Tornado
(Python), Java, JavaScript
RocksDB, Presto,
Cassandra, Beringei
Forbes ASP.NET, Node.js, PHP 7, Ruby MySQL (MariaDB)
Google C++, Dart, Go, Java, Python BigTable, MariaDB
stackshare.io/stacks
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Aplicație
Web
Procesare la nivel de server
(backend)
Stocare
persistentă
Linkedin Grails (Java), JavaScript, Scala
MySQL, Oracle DB,
RocksDB, Hadoop
Lyft
PHP, Flask (Python),
Java, Go, C++
MongoDB,
DynamoDB, Redis
Medium Node.js, Go
Neo4j, DynamoDB,
Redis
Pinterest Django (Python), Java, Go
MySQL, Hadoop,
Apache HBase,
Redis, Memcached
Stack
Overflow
.NET Framework (C#) MS SQL Server, Redis
Sound
Cloud
Clojure, Scala, JRuby MySQL
stackshare.io/stacks
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
inspectarea tehnologiilor folosite de o aplicație Web
cu instrumentul WhatRuns
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
rezumat
💡programare Webinginerie Web
dezvoltarea aplicațiilor Web – aspecte esențiale
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
episodul viitor:
dezvoltarea de aplicații Web în PHP
Client
Web
cerere HTTP
(GET, POST,...)
răspuns
(reprezentare)
HTML, PNG, PDF,
SVG, Atom, ZIP,...
procesor
(engine)
Zend
server de
aplicații
PHP
programe
.php

resurse (externe)
Server Web

Contenu connexe

Tendances

Tendances (20)

Web 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de numeWeb 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
 
Ce înseamnă a fi dezvoltator Web (varianta 2014)
Ce înseamnă a fi dezvoltator Web (varianta 2014)Ce înseamnă a fi dezvoltator Web (varianta 2014)
Ce înseamnă a fi dezvoltator Web (varianta 2014)
 
Design (Web) responsiv
Design (Web) responsivDesign (Web) responsiv
Design (Web) responsiv
 
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni WebWeb 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
 
Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)
 
Dezvoltarea aplicațiilor Web (3/12): Arhitectura aplicaţiilor Web orientate s...
Dezvoltarea aplicațiilor Web (3/12): Arhitectura aplicaţiilor Web orientate s...Dezvoltarea aplicațiilor Web (3/12): Arhitectura aplicaţiilor Web orientate s...
Dezvoltarea aplicațiilor Web (3/12): Arhitectura aplicaţiilor Web orientate s...
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
 
Ce înseamnă să fii dezvoltator Web
Ce înseamnă să fii dezvoltator WebCe înseamnă să fii dezvoltator Web
Ce înseamnă să fii dezvoltator Web
 
25 de ani de Web
25 de ani de Web 25 de ani de Web
25 de ani de Web
 
CLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului WebCLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului Web
 
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
 
CLIW 2017-2018 (2/12) Arhitectura navigatorului Web
CLIW 2017-2018 (2/12) Arhitectura navigatorului WebCLIW 2017-2018 (2/12) Arhitectura navigatorului Web
CLIW 2017-2018 (2/12) Arhitectura navigatorului Web
 
CLIW 2017-2018 (9/12) Programare Web. Suita de tehnologii HTML5
CLIW 2017-2018 (9/12) Programare Web. Suita de tehnologii HTML5CLIW 2017-2018 (9/12) Programare Web. Suita de tehnologii HTML5
CLIW 2017-2018 (9/12) Programare Web. Suita de tehnologii HTML5
 
CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...
CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...
CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
 
WADe 2014—2015 (03/12): Arhitectura aplicaţiilor Web orientate spre servicii
WADe 2014—2015 (03/12): Arhitectura aplicaţiilor Web orientate spre serviciiWADe 2014—2015 (03/12): Arhitectura aplicaţiilor Web orientate spre servicii
WADe 2014—2015 (03/12): Arhitectura aplicaţiilor Web orientate spre servicii
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"
 
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de cazCLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
 

Similaire à Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web

Similaire à Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web (20)

Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
 
CLIW 2014—2015 (3/12): Design Web. Interacţiune, utilizabilitate & metodologi...
CLIW 2014—2015 (3/12): Design Web. Interacţiune, utilizabilitate & metodologi...CLIW 2014—2015 (3/12): Design Web. Interacţiune, utilizabilitate & metodologi...
CLIW 2014—2015 (3/12): Design Web. Interacţiune, utilizabilitate & metodologi...
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #3): Design Web. Inte...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #3): Design Web. Inte...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #3): Design Web. Inte...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #3): Design Web. Inte...
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
 
WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects
WADe 2017-2018 (3/12) Web Application Development: Architectural AspectsWADe 2017-2018 (3/12) Web Application Development: Architectural Aspects
WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor Web
 
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
 
Ss1
Ss1Ss1
Ss1
 
WADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul REST
WADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul RESTWADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul REST
WADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul REST
 
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
 
CLIW 2015-2016 (3/13) Design Web. Interacțiune, utilizabilitate, metodologii ...
CLIW 2015-2016 (3/13) Design Web. Interacțiune, utilizabilitate, metodologii ...CLIW 2015-2016 (3/13) Design Web. Interacțiune, utilizabilitate, metodologii ...
CLIW 2015-2016 (3/13) Design Web. Interacțiune, utilizabilitate, metodologii ...
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
 
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul RESTDezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
 
CLIW 2014—2015 (4/12): Design Web. Proiectarea siturilor Web. Design Web resp...
CLIW 2014—2015 (4/12): Design Web. Proiectarea siturilor Web. Design Web resp...CLIW 2014—2015 (4/12): Design Web. Proiectarea siturilor Web. Design Web resp...
CLIW 2014—2015 (4/12): Design Web. Proiectarea siturilor Web. Design Web resp...
 
WADe 2017-2018 (2/12) Service-based Web Application Development. REST
WADe 2017-2018 (2/12) Service-based Web Application Development. RESTWADe 2017-2018 (2/12) Service-based Web Application Development. REST
WADe 2017-2018 (2/12) Service-based Web Application Development. REST
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #1): Interacţiune Web...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #1): Interacţiune Web...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #1): Interacţiune Web...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #1): Interacţiune Web...
 
CLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de client
CLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de clientCLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de client
CLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de client
 
WADe 2017-2018 (11/12) Ontology Engineering: Knowledge Management. Methodolog...
WADe 2017-2018 (11/12) Ontology Engineering: Knowledge Management. Methodolog...WADe 2017-2018 (11/12) Ontology Engineering: Knowledge Management. Methodolog...
WADe 2017-2018 (11/12) Ontology Engineering: Knowledge Management. Methodolog...
 
CLIW 2014—2015 (1/12): Interacţiune Web: concepte, context, studii de caz
CLIW 2014—2015 (1/12): Interacţiune Web: concepte, context, studii de cazCLIW 2014—2015 (1/12): Interacţiune Web: concepte, context, studii de caz
CLIW 2014—2015 (1/12): Interacţiune Web: concepte, context, studii de caz
 
Sabin Buraga: Participând la Web
Sabin Buraga: Participând la WebSabin Buraga: Participând la Web
Sabin Buraga: Participând la Web
 

Plus de Sabin Buraga

Plus de Sabin Buraga (19)

Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma REST
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.js
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului Web
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5
 
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
 
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
 
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSTAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
 
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
 
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
 
HCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and GuidelinesHCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and Guidelines
 
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual DesignHCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
 
HCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
HCI 2018 (5/10) Information Architecture. From Design Patterns to FlowHCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
HCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
 
HCI 2018 (6/10) Design Patterns for Social (Web/mobile) Interactions
HCI 2018 (6/10) Design Patterns for Social (Web/mobile) InteractionsHCI 2018 (6/10) Design Patterns for Social (Web/mobile) Interactions
HCI 2018 (6/10) Design Patterns for Social (Web/mobile) Interactions
 
HCI 2018 (7/10) HCI Engineering. UI Evaluation. Models
HCI 2018 (7/10) HCI Engineering. UI Evaluation. ModelsHCI 2018 (7/10) HCI Engineering. UI Evaluation. Models
HCI 2018 (7/10) HCI Engineering. UI Evaluation. Models
 

Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web