SlideShare a Scribd company logo
1 of 141
Download to read offline
servicii Web, API-uri & mashup-uri
aspecte arhitecturale

Dr. Sabin Buragawww.purl.org/net/busaco

Dezvoltarea aplicațiilor Web
Harriet Tubman

Dr. Sabin Buragawww.purl.org/net/busaco

“Fiecare vis începe cu un visător.”
Dr. Sabin Buragawww.purl.org/net/busaco

Care sunt cele mai importante aspecte
privind ingineria Web?
Dr. Sabin Buragawww.purl.org/net/busaco

Aplicații Web  sisteme software complexe,
în evoluție permanentă
mijloace multiple de interacțiune Web cu utilizatorul

mobil laptop

PC

tableta

TV

ecran urban

Dr. Sabin Buragawww.purl.org/net/busaco

Realitate
suportul oferit de platforma hardware/software
la nivel de server(e) și/sau de client(i)

Dr. Sabin Buragawww.purl.org/net/busaco

Realitate
creșterea masei de utilizatori,
având așteptări tot mai mari din partea software-ului

Dr. Sabin Buragawww.purl.org/net/busaco

Realitate
neadaptare la cerințele de tip business

development vs. marketing vs. management

Dr. Sabin Buragawww.purl.org/net/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. Sabin Buragawww.purl.org/net/busaco

Realitate
Dr. Sabin Buragawww.purl.org/net/busaco

dezvoltarea aplicațiilor Web

Crumlish & Malone, 2009
corectitudine & robustete (reliability)
extindere + reutilizare (modularitate)
compatibilitate
eficiență (asigurarea performanței)
portabilitate

Dr. Sabin Buragawww.purl.org/net/busaco

Asigurarea calității aplicațiilor Web
facilitarea interacțiunii cu utilizatorul (usability)
funcționalitate
relevanța momentului lansării (timeliness)
mentenabilitate
securitate

Dr. Sabin Buragawww.purl.org/net/busaco

Asigurarea calității aplicațiilor Web
alte aspecte de interes:
integritate
reparabilitate
verificabilitate – inclusiv monitorizare (logging)
economie

Dr. Sabin Buragawww.purl.org/net/busaco

Asigurarea calității aplicațiilor Web
scopuri & cerinte clar specificate
dezvoltarea sistematică, în faze, a aplicațiilor Web
planificarea judicioasă a etapelor de dezvoltare
controlul permanent al întregului proces de dezvoltare

Dr. Sabin Buragawww.purl.org/net/busaco

Necesități
scopuri & cerinte 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. Sabin Buragawww.purl.org/net/busaco

Necesități
Dr. Sabin Buragawww.purl.org/net/busaco

În ce mod dezvoltăm o aplicație Web?
Uzual, se recurge la o metodologie

Dr. Sabin Buragawww.purl.org/net/busaco

modelare
Uzual, se recurge la o metodologie
se preferă abordările conduse de modele
(MDA – model-driven architecture)
www.omg.org/mda/

Dr. Sabin Buragawww.purl.org/net/busaco

modelare
Metodologii orientate spre modele referitoare la:
date – RMM (Relationship Management Methodology),
Hera, WebML
interacțiune – HDM (Hypertext Design Model),
WSDM (Web Site Design Method), UsiXML

obiecte – OOHDM (Object-Oriented HDM),
UWE (UML-based Web Engineering),
OOWS (Object-Oriented Web Solutions)
software – WAE (Web Application Extension)

Dr. Sabin Buragawww.purl.org/net/busaco

modelare
Robert Baxley
Dr. Sabin Buragawww.purl.org/net/busaco
Jesse James Garrett
Dr. Sabin Buragawww.purl.org/net/busaco
Cerințe (requirements)
Analiză & proiectare (software design)
Implementare (build)
Testare (testing)
Exploatare (deployment)
Mentenanță (maintenance)
Evoluție (evolution)

Dr. Sabin Buragawww.purl.org/net/busaco

dezvoltarea aplicațiilor Web
programare (server + client)
documentare
cerințe

creare/adaptare
de conținut
testare

arhitectura info
+ navigare

mentenanță

public beta lansare

http://sixrevisions.com/web-development/agile/

Dr. Sabin Buragawww.purl.org/net/busaco

dezvoltarea aplicațiilor Web
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
exemplu pentru gov.uk – Paul Downey & David Heath (2013)

Dr. Sabin Buragawww.purl.org/net/busaco

dezvoltarea aplicațiilor Web: principii
Stabilirea standardelor de calitate
content

users

context

Dr. Sabin Buragawww.purl.org/net/busaco

cerințe
Licitare + negociere a datelor (conținutului)
și/sau a codului-sursă
copyright
versus
cod deschis (Open Source Licenses)
www.opensource.org/licenses/category
+
date deschise
Creative Commons – www.creativecommons.org/licenses/

Dr. Sabin Buragawww.purl.org/net/busaco

cerințe
Documentare privind domeniul aplicației Web

cu atragerea experților în domeniul problemei

Dr. Sabin Buragawww.purl.org/net/busaco

cerințe
Aspecte specifice aplicațiilor Web
Lipsa unei structuri reale (tangibile)
Multi-disciplinaritate
Necunoașterea publicului-țintă real
Volatilitatea cerințelor & constrângerilor
Mediul de operare impredictibil
Impactul sistemelor tradiționale (legacy)
Aspecte calitative diferite
Inexperiența vizitatorilor
Termenul de lansare

Dr. Sabin Buragawww.purl.org/net/busaco

cerințe
Viziune (big idea)
Basecamp: “project management is communication”
Flickr: “online photo management & sharing application”
Ta-da List: “competing with a post-it note”

Dr. Sabin Buragawww.purl.org/net/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. Sabin Buragawww.purl.org/net/busaco

cerințe: exemple
Privitoare la conținut
audiență – e.g., internaționalizare
context de navigare
preferințe ale utilizatorului
disponibilitate permanentă (7 zile, 24 de ore/zi)
recurgerea la surse eterogene de date
căutare, filtrare, recomandare
etc.

Dr. Sabin Buragawww.purl.org/net/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. Sabin Buragawww.purl.org/net/busaco

noi tipuri de cerințe
Calitative
funcționalitate
fiabilitate
utilizabilitate
eficiență
mentenabilitate
independența de platformă

Dr. Sabin Buragawww.purl.org/net/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

Dr. Sabin Buragawww.purl.org/net/busaco

noi tipuri de cerințe
Referitoare la evoluție
utilizatorul final exploatează aplicația Web
fără a trebui s-o (re)instaleze pe calculator

Dr. Sabin Buragawww.purl.org/net/busaco

noi tipuri de cerințe
inițial:
oferirea funcționalităților esențiale (less is more)
versiuni ulterioare:
extinderea aplicației Web – pe baza unui API public –
ce încurajează dezvoltarea de soluții date de utilizatori

Dr. Sabin Buragawww.purl.org/net/busaco

noi tipuri de cerințe: aspecte de interes
Calitatea aplicatiilor Web este influențată
de arhitectura pe care se bazează

Dr. Sabin Buragawww.purl.org/net/busaco

arhitecturi
Dezvoltarea unei arhitecturi software ia în calcul:

cerințe funcționale
impuse de clienți, vizitatori, concurență,
management, evoluție socială/tehnologică,…

Dr. Sabin Buragawww.purl.org/net/busaco

arhitecturi
Dezvoltarea unei arhitecturi software ia în calcul:

factori calitativi
vizând utilizabilitatea, performanța,
securitatea, refolosirea datelor/codului etc.

Dr. Sabin Buragawww.purl.org/net/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. Sabin Buragawww.purl.org/net/busaco

arhitecturi
Dezvoltarea unei arhitecturi software ia în calcul:

experiența
recurgerea la arhitecturi & platforme existente
șabloane de proiectare (design patterns)
folosirea unor soluții “la cheie”: biblioteci, framework-uri
management de proiecte
etc.

Dr. Sabin Buragawww.purl.org/net/busaco

arhitecturi
client(i)
firewall
proxy
middleware
server(e) Web
server(e) de aplicații
framework-uri, 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 (CMS)
aplicații/sisteme tradiționale

Dr. Sabin Buragawww.purl.org/net/busaco

arhitecturi web: componente tipice
Uzual, se adoptă arhitecturi stratificate
(N-tier Web applications)

Dr. Sabin Buragawww.purl.org/net/busaco

arhitecturi
Dr. Sabin Buragawww.purl.org/net/busaco

