2. infoeducatie 2009 :: servicii web prin rest
pasiune muzică
pictură
literatură
@busaco fotografie
arte
XML România
Computer Science profesor A. I. Cuza
cercetare facultate
Web interacțiune
conferințe
semantic design
cărți
cursuri programare
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
4. infoeducatie 2009 :: servicii web prin rest
oferirea unui spațiu de comunicare inter‐umană
partajarea cunoștințelor
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
5. infoeducatie 2009 :: servicii web prin rest
exploatarea puterii computaționale
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
6. infoeducatie 2009 :: servicii web prin rest
resursele sunt identificate prin adresa lor
identificator uniform de resurse
URI – Uniform Resource Identifier
http://infoeducatie.ro/2009/participanti/tux
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
7. infoeducatie 2009 :: servicii web prin rest
accesul la conținutul – reprezentarea – resurselor Web
se realizează printr‐un protocol
HTTP – HyperText Transfer Protocol
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
8. infoeducatie 2009 :: servicii web prin rest
pagini Web
resursele – documentele – includ <marcaje />
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
9. infoeducatie 2009 :: servicii web prin rest
marcajele conțin la rândul lor URI‐uri hipertext
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
11. infoeducatie 2009 :: servicii web prin rest
soluții multi‐platformă, slab‐conectate
integrarea facilă la nivel de Web
a aplicațiilor, serviciilor & sistemelor
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
12. infoeducatie 2009 :: servicii web prin rest
necesitatea recurgerii la standarde
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
13. infoeducatie 2009 :: servicii web prin rest
soluții multi‐platformă, slab‐conectate
datele să poată fi descrise pentru a fi “înțelese”
de calculatoare și pentru a fi interconectate ușor
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
14. infoeducatie 2009 :: servicii web prin rest
servicii atașabile (pluggable) & versatile
SaaS – Software as a Service
ASP – Application Service Provider
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
16. infoeducatie 2009 :: servicii web prin rest
există un model arhitectural de dezvoltare
a serviciilor la nivel de web?
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
17. infoeducatie 2009 :: servicii web prin rest
divizarea aplicațiilor în servicii – independente –
care se pot compune,
menite a se conecta & orchestra în mod spontan
în cadrul proceselor de afaceri/tehnice
web component‐based software
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
18. infoeducatie 2009 :: servicii web prin rest
“the web is the computer”
disponibilitatea unei/unor arhitecturi care…
oferă suport pentru paradigme de comunicare
bazată pe Web între aplicații eterogene
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
19. infoeducatie 2009 :: servicii web prin rest
“the web is the computer”
disponibilitatea unei/unor arhitecturi care…
permit(e) localizarea transparentă a serviciilor
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
20. infoeducatie 2009 :: servicii web prin rest
“the web is the computer”
disponibilitatea unei/unor arhitecturi care…
facilitează adăugarea, înlocuirea, eliminarea
serviciilor în mod dinamic
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
21. infoeducatie 2009 :: servicii web prin rest
“the web is the computer”
disponibilitatea unei/unor arhitecturi care…
ascund(e) dezvoltatorului detaliile de sistem
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
23. infoeducatie 2009 :: servicii web prin rest
software oferind o funcționalitate specifică
spelling checking
stocare de date
mesagerie instantanee
agregare de știri
curs valutar
realizare de statistici
…
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
24. infoeducatie 2009 :: servicii web prin rest
utilizate – la distanță – de alte aplicații/servicii
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
25. infoeducatie 2009 :: servicii web prin rest
accesate standardizat via Web
URI
HTTP
XML
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
26. infoeducatie 2009 :: servicii web prin rest
serviciul unei agenții de turism
oferirea – și vânzarea, eventual – a unor formule
de petrecere a vacanței
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
27. infoeducatie 2009 :: servicii web prin rest
serviciul unei agenții de turism
utilizează alte servicii (software) disponibile pe Web:
tranzacții financiare
servicii hoteliere
servicii de transport
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
28. infoeducatie 2009 :: servicii web prin rest
cum am implementa un serviciu?
script‐uri CGI sau utilizarea serverelor de aplicații Web
ASP.NET, JSP,
PHP, RoR,…
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
29. infoeducatie 2009 :: servicii web prin rest
maniera clasică de interacțiune cu utilizatorul
utilizatorul – nu neapărat uman ☺ – vizitează
o pagină și formulează o cerere (e.g., via un formular)
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
30. infoeducatie 2009 :: servicii web prin rest
maniera clasică de interacțiune cu utilizatorul
serviciul implementat oferă un răspuns
uzual, un document (X)HTML
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
31. infoeducatie 2009 :: servicii web prin rest
tradițional, aplicația oferă o interfață‐utilizator
disponibilă pe web
cererile sunt capt(ur)ate via formulare + legături hipertext
utilizatorii umani trebuie să interpreteze etichetele
și câmpurile de dialog + răspunsul recepționat
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
32. infoeducatie 2009 :: servicii web prin rest
cum obținem răspunsul pentru a fi (re)folosit
în programele noastre?
procesarea datelor din codul HTML web scrapping
<tr><td>valoare</td><td><input name="val" value="0" readonly type="text"></td></tr>
<tr><td>total (cu TVA)</td><td><input name="cutva" value="0" readonly type="text"></td></tr>
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
33. infoeducatie 2009 :: servicii web prin rest
cum obținem răspunsul pentru a fi (re)folosit
în programele noastre?
???!
orice modificare în marcaje rescrierea programului
de preluare a datelor din documentul HTML
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
34. infoeducatie 2009 :: servicii web prin rest
cum are loc schimbul de date între servicii web
și alte aplicații?
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
35. infoeducatie 2009 :: servicii web prin rest
ce‐ar fi să indicăm datele de intrare și
răspunsul oferit de serviciul web
într‐un format standardizat?
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
36. infoeducatie 2009 :: servicii web prin rest
posibile soluții:
“dialog”
XML‐RPC prin XML
SOAP
POX (Plain Old XML)
JSON (JavaScript Object Notation)
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
37. infoeducatie 2009 :: servicii web prin rest
REpresenta‐
tional State
Transfer
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
38. infoeducatie 2009 :: servicii web prin rest
stil arhitectural de dezvoltare a aplicațiilor Web
cu focalizare asupra reprezentării datelor
Roy Fielding, 2000
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
39. infoeducatie 2009 :: servicii web prin rest
rezultatul unei procesări conduce la returnarea
unei reprezentări de resursă
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
40. infoeducatie 2009 :: servicii web prin rest
rezultatul unei procesări conduce la returnarea
unei reprezentări de resursă
resursă Web = blog‐ul unei persoane,
fotografia unui utilizator, flux de știri, program etc.
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
41. infoeducatie 2009 :: servicii web prin rest
rezultatul unei procesări conduce la returnarea
unei reprezentări de resursă
reprezentare = (X)HTML, JPEG, PNG, RSS, Atom, SVG,…
desemnată de tipuri MIME
text/html, image/png, application/xhtml+xml etc.
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
42. infoeducatie 2009 :: servicii web prin rest
rezultatul unei procesări conduce la returnarea
unei reprezentări de resursă
reprezentările aceleași resurse
– desemnate de un URI unic – pot fi multiple
reprezentare1 reprezentare2
(XHTML) (Atom)
resursa
URI
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
43. infoeducatie 2009 :: servicii web prin rest
rezultatul unei procesări conduce la returnarea
unei reprezentări de resursă
fiecare reprezentare a unei resurse are asociat un URL
URL URL
reprezentare1 reprezentare2
(XHTML) (Atom)
resursa
URI
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
44. infoeducatie 2009 :: servicii web prin rest
clienții – e.g., navigatoare Web, roboti, player‐e –
interacționează cu reprezentările resurselor via verbe
(“accesează”: GET, “modifică”: POST, “șterge”: DELETE,…)
GET POST GET DELETE
URL URL
reprezentare1 reprezentare2
(XHTML) (Atom)
resursa
URI
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
45. infoeducatie 2009 :: servicii web prin rest
orice accesare a unei reprezentări
plasează aplicația – ori clientul Web – într‐o stare
care va fi schimbată în urma unui transfer
de date (accesarea altei reprezentări)
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
46. infoeducatie 2009 :: servicii web prin rest
http://blog.info/mesaj
http://blog.info/ http://blog.info/mesaj/edit
reprezentare2
reprezentare1 reprezentare3
(XHTML)
(XHTML) (XHTML)
GET POST
resursa2
resursa1 resursa3
http://blog.info/stiri
reprezentare4
GET (Atom)
resursa4
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
47. infoeducatie 2009 :: servicii web prin rest
transferul se realizează prin protocolul HTTP
reprezentarea este modelată în XML
și indicată prin tipuri MIME
adresabilitatea se rezolvă via URI
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
48. infoeducatie 2009 :: servicii web prin rest
aplicațiile ce invocă funcționalități (servicii)
vor consuma reprezentări de resurse – în stilul pull
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
49. infoeducatie 2009 :: servicii web prin rest
fiecare cerere este considerată independentă,
fără a se lua în considerație contextul – stateless
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
50. infoeducatie 2009 :: servicii web prin rest
implementarea unui magazin on‐line oferind dulciuri
tipuri de resurse (Sortim & Utiliz), identificate unic de URI
http://www.dulciuri.biz/sortim/rahat
URI intuitiv
așa‐zis user/SEO friendly
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
51. infoeducatie 2009 :: servicii web prin rest
serviciile oferite de Flickr.com
acces – folosind HTTP (e.g., GET, POST) – via URI‐ul
http://api.flickr.com/services/rest/
pentru a invoca un serviciu Flickr,
se precizează metoda + parametrii (dacă există)
http://api.flickr.com/services/rest/?method=flickr.photos.getInfo&...
se înlocuiește cu
funcționalitatea dorită
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
52. infoeducatie 2009 :: servicii web prin rest
serviciile oferite de Del.icio.us
managementul adreselor Web favorite (bookmark‐uri)
listarea bookmark‐urilor
(eventual, filtrate/grupate după diverse criterii)
managementul bookmark‐urilor:
adăugare, editare, ștergere
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
53. infoeducatie 2009 :: servicii web prin rest
interfața web cu utilizatorul
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
54. infoeducatie 2009 :: servicii web prin rest
Resursa URL Metoda Reprezentare
bookmark /bookmarks/{md5} GET application/bookmark+xml
bookmark /bookmarks/{md5} PUT application/bookmark+xml
bokmark /bookmarks/{md5} DELETE
listă de
/bookmarks GET application/atom+xml
bookmark‐uri
listă de utilizatori /users GET application/atom+xml
listă de tag‐uri
(termeni de /tags GET application/atom+xml
conținut)
pagina principală / GET application/delicious+xml
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
55. infoeducatie 2009 :: servicii web prin rest
obținerea bookmark‐urilor:
GET /bookmarks răspuns XML (Atom) dat de
200 OK Del.icio.us
Content-type: application/atom+xml
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Bookmarks</title>
<entry> digest MD5
<title>O resursa interesanta</title>
<link href="/bookmarks/a211528fb5108cddaa4b0d3aeccdbdcf"/>
<summary>http://undeva.info/o-resursa-interesanta</summary>
</entry>
<!-- eventual, alte elemente <entry>… -->
</feed>
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
56. infoeducatie 2009 :: servicii web prin rest
GET /bookmarks/a211528fb5108cddaa4b0d3aeccdbdcf
200 OK
Content-type: application/bookmark+xml
<bookmark>
<title>O resursa interesanta</title>
<url>http://undeva.info/o-resursa-interesanta</url>
<user href="/users/tux">tux</user>
<tags>
<tag href="/tags/interesting">interesting</tag>
<tag href="/tags/penguin">penguin</tag>
</tags>
</bookmark>
preluarea unui bookmark: răspuns XML dat de serviciul Del.icio.us
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
57. infoeducatie 2009 :: servicii web prin rest
cum accesăm reprezentări de resurse web
Dr. Sabin‐Corneliu BuragaREST?
prin – www.purl.org/net/busaco
58. infoeducatie 2009 :: servicii web prin rest
biblioteci/API‐uri implementând HTTP
libcURL (C, cu portări pentru Perl, PHP, Ruby, Tcl,…)
libwww (C, Perl)
httplib (Python)
Net:HTTP (Ruby)
etc.
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
59. infoeducatie 2009 :: servicii web prin rest
exemplu: trimiterea unui mesaj la Twitter.com
curl --basic --user utilizator:parola --data status="rest!"
http://twitter.com/statuses/update.xml
<status>
<created_at>Wed Jul 29 15:25:05 +0000 2009</created_at>
<text>rest!</text>
<truncated>false</truncated>
<user>
<name>Sabin Buraga</name>
<description>A computer scientist, an artist, and more!</description>
…
</status>
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
60. infoeducatie 2009 :: servicii web prin rest
biblioteci/API‐uri implementând HTTP
permit dezvoltarea de aplicații desktop, mobile etc.
suport pentru implementarea de mash‐up‐uri pe server
nu funcționează în navigatorul web
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
61. infoeducatie 2009 :: servicii web prin rest
navigatoarele Web actuale
nu necesită o interfață de programare specifică
disponibilitate ubicuă
transferuri asincrone via AJAX – direct în JavaScript
pot apărea incompatibilități
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
62. infoeducatie 2009 :: servicii web prin rest
ASP.NET MVC (C#)
JAX‐RS – Java Architecture for RESTful web Services
Jifty (Perl)
Recess (PHP)
Ruby on Rails (Ruby)
Symfony (PHP)
Tonic (PHP)
etc.
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
63. infoeducatie 2009 :: servicii web prin rest
servicii publice ce pot fi consumate prin REST (exemple):
Amazon, Blip.tv, eBay, Facebook, Google, Hi5, Last.fm,
SlideShare, Talis, TripIt, Upcoming, Yahoo!, YouTube etc.
API‐uri specifice
disponibile liber pentru Flex (ActionScript), PHP, Python,
Objective‐C, Ruby,…
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
64. infoeducatie 2009 :: servicii web prin rest
cum combin date oferite
de mai multe servicii web?
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
65. infoeducatie 2009 :: servicii web prin rest
combinarea – la nivel de client și/sau server –
a conținutului ce provine din surse (situri)
multiple, oferind o funcționalitate/experiență nouă
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
66. infoeducatie 2009 :: servicii web prin rest
+ Ma(y)shupTV
o aplicație hibridă
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
67. infoeducatie 2009 :: servicii web prin rest
se bazează pe fluxuri RSS/Atom,
servicii web, API‐uri,…
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
68. infoeducatie 2009 :: servicii web prin rest
aliniate “curentului” SaaS
(Software As A Service)
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
69. infoeducatie 2009 :: servicii web prin rest
caracteristici:
combinare
vizualizare
agregare
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
70. infoeducatie 2009 :: servicii web prin rest
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‐Corneliu Buraga – www.purl.org/net/busaco
72. infoeducatie 2009 :: servicii web prin rest
vizualizare
pot fi adoptate diverse tehnici de vizualizare (prezentare)
a datelor:
cartografică,
tag cloud‐uri,
tridimensională,
…
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
73. infoeducatie 2009 :: servicii web prin rest
Twitter + Google Earth TwittEarth
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
74. infoeducatie 2009 :: servicii web prin rest
agregare
gruparea datelor provenite din mai multe surse
și analizarea lor: statistici, clasificări, predicții,…
prin data mining se pot releva aspecte “ascunse”
ale datelor procesate
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
75. infoeducatie 2009 :: servicii web prin rest
recomandare inteligentă de resurse via Zemanta
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
76. infoeducatie 2009 :: servicii web prin rest
platforme
instrumente
(GUI tools)
biblioteci de dezvoltare
(libraries)
interfețe de programare
(API‐uri)
surse de date (data feeds)
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
77. infoeducatie 2009 :: servicii web prin rest
platforme
instrumente
(GUI tools)
biblioteci de dezvoltare
RSS, geoRSS, (libraries)
microformate, interfețe de programare
RDFa,…
(API‐uri)
surse de date (data feeds)
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
78. infoeducatie 2009 :: servicii web prin rest
platforme
instrumente
(GUI tools)
privind biblioteci de dezvoltare specifice
fluxurile (libraries) serviciilor
RSS/Atom publice
interfețe de programare
(API‐uri)
surse de date (data feeds)
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
79. infoeducatie 2009 :: servicii web prin rest
platforme
instrumente
framework‐uri (GUI tools) oferite de
web organizații
biblioteci de dezvoltare
(libraries)
interfețe de programare
(API‐uri)
surse de date (data feeds)
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
80. infoeducatie 2009 :: servicii web prin rest
Adobe AIR,
Boxely,
SnapLogic,
platforme
widget‐uri instrumente
(GUI tools)
biblioteci de dezvoltare
(libraries)
interfețe de programare
(API‐uri)
surse de date (data feeds)
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
81. infoeducatie 2009 :: servicii web prin rest
Dappr, Facebook,
Google App Engine,
Yahoo! Pipes
platforme
instrumente
(GUI tools)
biblioteci de dezvoltare
(libraries)
interfețe de programare
(API‐uri)
surse de date (data feeds)
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
83. infoeducatie 2009 :: servicii web prin rest
“codul‐sursă” al pipe‐ului web
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
84. infoeducatie 2009 :: servicii web prin rest
cum aflu care sunt
mash‐up‐urile existente
și API‐urile aferente?
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
86. infoeducatie 2009 :: servicii web prin rest
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‐Corneliu Buraga – www.purl.org/net/busaco
87. infoeducatie 2009 :: servicii web prin rest
Sabin Buraga, Tehnologii XML, Polirom, 2006
Sabin Buraga (coord.), Programarea în Web 2.0,
Polirom, 2007
Leonard Richardson, Sam Ruby, RESTful Web Services,
O’Reilly, 2007
Raymond Yee, Pro Web 2.0 Mashups:
Remixing Data and Web Services, Apress, 2008
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
89. infoeducatie 2009 :: servicii web prin rest
o parte dintre conținuturile grafice au fost preluate
de pe situl Flickr, fotografiile fiind realizate de utilizatorii:
42311564, cedric1981, chrispitality, cjc4454, damongarrett,
little_lushie, mithril, petergorges, psd, pujan, sharman,
sharynmorrow, splatt, stuartpilbrow, that_james
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco