servicii Web, API-uri & mashup-uri
aspecte arhitecturale

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

Dezvoltarea aplicațiil...
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.pu...
suportul oferit de platforma hardware/software
la nivel de server(e) și/sau de client(i)

Dr. Sabin Buragawww.purl.org/ne...
creșterea masei de utilizatori,
având așteptări tot mai mari din partea software-ului

Dr. Sabin Buragawww.purl.org/net/b...
neadaptare la cerințele de tip business

development vs. marketing vs. management

Dr. Sabin Buragawww.purl.org/net/busac...
privind proiectele Web de anvergură

întârzieri în lansare
neîncadrare în buget
lipsa funcționalității
calitatea precară a...
Dr. Sabin Buragawww.purl.org/net/busaco

dezvoltarea aplicațiilor Web

Crumlish & Malone, 2009
corectitudine & robustete (reliability)
extindere + reutilizare (modularitate)
compatibilitate
eficiență (asigurarea perfo...
facilitarea interacțiunii cu utilizatorul (usability)
funcționalitate
relevanța momentului lansării (timeliness)
mentenabi...
alte aspecte de interes:
integritate
reparabilitate
verificabilitate – inclusiv monitorizare (logging)
economie

Dr. Sabin...
scopuri & cerinte clar specificate
dezvoltarea sistematică, în faze, a aplicațiilor Web
planificarea judicioasă a etapelor...
scopuri & cerinte clar specificate
dezvoltarea sistematică, în faze, a aplicațiilor Web
planificarea judicioasă a etapelor...
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/m...
Metodologii orientate spre modele referitoare la:
date – RMM (Relationship Management Methodology),
Hera, WebML
interacțiu...
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 (deploymen...
programare (server + client)
documentare
cerințe

creare/adaptare
de conținut
testare

arhitectura info
+ navigare

menten...
start with needs
do less
design with data
do the hard work to make it simple
iterate. then iterate again
build for inclusi...
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)
w...
Documentare privind domeniul aplicației Web

cu atragerea experților în domeniul problemei

Dr. Sabin Buragawww.purl.org/...
Aspecte specifice aplicațiilor Web
Lipsa unei structuri reale (tangibile)
Multi-disciplinaritate
Necunoașterea publicului-...
Viziune (big idea)
Basecamp: “project management is communication”
Flickr: “online photo management & sharing application”...
Punctele de plecare în dezvoltarea Flickr
presupuneri inițiale (assumptions):
oamenilor le place să-și împărtășească amint...
Privitoare la conținut
audiență – e.g., internaționalizare
context de navigare
preferințe ale utilizatorului
disponibilita...
Interacțiunea cu utilizatorul în contextul Web
inclusiv vizând Web-ul social
content mash-up
“it’s yours to take, re-arran...
Calitative
funcționalitate
fiabilitate
utilizabilitate
eficiență
mentenabilitate
independența de platformă

Dr. Sabin Bura...
Privitoare la mediul de execuție
(in)dependența de navigatorul Web
wired vs. wireless
on-line vs. off-line

Dr. Sabin Bura...
Referitoare la evoluție
utilizatorul final exploatează aplicația Web
fără a trebui s-o (re)instaleze pe calculator

Dr. Sa...
inițial:
oferirea funcționalităților esențiale (less is more)
versiuni ulterioare:
extinderea aplicației Web – pe baza unu...
Calitatea aplicatiilor Web este influențată
de arhitectura pe care se bazează

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

a...
Dezvoltarea unei arhitecturi software ia în calcul:

cerințe funcționale
impuse de clienți, vizitatori, concurență,
manage...
Dezvoltarea unei arhitecturi software ia în calcul:

factori calitativi
vizând utilizabilitatea, performanța,
securitatea,...
Dezvoltarea unei arhitecturi software ia în calcul:

aspecte tehn(olog)ice
platforma hardware/software (sistem de operare)...
Dezvoltarea unei arhitecturi software ia în calcul:

experiența
recurgerea la arhitecturi & platforme existente
șabloane d...
client(i)
firewall
proxy
middleware
server(e) Web
server(e) de aplicații
framework-uri, biblioteci, alte componente
server...
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ă...
PHP (procesare – application logic, acces la API,
prezentare de conținut via Smarty, modul de e-mail)
Perl (validarea date...
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....
Scop: descoperire & management online de evenimente
(e.g., conferințe cu caracter tehnologic)
agregare de comunități – eve...
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 develop...
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/...
MediaWiki (sistemul wiki utilizat pentru toate serviciile)
PHP (platforma pe care rulează MediaWiki)
MySQL (soluția princi...
Dr. Sabin Buragawww.purl.org/net/busaco

studiu de caz: wikimedia

Wikipedia – arhitectura generală (Domas Mituzas, 2008)...
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 (...
Pattern (sablon)
regulă ce exprimă o relație
dintre un context, o problemă și o soluție
inițial, cu utilizare în arhitectu...
Tradițional, pattern-urile se utilizează în
proiectarea de software
pattern  “mind sized” chunk of information
lucrarea d...
Pattern-uri de proiectare au fost folosite,
ulterior, în alte arii
interacțiune dintre om-calculator
design și interacțiu...
Un pattern poate descrie cunoștințele unui expert
(pe baza experienței sale personale)
în domeniul problemei în ceea ce pr...
Un pattern nu reprezinta o regulă fermă

uneori nu trebuie aplicat!anti-patterns

Dr. Sabin Buragawww.purl.org/net/busac...
Este necesară adoptarea unui vocabular comun
corespunzător domeniului problemei
pattern language

Dr. Sabin Buragawww.pu...
Pattern-uri privitoare la:
proiectare
arhitectură
analiză
dezvoltare
structură
comportament
…

Dr. Sabin Buragawww.purl.o...
Specificarea și/sau “recunoașterea” unui pattern poate
avea loc la diverse niveluri:

Dr. Sabin Buragawww.purl.org/net/bu...
Șablon de specificare a unui pattern:
numele
rezumatul
problema
contextul
soluția
exemplele
utilizările

Dr. Sabin Buraga...
Exemple de colecții de sabloane
(patterns repositories)
privind proiectarea de software
http://c2.com/cgi/wiki?DesignPatte...
Șabloane de proiectare tradiționale
creaționale
Builder, Prototype, Singleton
structurale
Adapter, Bridge, Decorator, Faça...
Web Patterns
Model View Controller
Page Controller
Front Controller
Template View
Transform View
Application Controller
M....
Session State Patterns
Client Session State
Server Session State
Database Session State

M. Fowler, Patterns of Enterprise...
Data Source Architectural Patterns
Table Data Gateway
Row Data Gateway
Active Record
Data Mapper

M. Fowler, Patterns of E...
Model View Controller
șablon arhitectural
descris în premieră în 1979 în contextul interacțiunii
dintre om și calculator –...
Controller

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

proiectare: mvc

responsabil cu preluarea cererilor de la client
(ce...
Model
resursele gestionate de software – utilizatori, mesaje,
produse etc. – au modele specifice
desemnează datele și regu...
View
furnizează diverse maniere de prezentare a datelor
furnizate de model via controller
pot exista view-uri multiple,
al...
etape tipice:
(1) cerere trimisă de client – e.g., navigator Web,
(2) dirijare cerere către controller,
(3) recurgerea la ...
Arhitectura generică a unei aplicații Web
va consta dintr-un set de resurse referitoare la
controller, model si view

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

├───app
│
├───assets
│
│
├───images
│
│
├───javascripts
│
│
└───stylesheets
│
├─...
structura de directoare
în cazul unei aplicații Web
folosind framework-ul
CakePHP
http://cakephp.org/

Dr. Sabin Buragaww...
structura de directoare în cazul unei aplicații Web
ce recurge la framework-ul Play pentru Java și Scala
http://www.playfr...
Dr. Sabin Buragawww.purl.org/net/busaco

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

Dr. Sabin Buragawww....
Variante derivate:
MVP (Model View Presenter)
Passive View
Supervising Controller
PAC (Presentation Abstraction Control)
M...
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...
Server de aplicații Web
eficientizarea proceselor de dezvoltare
a aplicațiilor Web de anvergură

Dr. Sabin Buragawww.purl...
Server de aplicații Web
se bazează pe interfețe de programare (API-uri)
și/sau pe componente reutilizabile

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

Dr. Sabi...
Server de aplicații Web
poate încuraja sau impune o viziune arhitecturală
privind dezvoltarea de aplicații Web
principiu: ...




HTML, CSS, SVG, WebGL etc.

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

View

Model

la nivel client(i) Web

stocare persistent...
Server de aplicații Web
poate oferi suport pentru folosirea de machete
de vizualizare (templates) pe baza unui software sp...
Server de aplicații Web
poate oferi suport pentru folosirea de machete
de vizualizare (templates) pe baza unui software sp...
Server de aplicații Web
poate oferi suport pentru folosirea de machete
de vizualizare (templates) pe baza unui software sp...
Server de aplicații Web
poate oferi suport pentru folosirea de machete
de vizualizare (templates) pe baza unui software sp...
Server de aplicații Web
poate include instrumente de generare de cod
(scaffold generators)
+
depanatoare (debuggers),
anal...
Framework (cadru de lucru)
facilitează dezvoltarea de aplicații Web complexe,
simplificând unele operații uzuale
(e.g., ac...
Exemple de framework-uri care facilitează
dezvoltarea de aplicații Web la nivel de server

Dr. Sabin Buragawww.purl.org/n...
Web component
parte a unei aplicații Web
ce încapsulează o suită de funcții înrudite

e.g., calendar, cititor de fluxuri d...
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
ca...
Widget
aplicație – de sine-stătătoare sau
inclusă într-un container (e.g., o pagină Web) –
ce oferă o funcționalitate spec...
Widget

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

implementare

uzual, implementare pe baza standardelor: HTML, CSS, JS
ev...
Add-on
denumire generică a aplicațiilor asociate unui browser
(extensii, teme vizuale, dicționare,
maniere de căutare pe W...
(Web) App
o aplicație (Web) instalabilă
care folosește API-urile oferite de o platformă:
browser, server de aplicații, sis...
(Web) App
a distributed computer software application designed for
optimal use on specific screen sizes and with particula...
(Web) App
uzual, se poate obține via un app store
(centralizat sau descentralizat)

exemplu tipic: Chrome Apps
https://dev...
(Web) App

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

implementare

alte exemple notabile:
aplicații Windows 8 dezvoltate î...
native
app

web browser
single
page
app

adaptare după Adrian Colyer (2012)

HTTP
WebSockets

aplicații
Web
&
servicii
(AP...
API (Application Programming Interface)
“any well-defined interface that defines
the service that one component, module, o...
API “de succes” – adaptare după (Bloch, 2005)
ușor de învățat
facil de folosit, chiar și în lipsa documentației
previne ut...
Dr. Sabin Buragawww.purl.org/net/busaco

implementare

strategia API first adoptată de Twitter (van der Schee, 2013)
www....
Dr. Sabin Buragawww.purl.org/net/busaco

implementare

diverse abordări vizând arhitectura aplicațiilor Web
www.leasewebl...
API public
(disponibil pe baza unei licențe de utilizare)
versus

API privat
(pentru uz intern)

Dr. Sabin Buragawww.purl...
API (Application Programming Interface)
descriere (abstractă) prin RAML
(RESTful API Modeling Language)
propus de Uri Sari...
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. Sa...
Dr. Sabin Buragawww.purl.org/net/busaco

Modele actuale de afaceri privind API-urile

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

Modele actuale de afaceri privind API-urile

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

Modele actuale de afaceri privind API-urile

John Musser, “API business models”,...
SDK (Software Development Kit)
încapsulează funcționalitățile API-ului într-o bibliotecă
(implementată într-un anumit limb...
Dr. Sabin Buragawww.purl.org/net/busaco

privire pragmatica

exemplificare: acces la API-uri în Python – www.pythonapi.co...
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ționali...
Se bazează pe fluxuri RSS/Atom,
servicii Web, API-uri publice,…

“curentul” SaaS (Software As A Service)

Dr. Sabin Buraga...
combinare
utilizarea de surse de date multiple
poate avea caracter multidimensional:
subiect de interes + locație geografi...
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...
vizualizare
pot fi adoptate diverse tehnici de vizualizare
(prezentare) a datelor:
cartografică,
tag cloud-uri,
tridimensi...
Dr. Sabin Buragawww.purl.org/net/busaco

mash-ups

proiectul DataEx (Andrei Cojocaru, 2013) – vizualizarea bazelor
de cun...
agregare
gruparea datelor provenite din mai multe surse
și analizarea lor: statistici, clasificări, predicții,…

e.g., fol...
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 intera...
Dr. Sabin Buragawww.purl.org/net/busaco

lista mash-up-urilor existente,
mash-ups
inclusiv cu exemple de cod-sursă:
www.p...
performanță: scalabilitatea & latența
limite ale API-urilor + existența versiunilor multiple
drepturi de autor asupra date...
Actualmente, aplicațiile Web
sunt exploatate și integrate continuu
(continuous integration & deployment)

fenomenul perpet...
rulare
dezvoltare
code repositories

instrumente de
dezvoltare (IDE)

Development as a Service

Dr. Sabin Buragawww.purl....
runtime environment

rulare
dezvoltare
code repositories

instrumente de
dezvoltare (IDE)

BitBucket, GitHub,
SourceForge,...
Un număr tot mai mare de aplicații (servicii)
populare disponibile on-line se bazează
pe conținut generat de utilizatori

...
“What should every programmer know
about Web development?” – http://is.gd/web_know
“Getting Real. The smarter, faster, eas...
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
m...
Upcoming SlideShare
Loading in …5
×

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

1,808
-1

Published on

Dezvoltarea aplicațiilor Web (3/12) — detalii la http://profs.info.uaic.ro/~busaco/teach/courses/wade/web-film.html

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,808
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
40
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. servicii Web, API-uri & mashup-uri aspecte arhitecturale Dr. Sabin Buragawww.purl.org/net/busaco Dezvoltarea aplicațiilor Web
  2. 2. Harriet Tubman Dr. Sabin Buragawww.purl.org/net/busaco “Fiecare vis începe cu un visător.”
  3. 3. Dr. Sabin Buragawww.purl.org/net/busaco Care sunt cele mai importante aspecte privind ingineria Web?
  4. 4. Dr. Sabin Buragawww.purl.org/net/busaco Aplicații Web  sisteme software complexe, în evoluție permanentă
  5. 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. 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. 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. 8. neadaptare la cerințele de tip business development vs. marketing vs. management Dr. Sabin Buragawww.purl.org/net/busaco Realitate
  9. 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. 10. Dr. Sabin Buragawww.purl.org/net/busaco dezvoltarea aplicațiilor Web Crumlish & Malone, 2009
  11. 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. 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. 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. 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. 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. 16. Dr. Sabin Buragawww.purl.org/net/busaco În ce mod dezvoltăm o aplicație Web?
  17. 17. Uzual, se recurge la o metodologie Dr. Sabin Buragawww.purl.org/net/busaco modelare
  18. 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. 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. 20. Robert Baxley Dr. Sabin Buragawww.purl.org/net/busaco
  21. 21. Jesse James Garrett Dr. Sabin Buragawww.purl.org/net/busaco
  22. 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. 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. 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. 25. Stabilirea standardelor de calitate content users context Dr. Sabin Buragawww.purl.org/net/busaco cerințe
  26. 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. 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. 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. 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. 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. 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. 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
  33. 33. Calitative funcționalitate fiabilitate utilizabilitate eficiență mentenabilitate independența de platformă Dr. Sabin Buragawww.purl.org/net/busaco noi tipuri de cerințe
  34. 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. 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. 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. 37. Calitatea aplicatiilor Web este influențată de arhitectura pe care se bazează Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi
  38. 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. 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. 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. 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. 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. 43. Uzual, se adoptă arhitecturi stratificate (N-tier Web applications) Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi
  44. 44. Dr. Sabin Buragawww.purl.org/net/busaco Câteva exemplificări privind arhitectura unor aplicații Web?
  45. 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. 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. 47. Dr. Sabin Buragawww.purl.org/net/busaco arhitectura inițială – conform (Cal Henderson, 2007)
  48. 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. 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. 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
  51. 51. Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi: exemplu – lanyrd
  52. 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. 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. 54. Dr. Sabin Buragawww.purl.org/net/busaco studiu de caz: wikimedia Wikipedia – arhitectura generală (Domas Mituzas, 2008) http://tinyurl.com/m9nlwvq
  55. 55. Dr. Sabin Buragawww.purl.org/net/busaco Există anumite “rețete” privind proiectarea de aplicații Web?
  56. 56. O problemă – oricare ar fi aceasta – poate apărea frecvent Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  57. 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. 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. 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. 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. 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. 62. Un pattern nu reprezinta o regulă fermă uneori nu trebuie aplicat!anti-patterns Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  63. 63. Este necesară adoptarea unui vocabular comun corespunzător domeniului problemei pattern language Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  64. 64. Pattern-uri privitoare la: proiectare arhitectură analiză dezvoltare structură comportament … Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  65. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  78. 78. 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/
  79. 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. 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. 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. 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. 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. 84. Dr. Sabin Buragawww.purl.org/net/busaco Prin ce mijloace poate fi implementată o aplicație Web?
  85. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 99. Web component dezvoltare bazată pe o bibliotecă/framework Dr. Sabin Buragawww.purl.org/net/busaco implementare
  100. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 115. Dr. Sabin Buragawww.purl.org/net/busaco testarea unui API public via Apigee Console https://apigee.com/console/
  116. 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. 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. 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. 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. 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. 121. Dr. Sabin Buragawww.purl.org/net/busaco privire pragmatica exemplificare: acces la API-uri în Python – www.pythonapi.com
  122. 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. 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. 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. 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. 126. Dr. Sabin Buragawww.purl.org/net/busaco mash-ups proiectul ubiGuide (Ionuț Dănilă & Mihaela Ghimiciu, 2013)
  127. 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. 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. 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. 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. 131. Dr. Sabin Buragawww.purl.org/net/busaco Zemanta – recomandare “inteligentă” de resurse
  132. 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. 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. 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. 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. 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. 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. 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. 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. 140. Dr. Sabin Buragawww.purl.org/net/busaco rezumat arhitectura aplicațiilor Web orientate spre servicii
  141. 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ă

×