Câteva exemplificări
privind arhitectura unor aplicații Web?
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. Sabin Buragawww.purl.org/net/busaco

arhitecturi: exemplu – flickr
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 (prelucrare de imagini)
Ajax (interacțiune asincronă)
Linux (platformă de rulare)
alte detalii la http://highscalability.com/flickr-architecture

Dr. Sabin Buragawww.purl.org/net/busaco

arhitecturi: exemplu – flickr
Dr. Sabin Buragawww.purl.org/net/busaco

arhitectura inițială – conform (Cal Henderson, 2007)
Interfețe de
programare (API-uri)
oferite de Flickr

Dr. Sabin Buragawww.purl.org/net/busaco

studiu de caz: flickr

www.flickr.com/services/api/
Scop: descoperire & management online de evenimente
(e.g., conferințe cu caracter tehnologic)
agregare de comunități – evenimentul ca obiect social
suport pentru vorbitori & audiență, slide-uri,…
+ calendare & locații geografice
concepte importante: conferences, user profiles,
emails, dashboard, coverage, topics, guides

Dr. Sabin Buragawww.purl.org/net/busaco

arhitecturi: exemplu – lanyrd
Creat aproape complet în Python (folosind Django)
și întreținut de 6 persoane

2.5
1.75
0.5
1.5
0.75
0.75

backend developers
frontend developers
mobile developers
designers
system administrators
business operations

Andrew Godwin, Inside Lanyrd’s Architecture, QCon London, 2013

Dr. Sabin Buragawww.purl.org/net/busaco

arhitecturi: exemplu – lanyrd
Dr. Sabin Buragawww.purl.org/net/busaco

arhitecturi: exemplu – lanyrd
Scop: oferirea de conținut deschis
via o suită de aplicații Web colaborative: wiki-uri

Dr. Sabin Buragawww.purl.org/net/busaco

arhitecturi: exemplu – wikipedia

alături de Wikipedia,
există Wiktionary, Wikinews, Wikibooks, Wikiquote,
Wikisource, Wikiversity, Wikispecies, Wikimedia, Wikidata
MediaWiki (sistemul wiki utilizat pentru toate serviciile)
PHP (platforma pe care rulează MediaWiki)
MySQL (soluția principală de stocare)
Apache Lucene (indexare textuală, facilitând cautarea)
ImageMagick, DjVu, TeX, rsvg, ploticus etc.
(pentru procesare de conținuturi grafice în MediaWiki)
Linux (platforma de rulare)
detalii despre API: www.mediawiki.org/wiki/API:Main_page

Dr. Sabin Buragawww.purl.org/net/busaco

arhitecturi: exemplu – wikipedia
Dr. Sabin Buragawww.purl.org/net/busaco

studiu de caz: wikimedia

Wikipedia – arhitectura generală (Domas Mituzas, 2008)
http://tinyurl.com/m9nlwvq
Dr. Sabin Buragawww.purl.org/net/busaco

Există anumite “rețete”
privind proiectarea de aplicații Web?
O problemă – oricare ar fi aceasta –
poate apărea frecvent

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare
Cei experimentați au găsit diverse soluții
pentru problema în cauză, reușind să recunoască
problema și să aleagă soluția (optimă)
care poate fi aplicată într-un anumit context

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare
Pattern (sablon)
regulă ce exprimă o relație
dintre un context, o problemă și o soluție
inițial, cu utilizare în arhitectură
Christopher Alexander, 1979

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare
Tradițional, pattern-urile se utilizează în
proiectarea de software
pattern  “mind sized” chunk of information
lucrarea de referință:
E. Gamma et al., Design Patterns, Addison-Wesley, 1995

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare
Pattern-uri de proiectare au fost folosite,
ulterior, în alte arii
interacțiune dintre om-calculator
design și interacțiune Web, mobile computing

modelare conceptuală
proiectarea bazelor de date, ontologii,…

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare
Un pattern poate descrie cunoștințele unui expert
(pe baza experienței sale personale)
în domeniul problemei în ceea ce privește
recunoașterea problemei, a contextului și
a soluției la acea problemă

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare
Un pattern nu reprezinta o regulă fermă

uneori nu trebuie aplicat!anti-patterns

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare
Este necesară adoptarea unui vocabular comun
corespunzător domeniului problemei
pattern language

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare
Pattern-uri privitoare la:
proiectare
arhitectură
analiză
dezvoltare
structură
comportament
…

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare
Specificarea și/sau “recunoașterea” unui pattern poate
avea loc la diverse niveluri:

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare

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,…)
conceptual (knowledge modeling)
Șablon de specificare a unui pattern:
numele
rezumatul
problema
contextul
soluția
exemplele
utilizările

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare
Exemple de colecții de sabloane
(patterns repositories)
privind proiectarea de software
http://c2.com/cgi/wiki?DesignPatterns
patterns of enterprise application architecture
http://martinfowler.com/eaaCatalog/
interacțiunea cu utilizatorul
http://profs.info.uaic.ro/~evalica/patterns/

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare
Șabloane de proiectare tradiționale
creaționale
Builder, Prototype, Singleton
structurale
Adapter, Bridge, Decorator, Façade, Flyweight, Proxy
comportamentale
Command, Iterator, Mediator, Observer, State, Visitor

Dr. Sabin Buragawww.purl.org/net/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. Sabin Buragawww.purl.org/net/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. Sabin Buragawww.purl.org/net/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. Sabin Buragawww.purl.org/net/busaco

proiectare
Model View Controller
șablon arhitectural
descris în premieră în 1979 în contextul interacțiunii
dintre om și calculator – Smalltalk (Xerox PARC)
poate fi implementat și într-un limbaj neorientat-obiect
încurajat/impus de framework-uri specifice

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare: mvc
Controller

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare: mvc

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 va selecta un view corespunzător
Model
resursele gestionate de software – utilizatori, mesaje,
produse etc. – au modele specifice
desemnează datele și regulile (i.e. restricțiile)
referitoare la dateconcepte vizând aplicația Web
oferă controller-ului o reprezentare a datelor solicitate și
e responsabil cu validarea datelor menite a fi stocate

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare: 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. Sabin Buragawww.purl.org/net/busaco

proiectare: mvc
etape tipice:
(1) cerere trimisă de client – e.g., navigator Web,
(2) dirijare cerere către controller,
(3) recurgerea la un model, (4) furnizare reprezentare,
(5) selectarea unui view, (6) prezentare conținut la client

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare: mvc
Arhitectura generică a unei aplicații Web
va consta dintr-un set de resurse referitoare la
controller, model si view

uzual, framework-ul Web folosit impune o anumită
structură a fișierelor aplicației ce va fi implementată

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare: mvc
Dr. Sabin Buragawww.purl.org/net/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
http://rubyonrails.org/
structura de directoare
în cazul unei aplicații Web
folosind framework-ul
CakePHP
http://cakephp.org/

Dr. Sabin Buragawww.purl.org/net/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

framework-uri PHP similare
www.phpwact.org/php/mvc_frameworks
structura de directoare în cazul unei aplicații Web
ce recurge la framework-ul Play pentru Java și Scala
http://www.playframework.org/

Dr. Sabin Buragawww.purl.org/net/busaco

├───app
│
├───assets
│
│
├───javascripts
│
│
└───stylesheets
│
│
├───apps
│
│
├───libs
│
│
└───main
│
├───controllers
│
├───models
│
└───views
├───conf
├───project
└───public
├───images
│
└───icons
└───javascripts
Dr. Sabin Buragawww.purl.org/net/busaco

structura de directoare în cazul
unei aplicații ASP.NET MVC
http://www.asp.net/mvc
arhitectura unei aplicații Web la nivel de client
recurgând la Backbone.js – http://backbonejs.org/

Dr. Sabin Buragawww.purl.org/net/busaco

Backbone.Events

după Jeff Carouth (2012)
Variante derivate:
MVP (Model View Presenter)
Passive View
Supervising Controller
PAC (Presentation Abstraction Control)
Model View ViewModel
http://aspiringcraftsman.com/2007/08/25/interactive-application-architecture/
http://addyosmani.com/resources/essentialjsdesignpatterns/book/

Dr. Sabin Buragawww.purl.org/net/busaco

proiectare: mvc
Dr. Sabin Buragawww.purl.org/net/busaco

Prin ce mijloace poate fi implementată
o aplicație Web?
De la aplicații la API-uri & servere de aplicații

Brian Mulloy, Web API Design, Apigee, 2012
http://offers.apigee.com/web-api-design-ebook/

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Server de aplicații Web
eficientizarea proceselor de dezvoltare
a aplicațiilor Web de anvergură

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Server de aplicații Web
se bazează pe interfețe de programare (API-uri)
și/sau pe componente reutilizabile

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Server de aplicații Web
se integrează în unul/mai multe servere Web
de asemenea, poate oferi propriul server Web

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Server de aplicații Web
poate încuraja sau impune o viziune arhitecturală
privind dezvoltarea de aplicații Web
principiu: separation of concerns

Dr. Sabin Buragawww.purl.org/net/busaco

implementare




HTML, CSS, SVG, WebGL etc.

SQL, NoSQL, XML (XQuery), RDF,…

View

Model

la nivel client(i) Web

stocare persistentă


servere de aplicații, framework-uri

Controller
aplicație Web (la nivel de server)

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Server de aplicații Web
poate oferi suport pentru folosirea de machete
de vizualizare (templates) pe baza unui software specific
Web template system

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Server de aplicații Web
poate oferi suport pentru folosirea de machete
de vizualizare (templates) pe baza unui software specific
Web template system

utilizând specificații de prezentare a conținutului
(Web template), datele persistente (e.g., dintr-o bază
de date) sunt folosite de un procesor (template engine)
pentru a genera reprezentări – e.g., documente HTML

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Server de aplicații Web
poate oferi suport pentru folosirea de machete
de vizualizare (templates) pe baza unui software specific
Web template system

la nivel de server
Haml (Ruby), Mustache (C++, JS, PHP, Python, Scala,…),
Smarty (PHP), Velocity (Java), XSLT (XML) etc.

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Server de aplicații Web
poate oferi suport pentru folosirea de machete
de vizualizare (templates) pe baza unui software specific
Web template system

la nivel de client – disponibile pentru JavaScript
Closure Templates, EJS, Mustache, Yeast,…

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Server de aplicații Web
poate include instrumente de generare de cod
(scaffold generators)
+
depanatoare (debuggers),
analizoare (profilers)
și/sau optimizatoare de cod

Dr. Sabin Buragawww.purl.org/net/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ă

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Exemple de framework-uri care facilitează
dezvoltarea de aplicații Web la nivel de server

Dr. Sabin Buragawww.purl.org/net/busaco

implementare

ASP.NET: ASP.NET MVC, Vici MVC
Java: Play, Spring, Struts, Tapestry, WebObjects, Wicket
JavaScript (node.js): Express, Geddy, Locomotive, Tower
Perl: Catalyst, CGI::Application, Jifty, WebGUI
PHP: CakePHP, CodeIgniter, Symfony, Yii, Zend Framework
Python: Django, Grok, web2py, Zope
Ruby: Camping, Nitro, Rails, Sinatra
Web component
parte a unei aplicații Web
ce încapsulează o suită de funcții înrudite

e.g., calendar, cititor de fluxuri de știri,
buton de partajare a URL-ului în altă aplicație

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Web component
dezvoltare bazată pe o bibliotecă/framework

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Web component
dezvoltare bazată pe o bibliotecă/framework
soluții “tradiționale”: Dojo Toolkit, jQuery UI, YUI,…
versus
cadrul general: Web Components (în lucru la W3C, 2013)
cu implementările: Polymer (Google), X-Tag (Mozilla)

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Widget
aplicație – de sine-stătătoare sau
inclusă într-un container (e.g., o pagină Web) –
ce oferă o funcționalitate specifică
rulează la nivel de client (platformă oferită de
sistemul de operare și/sau navigator Web)

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Widget

Dr. Sabin Buragawww.purl.org/net/busaco

implementare

uzual, implementare pe baza standardelor: HTML, CSS, JS
eventual, se poate recurge la un API
W3C Proposed Recommendation (2012)
www.w3.org/TR/widgets-apis/
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

Dr. Sabin Buragawww.purl.org/net/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,…

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
(Web) App
a distributed computer software application designed for
optimal use on specific screen sizes and with particular
interface technologies

Robert Shilston, 2013

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
(Web) App
uzual, se poate obține via un app store
(centralizat sau descentralizat)

exemplu tipic: Chrome Apps
https://developers.google.com/chrome/web-store/docs/index

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
(Web) App

Dr. Sabin Buragawww.purl.org/net/busaco

implementare

alte exemple notabile:
aplicații Windows 8 dezvoltate în JavaScript
aplicații Web mobile pentru Firefox OS
aplicații Web mobile pentru Kindle Fire și alte dispozitive
native
app

web browser
single
page
app

adaptare după Adrian Colyer (2012)

HTTP
WebSockets

aplicații
Web
&
servicii
(API-uri)

Dr. Sabin Buragawww.purl.org/net/busaco

app store

platform
(OS + device)
API (Application Programming Interface)
“any well-defined interface that defines
the service that one component, module, or application
provides to other software elements”

detalii în Giovanni Asproni,
“Writing usable APIs in practice”, SyncConf 2013

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
API “de succes” – adaptare după (Bloch, 2005)
ușor de învățat
facil de folosit, chiar și în lipsa documentației
previne utilizarea eronată
stabil & sigur
ușor de menținut
suficient de expresiv
facil de extins
vezi și S. Clarke, “Measuring API Usability”: http://drdobbs.com/windows/184405654

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Dr. Sabin Buragawww.purl.org/net/busaco

implementare

strategia API first adoptată de Twitter (van der Schee, 2013)
www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
Dr. Sabin Buragawww.purl.org/net/busaco

implementare

diverse abordări vizând arhitectura aplicațiilor Web
www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
API public
(disponibil pe baza unei licențe de utilizare)
versus

API privat
(pentru uz intern)

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
API (Application Programming Interface)
descriere (abstractă) prin RAML
(RESTful API Modeling Language)
propus de Uri Sarid – 2013

http://raml.org/

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Dr. Sabin Buragawww.purl.org/net/busaco

testarea unui API public via Apigee Console
https://apigee.com/console/
Modele tradiționale de afaceri vizând API-urile

John Musser, “API business models”, API Strategy Conference, 2013

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Dr. Sabin Buragawww.purl.org/net/busaco

Modele actuale de afaceri privind API-urile

John Musser, “API business models”, API Strategy Conference, 2013
Dr. Sabin Buragawww.purl.org/net/busaco

Modele actuale de afaceri privind API-urile

John Musser, “API business models”, API Strategy Conference, 2013
Dr. Sabin Buragawww.purl.org/net/busaco

Modele actuale de afaceri privind API-urile

John Musser, “API business models”, API Strategy Conference, 2013
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

Dr. Sabin Buragawww.purl.org/net/busaco

implementare
Dr. Sabin Buragawww.purl.org/net/busaco

privire pragmatica

exemplificare: acces la API-uri în Python – www.pythonapi.com
Dr. Sabin Buragawww.purl.org/net/busaco

Cum se pot combina date
oferite de mai multe servicii Web și/sau API-uri?
Combinarea – la nivel de client și/sau server –
a datelor ce provin din surse (situri) multiple,
oferindu-se o funcționalitate/experiență nouă

Dr. Sabin Buragawww.purl.org/net/busaco

mash-ups
Se bazează pe fluxuri RSS/Atom,
servicii Web, API-uri publice,…

“curentul” SaaS (Software As A Service)

Dr. Sabin Buragawww.purl.org/net/busaco

mash-ups
combinare
utilizarea de surse de date multiple
poate avea caracter multidimensional:
subiect de interes + locație geografică + moment de timp
Yahoo! music search + Google maps + Eventful

Dr. Sabin Buragawww.purl.org/net/busaco

mash-ups
Dr. Sabin Buragawww.purl.org/net/busaco

mash-ups

proiectul ubiGuide (Ionuț Dănilă & Mihaela Ghimiciu, 2013)
servicii publice folosite: ABBYY Cloud OCR, AlchemyAPI,
Google Places API, YouTube API,…
biblioteci: Flickr.NET, GART (Geo Augmented Reality Toolkit),
Hammock, TweetSharp etc.

Dr. Sabin Buragawww.purl.org/net/busaco

ubiGuide
vizualizare
pot fi adoptate diverse tehnici de vizualizare
(prezentare) a datelor:
cartografică,
tag cloud-uri,
tridimensională,
…

Dr. Sabin Buragawww.purl.org/net/busaco

mash-ups
Dr. Sabin Buragawww.purl.org/net/busaco

mash-ups

proiectul DataEx (Andrei Cojocaru, 2013) – vizualizarea bazelor
de cunoștințe de mari dimensiuni (în acest caz: Freebase)
agregare
gruparea datelor provenite din mai multe surse
și analizarea lor: statistici, clasificări, predicții,…

