Servicii Web prin REST
-
Upload
sabin-buraga -
Category
Technology
-
view
3.902 -
download
0
description
Transcript of Servicii Web prin REST
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
Computer Science
arte
Web interacțiune
design
pictură
profesor
muzică
facultate
semantic
literatură
A. I. Cuza
fotografie
programare
conferințe
cărțicursuri
RomâniaXML
@busaco
cercetare
pasiune
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
oferirea unui spațiu de comunicare inter‐umană
partajarea cunoștințelor
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
exploatarea puterii computaționale
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
resursele sunt identificate prin adresa lor
identificator uniform de resurseURI – Uniform Resource Identifier
http://infoeducatie.ro/2009/participanti/tux
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
accesul la conținutul – reprezentarea – resurselor Webse realizează printr‐un protocol
HTTP – HyperText Transfer Protocol
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
resursele – documentele – includ <marcaje />
paginiWeb
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
marcajele conțin la rândul lor URI‐uri hipertext
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
soluții multi‐platformă, slab‐conectate
integrarea facilă la nivel de Weba aplicațiilor, serviciilor & sistemelor
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
necesitatea recurgerii la standarde
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
servicii atașabile (pluggable) & versatile
SaaS – Software as a Service
ASP – Application Service Provider
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
există un model arhitectural de dezvoltarea serviciilor la nivel de web?
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
“the web is the computer”
disponibilitatea unei/unor arhitecturi care…
oferă suport pentru paradigme de comunicare bazată pe Web între aplicații eterogene
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
“the web is the computer”
disponibilitatea unei/unor arhitecturi care…
permit(e) localizarea transparentă a serviciilor
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
“the web is the computer”
disponibilitatea unei/unor arhitecturi care…
facilitează adăugarea, înlocuirea, eliminareaserviciilor în mod dinamic
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
“the web is the computer”
disponibilitatea unei/unor arhitecturi care…
ascund(e) dezvoltatorului detaliile de sistem
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
software oferind o funcționalitate specifică
spelling checkingstocare de date
mesagerie instantaneeagregare de știricurs valutar
realizare de statistici…
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
utilizate – la distanță – de alte aplicații/servicii
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
accesate standardizat via Web
URIHTTPXML
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
serviciul unei agenții de turismoferirea – și vânzarea, eventual – a unor formule
de petrecere a vacanței
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
serviciul unei agenții de turism
utilizează alte servicii (software) disponibile pe Web: tranzacții financiareservicii hoteliere
servicii de transport
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
cum am implementa un serviciu?
script‐uri CGI sau utilizarea serverelor de aplicații Web
ASP.NET, JSP, PHP, RoR,…
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
maniera clasică de interacțiune cu utilizatorul
utilizatorul – nu neapărat uman ☺ – vizitează o pagină și formulează o cerere (e.g., via un formular)
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
maniera clasică de interacțiune cu utilizatorul
serviciul implementat oferă un răspunsuzual, un document (X)HTML
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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>
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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
???!
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
cum are loc schimbul de date între servicii webși alte aplicații?
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
ce‐ar fi să indicăm datele de intrare și răspunsul oferit de serviciul webîntr‐un format standardizat?
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
posibile soluții:
XML‐RPCSOAP
POX (Plain Old XML)
JSON (JavaScript Object Notation)
“dialog” prin XML
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
REpresenta‐tional State Transfer
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
stil arhitectural de dezvoltare a aplicațiilor Webcu focalizare asupra reprezentării datelor
Roy Fielding, 2000
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
rezultatul unei procesări conduce la returnarea unei reprezentări de resursă
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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.
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
rezultatul unei procesări conduce la returnarea unei reprezentări de resursă
reprezentare = (X)HTML, JPEG, PNG, RSS, Atom, SVG,…
desemnată de tipuri MIMEtext/html, image/png, application/xhtml+xml etc.
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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(XHTML)
reprezentare2(Atom)
resursa
URI
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
rezultatul unei procesări conduce la returnarea unei reprezentări de resursă
fiecare reprezentare a unei resurse are asociat un URL
reprezentare1(XHTML)
reprezentare2(Atom)
resursa
URI
URLURL
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
clienții – e.g., navigatoare Web, roboti, player‐e –interacționează cu reprezentările resurselor via verbe(“accesează”: GET, “modifică”: POST, “șterge”: DELETE,…)
reprezentare1(XHTML)
reprezentare2(Atom)
resursa
URI
URLURLGET POST GET DELETE
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
orice accesare a unei reprezentări plasează aplicația – ori clientul Web – într‐o stare
care va fi schimbată în urma unui transferde date (accesarea altei reprezentări)
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
resursa1
reprezentare1(XHTML)
http://blog.info/
resursa2
reprezentare2(XHTML)
http://blog.info/mesaj
resursa3
reprezentare3(XHTML)
http://blog.info/mesaj/edit
resursa4
reprezentare4(Atom)
http://blog.info/stiri
GET POST
GET
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
transferul se realizează prin protocolul HTTP
reprezentarea este modelată în XMLși indicată prin tipuri MIME
adresabilitatea se rezolvă via URI
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
aplicațiile ce invocă funcționalități (servicii)vor consuma reprezentări de resurse – în stilul pull
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
fiecare cerere este considerată independentă,fără a se lua în considerație contextul – stateless
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
implementarea unui magazin on‐line oferind dulciuri
tipuri de resurse (Sortim & Utiliz), identificate unic de URIhttp://www.dulciuri.biz/sortim/rahat
URI intuitivașa‐zis user/SEO friendly
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
serviciile oferite de Flickr.com
acces – folosind HTTP (e.g., GET, POST) – via URI‐ulhttp://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ă
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
interfața web cu utilizatorul
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
Resursa URL Metoda Reprezentarebookmark /bookmarks/{md5} GET application/bookmark+xmlbookmark /bookmarks/{md5} PUT application/bookmark+xmlbokmark /bookmarks/{md5} DELETElistă de bookmark‐uri /bookmarks GET application/atom+xml
listă de utilizatori /users GET application/atom+xmllistă de tag‐uri (termeni de conținut)
/tags GET application/atom+xml
pagina principală / GET application/delicious+xml
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
GET /bookmarks200 OKContent-type: application/atom+xml
<?xml version="1.0"?><feed xmlns="http://www.w3.org/2005/Atom"><title>Bookmarks</title><entry><title>O resursa interesanta</title><link href="/bookmarks/a211528fb5108cddaa4b0d3aeccdbdcf"/><summary>http://undeva.info/o-resursa-interesanta</summary></entry><!-- eventual, alte elemente <entry>… --></feed>
obținerea bookmark‐urilor:răspuns XML (Atom) dat de
Del.icio.us
digest MD5
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
GET /bookmarks/a211528fb5108cddaa4b0d3aeccdbdcf 200 OKContent-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
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
cum accesăm reprezentări de resurse webprin REST?
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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.
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
exemplu: trimiterea unui mesaj la Twitter.comcurl --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>
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
navigatoarele Web actuale
nu necesită o interfață de programare specifică
disponibilitate ubicuă
transferuri asincrone via AJAX – direct în JavaScript
pot apărea incompatibilități
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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.
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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 specificedisponibile liber pentru Flex (ActionScript), PHP, Python,
Objective‐C, Ruby,…
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
cum combindate oferitede mai multe servicii web?
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
combinarea – la nivel de client și/sau server –a conținutului ce provine din surse (situri)
multiple, oferind o funcționalitate/experiență nouă
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
+ Ma(y)shupTVo aplicație hibridă
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
se bazează pe fluxuri RSS/Atom, servicii web, API‐uri,…
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
aliniate “curentului” SaaS(Software As A Service)
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
caracteristici:combinarevizualizareagregare
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
vizualizare
pot fi adoptate diverse tehnici de vizualizare (prezentare)a datelor:
cartografică,tag cloud‐uri,
tridimensională,…
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
Twitter + Google Earth TwittEarth
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
recomandare inteligentă de resurse via Zemanta
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
instrumente(GUI tools)
biblioteci de dezvoltare(libraries)
interfețe de programare(API‐uri)
surse de date (data feeds)
platforme
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
instrumente(GUI tools)
biblioteci de dezvoltare(libraries)
interfețe de programare(API‐uri)
surse de date (data feeds)
platforme
RSS, geoRSS, microformate,
RDFa,…
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
instrumente(GUI tools)
biblioteci de dezvoltare(libraries)
interfețe de programare(API‐uri)
surse de date (data feeds)
platforme
privindfluxurileRSS/Atom
specificeserviciilorpublice
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
instrumente(GUI tools)
biblioteci de dezvoltare(libraries)
interfețe de programare(API‐uri)
surse de date (data feeds)
platforme
framework‐uriweb
oferite de organizații
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
instrumente(GUI tools)
biblioteci de dezvoltare(libraries)
interfețe de programare(API‐uri)
surse de date (data feeds)
platformeAdobe AIR,
Boxely, SnapLogic, widget‐uri
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
instrumente(GUI tools)
biblioteci de dezvoltare(libraries)
interfețe de programare(API‐uri)
surse de date (data feeds)
platforme
Dappr, Facebook, Google App Engine,
Yahoo! Pipes
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
“codul‐sursă” al pipe‐ului web
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
cum aflu care sunt mash‐up‐urile existenteși API‐urile aferente?
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
ProgrammableWeb.com
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco
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
infoeducatie 2009 :: servicii web prin rest
Dr. Sabin‐Corneliu Buraga – www.purl.org/net/busaco