e.g., folosind data mining se pot releva
aspecte “ascunse” ale datelor procesate

Dr. Sabin Buragawww.purl.org/net/busaco

mash-ups
Dr. Sabin Buragawww.purl.org/net/busaco

Zemanta – recomandare “inteligentă” de resurse
Surse de date
(data feeds)
Interfețe de programare
(API-uri)
Biblioteci/framework-uri
pentru dezvoltare
Instrumente interactive
(Web tools)
Platforme
(Platform As A Service)

Atom, RSS, geoRSS, microdate
HTML5, RDFa,…
specifice serviciilor publice
& de procesare JSON/XML
framework-uri Web generice
sau oferite de organizații
eventual, disponibile în cloud
e.g., Yahoo! Pipes
Heroku, Google App Engine,
Nodejitsu, Windows Azure,…

Dr. Sabin Buragawww.purl.org/net/busaco

mash-ups
Dr. Sabin Buragawww.purl.org/net/busaco

lista mash-up-urilor existente,
mash-ups
inclusiv cu exemple de cod-sursă:
www.programmableweb.com/mashups/directory
performanță: scalabilitatea & latența
limite ale API-urilor + existența versiunilor multiple
drepturi de autor asupra datelor & licențiere
securitate: abuz, confidențialitate, încredere etc.

monetizare
lipsa unei interoperabilități reale între platforme

Dr. Sabin Buragawww.purl.org/net/busaco

mash-ups: aspecte de interes
Actualmente, aplicațiile Web
sunt exploatate și integrate continuu
(continuous integration & deployment)

fenomenul perpetual beta
a se vizita The Museum of Modern Betas:
http://momb.socio-kybernetics.net/

Dr. Sabin Buragawww.purl.org/net/busaco

“concluzii”
rulare
dezvoltare
code repositories

instrumente de
dezvoltare (IDE)

Development as a Service

Dr. Sabin Buragawww.purl.org/net/busaco Decker (2012)
A. Iqbal, M. Haunsenblas, S.

runtime environment
runtime environment

rulare
dezvoltare
code repositories

instrumente de
dezvoltare (IDE)

BitBucket, GitHub,
SourceForge, Unfuddle

Web: CodeRun, Cloud9, eXo Cloud
desktop: Eclipse, <oXygen/>, Visual Studio

Dr. Sabin Buragawww.purl.org/net/busaco

Google App Engine, Heroku,
Jelastic, Windows Azure
Un număr tot mai mare de aplicații (servicii)
populare disponibile on-line se bazează
pe conținut generat de utilizatori

de consultat statisticile oferite de Alexa:
http://www.alexa.com/topsites

Dr. Sabin Buragawww.purl.org/net/busaco

“concluzii”
“What should every programmer know
about Web development?” – http://is.gd/web_know
“Getting Real. The smarter, faster, easier way to build
a successful Web application”
http://gettingreal.37signals.com/
The Web engineer’s online toolbox
http://is.gd/web_eng_tools
Web developer checklist – http://webdevchecklist.com/

Dr. Sabin Buragawww.purl.org/net/busaco

alte resurse de interes
Dr. Sabin Buragawww.purl.org/net/busaco

rezumat

arhitectura aplicațiilor Web orientate spre servicii
Servicii Web
model de calcul
YQL

model de acces
la date

mash-up-uri la nivel
de dispozitiv mobil
model de implementare
model de interacțiune

model de comunicare

episodul viitor:
aspecte privind modelarea cunoștințelor

Dr. Sabin Buragawww.purl.org/net/busaco

Ofertant
de servicii de
telefonie mobilă

More Related Content

What's hot

Customer Relationship Management Module Project Report
Customer Relationship Management Module Project ReportCustomer Relationship Management Module Project Report
Customer Relationship Management Module Project Reportsachinkumar Bharadva
 
Project report feedback_system(1)
Project report feedback_system(1)Project report feedback_system(1)
Project report feedback_system(1)Sonu Lovesforu
 
Apresentação da ministra do Planejamento, Miriam Belchior, no Encontro Estadu...
Apresentação da ministra do Planejamento, Miriam Belchior, no Encontro Estadu...Apresentação da ministra do Planejamento, Miriam Belchior, no Encontro Estadu...
Apresentação da ministra do Planejamento, Miriam Belchior, no Encontro Estadu...PAC
 
Online examination system
Online examination systemOnline examination system
Online examination systemRahul Khanwani
 
Srs course managment system
Srs course managment systemSrs course managment system
Srs course managment systemUbaid Rehman
 
E-Learning Project Write Up Case Study Ogun State Institute Of Technology
E-Learning Project Write Up Case Study Ogun State Institute Of TechnologyE-Learning Project Write Up Case Study Ogun State Institute Of Technology
E-Learning Project Write Up Case Study Ogun State Institute Of Technologydamilola isaac
 
E-Commerce Mobile Sale System
E-Commerce Mobile Sale SystemE-Commerce Mobile Sale System
E-Commerce Mobile Sale SystemAbhishek Kumar
 
Kirtesh Khandelwal,Project on HTML and CSS ,Final Year BCA , Dezyne E'cole Co...
Kirtesh Khandelwal,Project on HTML and CSS ,Final Year BCA , Dezyne E'cole Co...Kirtesh Khandelwal,Project on HTML and CSS ,Final Year BCA , Dezyne E'cole Co...
Kirtesh Khandelwal,Project on HTML and CSS ,Final Year BCA , Dezyne E'cole Co...dezyneecole
 
Online Shopping System Test case Writing
Online Shopping System Test case WritingOnline Shopping System Test case Writing
Online Shopping System Test case Writingchiragmakdiya
 
School Management System
School Management SystemSchool Management System
School Management SystemHATIM Bhagat
 
School billing system software
School billing system softwareSchool billing system software
School billing system softwareaki_shu
 
Student result processing system project
Student result   processing system projectStudent result   processing system project
Student result processing system projectTanvirAhammed22
 
Force Energy Saver
Force Energy SaverForce Energy Saver
Force Energy SaverRay Barnes
 
Learning Management System-SRS Modified(Semi-Final)
Learning Management System-SRS Modified(Semi-Final)Learning Management System-SRS Modified(Semi-Final)
Learning Management System-SRS Modified(Semi-Final)Sharon Varghese
 
Ergonomie et accessibilité du Web
Ergonomie et accessibilité du WebErgonomie et accessibilité du Web
Ergonomie et accessibilité du WebGenève Lab
 
Higher studies after B.Tech in CSE
Higher studies after B.Tech in CSE Higher studies after B.Tech in CSE
Higher studies after B.Tech in CSE CheggIndia1
 

What's hot (20)

Customer Relationship Management Module Project Report
Customer Relationship Management Module Project ReportCustomer Relationship Management Module Project Report
Customer Relationship Management Module Project Report
 
Srs for library
Srs for librarySrs for library
Srs for library
 
Project report feedback_system(1)
Project report feedback_system(1)Project report feedback_system(1)
Project report feedback_system(1)
 
Apresentação da ministra do Planejamento, Miriam Belchior, no Encontro Estadu...
Apresentação da ministra do Planejamento, Miriam Belchior, no Encontro Estadu...Apresentação da ministra do Planejamento, Miriam Belchior, no Encontro Estadu...
Apresentação da ministra do Planejamento, Miriam Belchior, no Encontro Estadu...
 
Online examination system
Online examination systemOnline examination system
Online examination system
 
E commerce use case documentation.
E commerce use case documentation.E commerce use case documentation.
E commerce use case documentation.
 
Srs course managment system
Srs course managment systemSrs course managment system
Srs course managment system
 
E-Learning Project Write Up Case Study Ogun State Institute Of Technology
E-Learning Project Write Up Case Study Ogun State Institute Of TechnologyE-Learning Project Write Up Case Study Ogun State Institute Of Technology
E-Learning Project Write Up Case Study Ogun State Institute Of Technology
 
E-Commerce Mobile Sale System
E-Commerce Mobile Sale SystemE-Commerce Mobile Sale System
E-Commerce Mobile Sale System
 
Kirtesh Khandelwal,Project on HTML and CSS ,Final Year BCA , Dezyne E'cole Co...
Kirtesh Khandelwal,Project on HTML and CSS ,Final Year BCA , Dezyne E'cole Co...Kirtesh Khandelwal,Project on HTML and CSS ,Final Year BCA , Dezyne E'cole Co...
Kirtesh Khandelwal,Project on HTML and CSS ,Final Year BCA , Dezyne E'cole Co...
 
Online Shopping System Test case Writing
Online Shopping System Test case WritingOnline Shopping System Test case Writing
Online Shopping System Test case Writing
 
Learning Managment System
Learning Managment SystemLearning Managment System
Learning Managment System
 
School Management System
School Management SystemSchool Management System
School Management System
 
School billing system software
School billing system softwareSchool billing system software
School billing system software
 
Student result processing system project
Student result   processing system projectStudent result   processing system project
Student result processing system project
 
Force Energy Saver
Force Energy SaverForce Energy Saver
Force Energy Saver
 
Learning Management System-SRS Modified(Semi-Final)
Learning Management System-SRS Modified(Semi-Final)Learning Management System-SRS Modified(Semi-Final)
Learning Management System-SRS Modified(Semi-Final)
 
Placement automation system
Placement automation systemPlacement automation system
Placement automation system
 
Ergonomie et accessibilité du Web
Ergonomie et accessibilité du WebErgonomie et accessibilité du Web
Ergonomie et accessibilité du Web
 
Higher studies after B.Tech in CSE
Higher studies after B.Tech in CSE Higher studies after B.Tech in CSE
Higher studies after B.Tech in CSE
 

Viewers also liked

Prezentare aplicatii web slide share
Prezentare aplicatii web   slide sharePrezentare aplicatii web   slide share
Prezentare aplicatii web slide sharemikhi82
 
Web - Arhitectura Web
Web - Arhitectura WebWeb - Arhitectura Web
Web - Arhitectura WebSabin Buraga
 
Proiect Programare WEB
Proiect Programare WEBProiect Programare WEB
Proiect Programare WEBPascu Catalin
 
Tendinte in proiectarea si dezvoltarea aplicatiilor Web
Tendinte in proiectarea si dezvoltarea aplicatiilor WebTendinte in proiectarea si dezvoltarea aplicatiilor Web
Tendinte in proiectarea si dezvoltarea aplicatiilor WebSabin Buraga
 
Operating system.ppt (1)
Operating system.ppt (1)Operating system.ppt (1)
Operating system.ppt (1)Vaibhav Bajaj
 

Viewers also liked (6)

Prezentare aplicatii web slide share
Prezentare aplicatii web   slide sharePrezentare aplicatii web   slide share
Prezentare aplicatii web slide share
 
Web - Arhitectura Web
Web - Arhitectura WebWeb - Arhitectura Web
Web - Arhitectura Web
 
Proiect Programare WEB
Proiect Programare WEBProiect Programare WEB
Proiect Programare WEB
 
Tendinte in proiectarea si dezvoltarea aplicatiilor Web
Tendinte in proiectarea si dezvoltarea aplicatiilor WebTendinte in proiectarea si dezvoltarea aplicatiilor Web
Tendinte in proiectarea si dezvoltarea aplicatiilor Web
 
Operating system.ppt (1)
Operating system.ppt (1)Operating system.ppt (1)
Operating system.ppt (1)
 
Presentation on operating system
 Presentation on operating system Presentation on operating system
Presentation on operating system
 

Similar to Dezvoltarea aplicațiilor Web (3/12): Arhitectura aplicaţiilor Web orientate spre servicii

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 serviciiSabin Buraga
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebSabin Buraga
 
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...Sabin Buraga
 
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...Sabin Buraga
 
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...Sabin Buraga
 
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 clientSabin Buraga
 
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 WebSabin Buraga
 
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 AspectsSabin Buraga
 
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 RESTSabin Buraga
 
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 RESTSabin Buraga
 
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...Sabin Buraga
 
Ce înseamnă să fii dezvoltator Web
Ce înseamnă să fii dezvoltator WebCe înseamnă să fii dezvoltator Web
Ce înseamnă să fii dezvoltator WebSabin Buraga
 
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...Sabin Buraga
 
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...Sabin Buraga
 
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...Sabin Buraga
 
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 ...Sabin Buraga
 
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...Sabin Buraga
 
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...Sabin Buraga
 
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. RESTSabin Buraga
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #4): Design Web. Proi...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #4): Design Web. Proi...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #4): Design Web. Proi...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #4): Design Web. Proi...Sabin Buraga
 

Similar to Dezvoltarea aplicațiilor Web (3/12): Arhitectura aplicaţiilor Web orientate spre servicii (20)

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
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
 
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 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...
 
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...
 
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
 
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
 
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
 
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
 
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 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...
 
Ce înseamnă să fii dezvoltator Web
Ce înseamnă să fii dezvoltator WebCe înseamnă să fii dezvoltator Web
Ce înseamnă să fii dezvoltator Web
 
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...
 
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...
 
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 ...
 
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...
 
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...
 
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 #4): Design Web. Proi...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #4): Design Web. Proi...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #4): Design Web. Proi...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #4): Design Web. Proi...
 

More from Sabin Buraga

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleSabin Buraga
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebSabin Buraga
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Sabin Buraga
 
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. ...Sabin Buraga
 
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 ModelSabin Buraga
 
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...Sabin Buraga
 
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 RESTSabin Buraga
 
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...Sabin Buraga
 
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...Sabin Buraga
 
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ţialeSabin Buraga
 
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ţialeSabin Buraga
 
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.Sabin Buraga
 
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.jsSabin Buraga
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSabin Buraga
 
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-uriSabin Buraga
 
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 JavaScriptSabin Buraga
 
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 HTML5Sabin Buraga
 
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)Sabin Buraga
 
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)Sabin Buraga
 
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 clientSabin Buraga
 

More from Sabin Buraga (20)

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturale
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
 
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. ...
 
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 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...
 
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 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...
 
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...
 
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
 

Dezvoltarea aplicațiilor Web (3/12): Arhitectura aplicaţiilor Web orientate spre servicii

  • 1. servicii Web, API-uri & mashup-uri aspecte arhitecturale Dr. Sabin Buragawww.purl.org/net/busaco Dezvoltarea aplicațiilor Web
  • 2. Harriet Tubman Dr. Sabin Buragawww.purl.org/net/busaco “Fiecare vis începe cu un visător.”
  • 3. Dr. Sabin Buragawww.purl.org/net/busaco Care sunt cele mai importante aspecte privind ingineria Web?
  • 4. Dr. Sabin Buragawww.purl.org/net/busaco Aplicații Web  sisteme software complexe, în evoluție permanentă
  • 5. mijloace multiple de interacțiune Web cu utilizatorul mobil laptop PC tableta TV ecran urban Dr. Sabin Buragawww.purl.org/net/busaco Realitate
  • 6. suportul oferit de platforma hardware/software la nivel de server(e) și/sau de client(i) Dr. Sabin Buragawww.purl.org/net/busaco Realitate
  • 7. creșterea masei de utilizatori, având așteptări tot mai mari din partea software-ului Dr. Sabin Buragawww.purl.org/net/busaco Realitate
  • 8. neadaptare la cerințele de tip business development vs. marketing vs. management Dr. Sabin Buragawww.purl.org/net/busaco Realitate
  • 9. privind proiectele Web de anvergură întârzieri în lansare neîncadrare în buget lipsa funcționalității calitatea precară a aplicației Dr. Sabin Buragawww.purl.org/net/busaco Realitate
  • 10. Dr. Sabin Buragawww.purl.org/net/busaco dezvoltarea aplicațiilor Web Crumlish & Malone, 2009
  • 11. corectitudine & robustete (reliability) extindere + reutilizare (modularitate) compatibilitate eficiență (asigurarea performanței) portabilitate Dr. Sabin Buragawww.purl.org/net/busaco Asigurarea calității aplicațiilor Web
  • 12. facilitarea interacțiunii cu utilizatorul (usability) funcționalitate relevanța momentului lansării (timeliness) mentenabilitate securitate Dr. Sabin Buragawww.purl.org/net/busaco Asigurarea calității aplicațiilor Web
  • 13. alte aspecte de interes: integritate reparabilitate verificabilitate – inclusiv monitorizare (logging) economie Dr. Sabin Buragawww.purl.org/net/busaco Asigurarea calității aplicațiilor Web
  • 14. scopuri & cerinte clar specificate dezvoltarea sistematică, în faze, a aplicațiilor Web planificarea judicioasă a etapelor de dezvoltare controlul permanent al întregului proces de dezvoltare Dr. Sabin Buragawww.purl.org/net/busaco Necesități
  • 15. scopuri & cerinte 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. Sabin Buragawww.purl.org/net/busaco Necesități
  • 16. Dr. Sabin Buragawww.purl.org/net/busaco În ce mod dezvoltăm o aplicație Web?
  • 17. Uzual, se recurge la o metodologie Dr. Sabin Buragawww.purl.org/net/busaco modelare
  • 18. Uzual, se recurge la o metodologie se preferă abordările conduse de modele (MDA – model-driven architecture) www.omg.org/mda/ Dr. Sabin Buragawww.purl.org/net/busaco modelare
  • 19. Metodologii orientate spre modele referitoare la: date – RMM (Relationship Management Methodology), Hera, WebML interacțiune – HDM (Hypertext Design Model), WSDM (Web Site Design Method), UsiXML obiecte – OOHDM (Object-Oriented HDM), UWE (UML-based Web Engineering), OOWS (Object-Oriented Web Solutions) software – WAE (Web Application Extension) Dr. Sabin Buragawww.purl.org/net/busaco modelare
  • 20. Robert Baxley Dr. Sabin Buragawww.purl.org/net/busaco
  • 21. Jesse James Garrett Dr. Sabin Buragawww.purl.org/net/busaco
  • 22. Cerințe (requirements) Analiză & proiectare (software design) Implementare (build) Testare (testing) Exploatare (deployment) Mentenanță (maintenance) Evoluție (evolution) Dr. Sabin Buragawww.purl.org/net/busaco dezvoltarea aplicațiilor Web
  • 23. programare (server + client) documentare cerințe creare/adaptare de conținut testare arhitectura info + navigare mentenanță public beta lansare http://sixrevisions.com/web-development/agile/ Dr. Sabin Buragawww.purl.org/net/busaco dezvoltarea aplicațiilor Web
  • 24. 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 exemplu pentru gov.uk – Paul Downey & David Heath (2013) Dr. Sabin Buragawww.purl.org/net/busaco dezvoltarea aplicațiilor Web: principii
  • 25. Stabilirea standardelor de calitate content users context Dr. Sabin Buragawww.purl.org/net/busaco cerințe
  • 26. Licitare + negociere a datelor (conținutului) și/sau a codului-sursă copyright versus cod deschis (Open Source Licenses) www.opensource.org/licenses/category + date deschise Creative Commons – www.creativecommons.org/licenses/ Dr. Sabin Buragawww.purl.org/net/busaco cerințe
  • 27. Documentare privind domeniul aplicației Web cu atragerea experților în domeniul problemei Dr. Sabin Buragawww.purl.org/net/busaco cerințe
  • 28. Aspecte specifice aplicațiilor Web Lipsa unei structuri reale (tangibile) Multi-disciplinaritate Necunoașterea publicului-țintă real Volatilitatea cerințelor & constrângerilor Mediul de operare impredictibil Impactul sistemelor tradiționale (legacy) Aspecte calitative diferite Inexperiența vizitatorilor Termenul de lansare Dr. Sabin Buragawww.purl.org/net/busaco cerințe
  • 29. Viziune (big idea) Basecamp: “project management is communication” Flickr: “online photo management & sharing application” Ta-da List: “competing with a post-it note” Dr. Sabin Buragawww.purl.org/net/busaco cerințe: exemple
  • 30. 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. Sabin Buragawww.purl.org/net/busaco cerințe: exemple
  • 31. Privitoare la conținut audiență – e.g., internaționalizare context de navigare preferințe ale utilizatorului disponibilitate permanentă (7 zile, 24 de ore/zi) recurgerea la surse eterogene de date căutare, filtrare, recomandare etc. Dr. Sabin Buragawww.purl.org/net/busaco noi tipuri de cerințe
  • 32. 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. Sabin Buragawww.purl.org/net/busaco noi tipuri de cerințe
  • 34. Privitoare la mediul de execuție (in)dependența de navigatorul Web wired vs. wireless on-line vs. off-line Dr. Sabin Buragawww.purl.org/net/busaco noi tipuri de cerințe
  • 35. Referitoare la evoluție utilizatorul final exploatează aplicația Web fără a trebui s-o (re)instaleze pe calculator Dr. Sabin Buragawww.purl.org/net/busaco noi tipuri de cerințe
  • 36. inițial: oferirea funcționalităților esențiale (less is more) versiuni ulterioare: extinderea aplicației Web – pe baza unui API public – ce încurajează dezvoltarea de soluții date de utilizatori Dr. Sabin Buragawww.purl.org/net/busaco noi tipuri de cerințe: aspecte de interes
  • 37. Calitatea aplicatiilor Web este influențată de arhitectura pe care se bazează Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi
  • 38. Dezvoltarea unei arhitecturi software ia în calcul: cerințe funcționale impuse de clienți, vizitatori, concurență, management, evoluție socială/tehnologică,… Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi
  • 39. Dezvoltarea unei arhitecturi software ia în calcul: factori calitativi vizând utilizabilitatea, performanța, securitatea, refolosirea datelor/codului etc. Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi
  • 40. 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. Sabin Buragawww.purl.org/net/busaco arhitecturi
  • 41. Dezvoltarea unei arhitecturi software ia în calcul: experiența recurgerea la arhitecturi & platforme existente șabloane de proiectare (design patterns) folosirea unor soluții “la cheie”: biblioteci, framework-uri management de proiecte etc. Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi
  • 42. client(i) firewall proxy middleware server(e) Web server(e) de aplicații framework-uri, 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 (CMS) aplicații/sisteme tradiționale Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi web: componente tipice
  • 43. Uzual, se adoptă arhitecturi stratificate (N-tier Web applications) Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi
  • 44. Dr. Sabin Buragawww.purl.org/net/busaco Câteva exemplificări privind arhitectura unor aplicații Web?
  • 45. 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. Sabin Buragawww.purl.org/net/busaco arhitecturi: exemplu – flickr
  • 46. 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 (prelucrare de imagini) Ajax (interacțiune asincronă) Linux (platformă de rulare) alte detalii la http://highscalability.com/flickr-architecture Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi: exemplu – flickr
  • 47. Dr. Sabin Buragawww.purl.org/net/busaco arhitectura inițială – conform (Cal Henderson, 2007)
  • 48. Interfețe de programare (API-uri) oferite de Flickr Dr. Sabin Buragawww.purl.org/net/busaco studiu de caz: flickr www.flickr.com/services/api/
  • 49. Scop: descoperire & management online de evenimente (e.g., conferințe cu caracter tehnologic) agregare de comunități – evenimentul ca obiect social suport pentru vorbitori & audiență, slide-uri,… + calendare & locații geografice concepte importante: conferences, user profiles, emails, dashboard, coverage, topics, guides Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi: exemplu – lanyrd
  • 50. Creat aproape complet în Python (folosind Django) și întreținut de 6 persoane 2.5 1.75 0.5 1.5 0.75 0.75 backend developers frontend developers mobile developers designers system administrators business operations Andrew Godwin, Inside Lanyrd’s Architecture, QCon London, 2013 Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi: exemplu – lanyrd
  • 52. Scop: oferirea de conținut deschis via o suită de aplicații Web colaborative: wiki-uri Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi: exemplu – wikipedia alături de Wikipedia, există Wiktionary, Wikinews, Wikibooks, Wikiquote, Wikisource, Wikiversity, Wikispecies, Wikimedia, Wikidata
  • 53. MediaWiki (sistemul wiki utilizat pentru toate serviciile) PHP (platforma pe care rulează MediaWiki) MySQL (soluția principală de stocare) Apache Lucene (indexare textuală, facilitând cautarea) ImageMagick, DjVu, TeX, rsvg, ploticus etc. (pentru procesare de conținuturi grafice în MediaWiki) Linux (platforma de rulare) detalii despre API: www.mediawiki.org/wiki/API:Main_page Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi: exemplu – wikipedia
  • 54. Dr. Sabin Buragawww.purl.org/net/busaco studiu de caz: wikimedia Wikipedia – arhitectura generală (Domas Mituzas, 2008) http://tinyurl.com/m9nlwvq
  • 55. Dr. Sabin Buragawww.purl.org/net/busaco Există anumite “rețete” privind proiectarea de aplicații Web?
  • 56. O problemă – oricare ar fi aceasta – poate apărea frecvent Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 57. Cei experimentați au găsit diverse soluții pentru problema în cauză, reușind să recunoască problema și să aleagă soluția (optimă) care poate fi aplicată într-un anumit context Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 58. Pattern (sablon) regulă ce exprimă o relație dintre un context, o problemă și o soluție inițial, cu utilizare în arhitectură Christopher Alexander, 1979 Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 59. Tradițional, pattern-urile se utilizează în proiectarea de software pattern  “mind sized” chunk of information lucrarea de referință: E. Gamma et al., Design Patterns, Addison-Wesley, 1995 Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 60. Pattern-uri de proiectare au fost folosite, ulterior, în alte arii interacțiune dintre om-calculator design și interacțiune Web, mobile computing modelare conceptuală proiectarea bazelor de date, ontologii,… Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 61. Un pattern poate descrie cunoștințele unui expert (pe baza experienței sale personale) în domeniul problemei în ceea ce privește recunoașterea problemei, a contextului și a soluției la acea problemă Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 62. Un pattern nu reprezinta o regulă fermă uneori nu trebuie aplicat!anti-patterns Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 63. Este necesară adoptarea unui vocabular comun corespunzător domeniului problemei pattern language Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 65. Specificarea și/sau “recunoașterea” unui pattern poate avea loc la diverse niveluri: Dr. Sabin Buragawww.purl.org/net/busaco proiectare 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,…) conceptual (knowledge modeling)
  • 66. Șablon de specificare a unui pattern: numele rezumatul problema contextul soluția exemplele utilizările Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 67. Exemple de colecții de sabloane (patterns repositories) privind proiectarea de software http://c2.com/cgi/wiki?DesignPatterns patterns of enterprise application architecture http://martinfowler.com/eaaCatalog/ interacțiunea cu utilizatorul http://profs.info.uaic.ro/~evalica/patterns/ Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 68. Șabloane de proiectare tradiționale creaționale Builder, Prototype, Singleton structurale Adapter, Bridge, Decorator, Façade, Flyweight, Proxy comportamentale Command, Iterator, Mediator, Observer, State, Visitor Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 69. 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. Sabin Buragawww.purl.org/net/busaco proiectare
  • 70. Session State Patterns Client Session State Server Session State Database Session State M. Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley (2003) Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 71. 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. Sabin Buragawww.purl.org/net/busaco proiectare
  • 72. Model View Controller șablon arhitectural descris în premieră în 1979 în contextul interacțiunii dintre om și calculator – Smalltalk (Xerox PARC) poate fi implementat și într-un limbaj neorientat-obiect încurajat/impus de framework-uri specifice Dr. Sabin Buragawww.purl.org/net/busaco proiectare: mvc
  • 73. Controller Dr. Sabin Buragawww.purl.org/net/busaco proiectare: mvc 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 va selecta un view corespunzător
  • 74. Model resursele gestionate de software – utilizatori, mesaje, produse etc. – au modele specifice desemnează datele și regulile (i.e. restricțiile) referitoare la dateconcepte vizând aplicația Web oferă controller-ului o reprezentare a datelor solicitate și e responsabil cu validarea datelor menite a fi stocate Dr. Sabin Buragawww.purl.org/net/busaco proiectare: mvc
  • 75. 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. Sabin Buragawww.purl.org/net/busaco proiectare: mvc
  • 76. etape tipice: (1) cerere trimisă de client – e.g., navigator Web, (2) dirijare cerere către controller, (3) recurgerea la un model, (4) furnizare reprezentare, (5) selectarea unui view, (6) prezentare conținut la client Dr. Sabin Buragawww.purl.org/net/busaco proiectare: mvc
  • 77. Arhitectura generică a unei aplicații Web va consta dintr-un set de resurse referitoare la controller, model si view uzual, framework-ul Web folosit impune o anumită structură a fișierelor aplicației ce va fi implementată Dr. Sabin Buragawww.purl.org/net/busaco proiectare: mvc
  • 79. structura de directoare în cazul unei aplicații Web folosind framework-ul CakePHP http://cakephp.org/ Dr. Sabin Buragawww.purl.org/net/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 framework-uri PHP similare www.phpwact.org/php/mvc_frameworks
  • 80. structura de directoare în cazul unei aplicații Web ce recurge la framework-ul Play pentru Java și Scala http://www.playframework.org/ Dr. Sabin Buragawww.purl.org/net/busaco ├───app │ ├───assets │ │ ├───javascripts │ │ └───stylesheets │ │ ├───apps │ │ ├───libs │ │ └───main │ ├───controllers │ ├───models │ └───views ├───conf ├───project └───public ├───images │ └───icons └───javascripts
  • 81. Dr. Sabin Buragawww.purl.org/net/busaco structura de directoare în cazul unei aplicații ASP.NET MVC http://www.asp.net/mvc
  • 82. arhitectura unei aplicații Web la nivel de client recurgând la Backbone.js – http://backbonejs.org/ Dr. Sabin Buragawww.purl.org/net/busaco Backbone.Events după Jeff Carouth (2012)
  • 83. Variante derivate: MVP (Model View Presenter) Passive View Supervising Controller PAC (Presentation Abstraction Control) Model View ViewModel http://aspiringcraftsman.com/2007/08/25/interactive-application-architecture/ http://addyosmani.com/resources/essentialjsdesignpatterns/book/ Dr. Sabin Buragawww.purl.org/net/busaco proiectare: mvc
  • 84. Dr. Sabin Buragawww.purl.org/net/busaco Prin ce mijloace poate fi implementată o aplicație Web?
  • 85. De la aplicații la API-uri & servere de aplicații Brian Mulloy, Web API Design, Apigee, 2012 http://offers.apigee.com/web-api-design-ebook/ Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 86. Server de aplicații Web eficientizarea proceselor de dezvoltare a aplicațiilor Web de anvergură Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 87. Server de aplicații Web se bazează pe interfețe de programare (API-uri) și/sau pe componente reutilizabile Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 88. Server de aplicații Web se integrează în unul/mai multe servere Web de asemenea, poate oferi propriul server Web Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 89. Server de aplicații Web poate încuraja sau impune o viziune arhitecturală privind dezvoltarea de aplicații Web principiu: separation of concerns Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 90.   HTML, CSS, SVG, WebGL etc. SQL, NoSQL, XML (XQuery), RDF,… View Model la nivel client(i) Web stocare persistentă  servere de aplicații, framework-uri Controller aplicație Web (la nivel de server) Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 91. Server de aplicații Web poate oferi suport pentru folosirea de machete de vizualizare (templates) pe baza unui software specific Web template system Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 92. Server de aplicații Web poate oferi suport pentru folosirea de machete de vizualizare (templates) pe baza unui software specific Web template system utilizând specificații de prezentare a conținutului (Web template), datele persistente (e.g., dintr-o bază de date) sunt folosite de un procesor (template engine) pentru a genera reprezentări – e.g., documente HTML Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 93. Server de aplicații Web poate oferi suport pentru folosirea de machete de vizualizare (templates) pe baza unui software specific Web template system la nivel de server Haml (Ruby), Mustache (C++, JS, PHP, Python, Scala,…), Smarty (PHP), Velocity (Java), XSLT (XML) etc. Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 94. Server de aplicații Web poate oferi suport pentru folosirea de machete de vizualizare (templates) pe baza unui software specific Web template system la nivel de client – disponibile pentru JavaScript Closure Templates, EJS, Mustache, Yeast,… Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 95. Server de aplicații Web poate include instrumente de generare de cod (scaffold generators) + depanatoare (debuggers), analizoare (profilers) și/sau optimizatoare de cod Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 96. 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ă Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 97. Exemple de framework-uri care facilitează dezvoltarea de aplicații Web la nivel de server Dr. Sabin Buragawww.purl.org/net/busaco implementare ASP.NET: ASP.NET MVC, Vici MVC Java: Play, Spring, Struts, Tapestry, WebObjects, Wicket JavaScript (node.js): Express, Geddy, Locomotive, Tower Perl: Catalyst, CGI::Application, Jifty, WebGUI PHP: CakePHP, CodeIgniter, Symfony, Yii, Zend Framework Python: Django, Grok, web2py, Zope Ruby: Camping, Nitro, Rails, Sinatra
  • 98. Web component parte a unei aplicații Web ce încapsulează o suită de funcții înrudite e.g., calendar, cititor de fluxuri de știri, buton de partajare a URL-ului în altă aplicație Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 99. Web component dezvoltare bazată pe o bibliotecă/framework Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 100. Web component dezvoltare bazată pe o bibliotecă/framework soluții “tradiționale”: Dojo Toolkit, jQuery UI, YUI,… versus cadrul general: Web Components (în lucru la W3C, 2013) cu implementările: Polymer (Google), X-Tag (Mozilla) Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 101. Widget aplicație – de sine-stătătoare sau inclusă într-un container (e.g., o pagină Web) – ce oferă o funcționalitate specifică rulează la nivel de client (platformă oferită de sistemul de operare și/sau navigator Web) Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 102. Widget Dr. Sabin Buragawww.purl.org/net/busaco implementare uzual, implementare pe baza standardelor: HTML, CSS, JS eventual, se poate recurge la un API W3C Proposed Recommendation (2012) www.w3.org/TR/widgets-apis/
  • 103. 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 Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 104. (Web) App o aplicație (Web) instalabilă care folosește API-urile oferite de o platformă: browser, server de aplicații, sistem de operare,… Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 105. (Web) App a distributed computer software application designed for optimal use on specific screen sizes and with particular interface technologies Robert Shilston, 2013 Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 106. (Web) App uzual, se poate obține via un app store (centralizat sau descentralizat) exemplu tipic: Chrome Apps https://developers.google.com/chrome/web-store/docs/index Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 107. (Web) App Dr. Sabin Buragawww.purl.org/net/busaco implementare alte exemple notabile: aplicații Windows 8 dezvoltate în JavaScript aplicații Web mobile pentru Firefox OS aplicații Web mobile pentru Kindle Fire și alte dispozitive
  • 108. native app web browser single page app adaptare după Adrian Colyer (2012) HTTP WebSockets aplicații Web & servicii (API-uri) Dr. Sabin Buragawww.purl.org/net/busaco app store platform (OS + device)
  • 109. API (Application Programming Interface) “any well-defined interface that defines the service that one component, module, or application provides to other software elements” detalii în Giovanni Asproni, “Writing usable APIs in practice”, SyncConf 2013 Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 110. API “de succes” – adaptare după (Bloch, 2005) ușor de învățat facil de folosit, chiar și în lipsa documentației previne utilizarea eronată stabil & sigur ușor de menținut suficient de expresiv facil de extins vezi și S. Clarke, “Measuring API Usability”: http://drdobbs.com/windows/184405654 Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 111. Dr. Sabin Buragawww.purl.org/net/busaco implementare strategia API first adoptată de Twitter (van der Schee, 2013) www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
  • 112. Dr. Sabin Buragawww.purl.org/net/busaco implementare diverse abordări vizând arhitectura aplicațiilor Web www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
  • 113. API public (disponibil pe baza unei licențe de utilizare) versus API privat (pentru uz intern) Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 114. API (Application Programming Interface) descriere (abstractă) prin RAML (RESTful API Modeling Language) propus de Uri Sarid – 2013 http://raml.org/ Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 115. Dr. Sabin Buragawww.purl.org/net/busaco testarea unui API public via Apigee Console https://apigee.com/console/
  • 116. Modele tradiționale de afaceri vizând API-urile John Musser, “API business models”, API Strategy Conference, 2013 Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 117. Dr. Sabin Buragawww.purl.org/net/busaco Modele actuale de afaceri privind API-urile John Musser, “API business models”, API Strategy Conference, 2013
  • 118. Dr. Sabin Buragawww.purl.org/net/busaco Modele actuale de afaceri privind API-urile John Musser, “API business models”, API Strategy Conference, 2013
  • 119. Dr. Sabin Buragawww.purl.org/net/busaco Modele actuale de afaceri privind API-urile John Musser, “API business models”, API Strategy Conference, 2013
  • 120. 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 Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 121. Dr. Sabin Buragawww.purl.org/net/busaco privire pragmatica exemplificare: acces la API-uri în Python – www.pythonapi.com
  • 122. Dr. Sabin Buragawww.purl.org/net/busaco Cum se pot combina date oferite de mai multe servicii Web și/sau API-uri?
  • 123. Combinarea – la nivel de client și/sau server – a datelor ce provin din surse (situri) multiple, oferindu-se o funcționalitate/experiență nouă Dr. Sabin Buragawww.purl.org/net/busaco mash-ups
  • 124. Se bazează pe fluxuri RSS/Atom, servicii Web, API-uri publice,… “curentul” SaaS (Software As A Service) Dr. Sabin Buragawww.purl.org/net/busaco mash-ups
  • 125. combinare utilizarea de surse de date multiple poate avea caracter multidimensional: subiect de interes + locație geografică + moment de timp Yahoo! music search + Google maps + Eventful Dr. Sabin Buragawww.purl.org/net/busaco mash-ups
  • 126. Dr. Sabin Buragawww.purl.org/net/busaco mash-ups proiectul ubiGuide (Ionuț Dănilă & Mihaela Ghimiciu, 2013)
  • 127. servicii publice folosite: ABBYY Cloud OCR, AlchemyAPI, Google Places API, YouTube API,… biblioteci: Flickr.NET, GART (Geo Augmented Reality Toolkit), Hammock, TweetSharp etc. Dr. Sabin Buragawww.purl.org/net/busaco ubiGuide
  • 128. vizualizare pot fi adoptate diverse tehnici de vizualizare (prezentare) a datelor: cartografică, tag cloud-uri, tridimensională, … Dr. Sabin Buragawww.purl.org/net/busaco mash-ups
  • 129. Dr. Sabin Buragawww.purl.org/net/busaco mash-ups proiectul DataEx (Andrei Cojocaru, 2013) – vizualizarea bazelor de cunoștințe de mari dimensiuni (în acest caz: Freebase)
  • 130. agregare gruparea datelor provenite din mai multe surse și analizarea lor: statistici, clasificări, predicții,… e.g., folosind data mining se pot releva aspecte “ascunse” ale datelor procesate Dr. Sabin Buragawww.purl.org/net/busaco mash-ups
  • 131. Dr. Sabin Buragawww.purl.org/net/busaco Zemanta – recomandare “inteligentă” de resurse
  • 132. Surse de date (data feeds) Interfețe de programare (API-uri) Biblioteci/framework-uri pentru dezvoltare Instrumente interactive (Web tools) Platforme (Platform As A Service) Atom, RSS, geoRSS, microdate HTML5, RDFa,… specifice serviciilor publice & de procesare JSON/XML framework-uri Web generice sau oferite de organizații eventual, disponibile în cloud e.g., Yahoo! Pipes Heroku, Google App Engine, Nodejitsu, Windows Azure,… Dr. Sabin Buragawww.purl.org/net/busaco mash-ups
  • 133. Dr. Sabin Buragawww.purl.org/net/busaco lista mash-up-urilor existente, mash-ups inclusiv cu exemple de cod-sursă: www.programmableweb.com/mashups/directory
  • 134. performanță: scalabilitatea & latența limite ale API-urilor + existența versiunilor multiple drepturi de autor asupra datelor & licențiere securitate: abuz, confidențialitate, încredere etc. monetizare lipsa unei interoperabilități reale între platforme Dr. Sabin Buragawww.purl.org/net/busaco mash-ups: aspecte de interes
  • 135. Actualmente, aplicațiile Web sunt exploatate și integrate continuu (continuous integration & deployment) fenomenul perpetual beta a se vizita The Museum of Modern Betas: http://momb.socio-kybernetics.net/ Dr. Sabin Buragawww.purl.org/net/busaco “concluzii”
  • 136. rulare dezvoltare code repositories instrumente de dezvoltare (IDE) Development as a Service Dr. Sabin Buragawww.purl.org/net/busaco Decker (2012) A. Iqbal, M. Haunsenblas, S. runtime environment
  • 137. runtime environment rulare dezvoltare code repositories instrumente de dezvoltare (IDE) BitBucket, GitHub, SourceForge, Unfuddle Web: CodeRun, Cloud9, eXo Cloud desktop: Eclipse, <oXygen/>, Visual Studio Dr. Sabin Buragawww.purl.org/net/busaco Google App Engine, Heroku, Jelastic, Windows Azure
  • 138. Un număr tot mai mare de aplicații (servicii) populare disponibile on-line se bazează pe conținut generat de utilizatori de consultat statisticile oferite de Alexa: http://www.alexa.com/topsites Dr. Sabin Buragawww.purl.org/net/busaco “concluzii”
  • 139. “What should every programmer know about Web development?” – http://is.gd/web_know “Getting Real. The smarter, faster, easier way to build a successful Web application” http://gettingreal.37signals.com/ The Web engineer’s online toolbox http://is.gd/web_eng_tools Web developer checklist – http://webdevchecklist.com/ Dr. Sabin Buragawww.purl.org/net/busaco alte resurse de interes
  • 140. Dr. Sabin Buragawww.purl.org/net/busaco rezumat arhitectura aplicațiilor Web orientate spre servicii
  • 141. Servicii Web model de calcul YQL model de acces la date mash-up-uri la nivel de dispozitiv mobil model de implementare model de interacțiune model de comunicare episodul viitor: aspecte privind modelarea cunoștințelor Dr. Sabin Buragawww.purl.org/net/busaco Ofertant de servicii de telefonie mobilă