Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Sabin Buraga
Tehnologii Web (prezentările aferente disciplinei predate de Sabin Buraga la Facultatea de Informatică, Universitatea A.I. Cuza din Iași) – detalii la http://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...Sabin Buraga
A presentation (available in Romanian language) about RESTful Web service development, including several considerations regarding mash-ups & APIs.
For other details, visit http://profs.info.uaic.ro/~busaco/teach/courses/wade/web-film.html
WADe 2017-2018 (3/12) Web Application Development: Architectural AspectsSabin Buraga
A lecture delivered for "Web Application Development" discipline (MSc studies at Faculty of Computer Science, 'Alexandru Ioan Cuza' University of Iasi, Romania): https://profs.info.uaic.ro/~busaco/teach/courses/wade/web-film.html
WADe 2017-2018 (2/12) Service-based Web Application Development. RESTSabin Buraga
A lecture delivered for "Web Application Development" discipline (MSc studies at Faculty of Computer Science, 'Alexandru Ioan Cuza' University of Iasi, Romania): https://profs.info.uaic.ro/~busaco/teach/courses/wade/web-film.html
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Sabin Buraga
Tehnologii Web (prezentările aferente disciplinei predate de Sabin Buraga la Facultatea de Informatică, Universitatea A.I. Cuza din Iași) – detalii la http://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...Sabin Buraga
A presentation (available in Romanian language) about RESTful Web service development, including several considerations regarding mash-ups & APIs.
For other details, visit http://profs.info.uaic.ro/~busaco/teach/courses/wade/web-film.html
WADe 2017-2018 (3/12) Web Application Development: Architectural AspectsSabin Buraga
A lecture delivered for "Web Application Development" discipline (MSc studies at Faculty of Computer Science, 'Alexandru Ioan Cuza' University of Iasi, Romania): https://profs.info.uaic.ro/~busaco/teach/courses/wade/web-film.html
WADe 2017-2018 (2/12) Service-based Web Application Development. RESTSabin Buraga
A lecture delivered for "Web Application Development" discipline (MSc studies at Faculty of Computer Science, 'Alexandru Ioan Cuza' University of Iasi, Romania): https://profs.info.uaic.ro/~busaco/teach/courses/wade/web-film.html
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
O prezentare reunind cele mai importante aspecte privind dezvoltarea Web și perspectivele actuale (ediția 2015). Pentru alte resurse de interes, a se consulta http://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
A presentation regarding the most important aspects on Web development and current perspectives (2015). For other resources of interest, visit http://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Ce înseamnă a fi dezvoltator Web (varianta 2014)Sabin Buraga
Considerații privind diverse posibilități de carieră în domeniul tehnologiilor Web, de dorit după absolvirea studiilor oferite de Facultatea de Informatică, UAIC Iași.
Pentru alte detalii, a se vizita http://www.info.uaic.ro/~busaco/teach/
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...Sabin Buraga
Tehnologii Web (prezentările aferente disciplinei predate de Sabin Buraga la Facultatea de Informatică, Universitatea A.I. Cuza din Iași) – detalii la http://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSabin Buraga
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Considerații vizând proiectarea siturilor Web, inclusiv detalii despre design vizual (layout, tipografie, cromatică etc.) și design Web responsiv. Detalii la http://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html
CLIW 2015-2016 (5/13) Vizualizarea datelor – o privire de ansambluSabin Buraga
O viziune de ansamblu referitoare la vizualizarea datelor în contextul Web, inclusiv diverse tehnici + exemple reale. Detalii la http://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html
Web 2016 (01/13) Spațiul World Wide Web – aspecte arhitecturaleSabin Buraga
Tehnologii Web (prezentările aferente disciplinei predate de Sabin Buraga la Facultatea de Informatică, Universitatea A.I. Cuza din Iași) – detalii la http://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
CLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de clientSabin Buraga
O privire generală privind performanța aplicațiilor Web la nivel de client (tehnici, strategii, exemple reale și altele). Detalii la http://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Sabin Buraga – Dezvoltator Web (...în 2017)Sabin Buraga
O prezentare pentru elevii de liceu – participanți la SummerIS <www.summeris.ro> – referitoare la cele mai importante aspecte privind cariera de dezvoltator de aplicații Web.
A presentation for high-school students regarding the most important aspects about a professional carrier focused on Web application development.
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
O prezentare reunind cele mai importante aspecte privind dezvoltarea Web și perspectivele actuale (ediția 2015). Pentru alte resurse de interes, a se consulta http://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
A presentation regarding the most important aspects on Web development and current perspectives (2015). For other resources of interest, visit http://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Ce înseamnă a fi dezvoltator Web (varianta 2014)Sabin Buraga
Considerații privind diverse posibilități de carieră în domeniul tehnologiilor Web, de dorit după absolvirea studiilor oferite de Facultatea de Informatică, UAIC Iași.
Pentru alte detalii, a se vizita http://www.info.uaic.ro/~busaco/teach/
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...Sabin Buraga
Tehnologii Web (prezentările aferente disciplinei predate de Sabin Buraga la Facultatea de Informatică, Universitatea A.I. Cuza din Iași) – detalii la http://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSabin Buraga
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Considerații vizând proiectarea siturilor Web, inclusiv detalii despre design vizual (layout, tipografie, cromatică etc.) și design Web responsiv. Detalii la http://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html
CLIW 2015-2016 (5/13) Vizualizarea datelor – o privire de ansambluSabin Buraga
O viziune de ansamblu referitoare la vizualizarea datelor în contextul Web, inclusiv diverse tehnici + exemple reale. Detalii la http://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html
Web 2016 (01/13) Spațiul World Wide Web – aspecte arhitecturaleSabin Buraga
Tehnologii Web (prezentările aferente disciplinei predate de Sabin Buraga la Facultatea de Informatică, Universitatea A.I. Cuza din Iași) – detalii la http://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
CLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de clientSabin Buraga
O privire generală privind performanța aplicațiilor Web la nivel de client (tehnici, strategii, exemple reale și altele). Detalii la http://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Sabin Buraga – Dezvoltator Web (...în 2017)Sabin Buraga
O prezentare pentru elevii de liceu – participanți la SummerIS <www.summeris.ro> – referitoare la cele mai importante aspecte privind cariera de dezvoltator de aplicații Web.
A presentation for high-school students regarding the most important aspects about a professional carrier focused on Web application development.
A lecture – prepared to be delivered during "Computer Science at the Castle" Summer School (Macea, Arad, Romania, 2016): www.informaticalacastel.ro – regarding the most important aspects on Web development and current perspectives (2016 updated edition).
For other resources of interest, visit http://profs.info.uaic.ro/~busaco/teach/
O prelegere reunind cele mai importante aspecte privind dezvoltarea Web și perspectivele actuale (ediția actualizată pentru 2016).
Pentru alte resurse de interes, a se consulta http://profs.info.uaic.ro/~busaco/teach/
Foi de stiluri CSS – concepte esențiale (...și puțin mai mult)Sabin Buraga
A practical presentation regarding the most useful concepts of CSS (Cascading Style Sheets) specifications in the Web design context. These slides were prepared for delivery at the "Computer Science at the Castle" Summer School (Macea, Arad, Romania, 2016). Various resources are available at http://profs.info.uaic.ro/~busaco/teach/labs/css/
O prezentare practică vizând cele mai utile concepte ale specificațiilor CSS (Cascading Style Sheets) în contextul designului Web. Aceste informații au fost expuse în cadrul Școlii de vară "Informatica la Castel" (Macea, Arad, România, 2016). Diverse resurse de interes sunt oferite la http://profs.info.uaic.ro/~busaco/teach/labs/css/
A presentation explaining to (high-school) students what Web development is, including career information.
O prezentare pentru elevi și studenți oferind informații despre ceea ce înseamnă dezvoltarea de apllicații Web.
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...Sabin Buraga
O prelegere din cadrul materiei "aplicaţiilor Web la nivel de client" (CLIW), fondată și predată de Sabin Buraga la Facultatea de Informatică a Universității "Alexandru Ioan Cuza" din Iași.
Detalii la https://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...Sabin Buraga
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...Sabin Buraga
O prelegere din cadrul materiei "aplicaţiilor Web la nivel de client" (CLIW), fondată și predată de Sabin Buraga la Facultatea de Informatică a Universității "Alexandru Ioan Cuza" din Iași.
Detalii la https://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html
CLIW 2017-2018 (12/12) Performanţa aplicaţiilor Web la nivel de clientSabin Buraga
O prelegere din cadrul materiei "aplicaţiilor Web la nivel de client" (CLIW), fondată și predată de Sabin Buraga la Facultatea de Informatică a Universității "Alexandru Ioan Cuza" din Iași.
Detalii la https://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html
An overview of HTML5.
O prezentare generală referitoare la suita de tehnologii HTML5, incluzând aspecte legate de grafică vectorială (SVG) și raster (via <canvas> și JavaScript), plus informații despre microdatele HTML5 pe baza modelelor schema.org.
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Detalii privind căutarea resurselor Web. De la motoare de căutare și SEO la date structurate. Detalii la http://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html
Considerații privind designul Web: interacțiune, utilizabilitate & metodologii de proiectare. Detalii la http://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de cazSabin Buraga
Interacțiune Web: noțiuni de bază precum interacțiune om-calculator (HCI), interfață cu utilizatorul (UI), experiența utilizatorului (UX) și altele. Detalii la http://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html
Similar to Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST (16)
Web 2020 01/12: World Wide Web – aspecte arhitecturaleSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 09/12: Servicii Web. Paradigma RESTSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSabin Buraga
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
STAW 08/12: Programare Web. Suita de tehnologii HTML5Sabin Buraga
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
O prezentare referitoare la dezvoltarea aplicațiilor Web dedicată elevilor de liceu. Prelegerea a fost susținută în cadrul Școlii de vară SummerIS organizată la Universitatea Alexandru Ioan Cuza din Iași, Facultatea de Informatică (iulie 2019).
A presentation regarding Web application development delivered to high-school students, a part of the SummerIS summer school organized at the Faculty of Computer Science, Alexandru Ioan Cuza University of Iasi, Romania (July 2019).
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...Sabin Buraga
A lecture delivered for Human-Computer Interaction, a post-graduate level discipline taught by Dr. Sabin Buraga at Faculty of Computer Science, Alexandru Ioan Cuza University of Iasi, Romania.
Visit also https://profs.info.uaic.ro/~busaco/teach/courses/hci/hci-film.html
HCI 2018 (3/10) Design Models, Methodologies and GuidelinesSabin Buraga
A lecture delivered for Human-Computer Interaction, a post-graduate level discipline taught by Dr. Sabin Buraga at Faculty of Computer Science, Alexandru Ioan Cuza University of Iasi, Romania.
Visit also https://profs.info.uaic.ro/~busaco/teach/courses/hci/hci-film.html
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual DesignSabin Buraga
A lecture delivered for Human-Computer Interaction, a post-graduate level discipline taught by Dr. Sabin Buraga at Faculty of Computer Science, Alexandru Ioan Cuza University of Iasi, Romania.
Visit also https://profs.info.uaic.ro/~busaco/teach/courses/hci/hci-film.html
5. partajarea cunoștințelor
Web social (“Web 2.0”), Web-ul datelor (semantic),…
Dr. Sabin Buragawww.purl.org/net/busaco
Constituirea și interacțiunea
cu un spațiu de comunicare inter-umană
6. accesul la Web se poate realiza
via dispozitive având resurse reduse
Dr. Sabin Buragawww.purl.org/net/busaco
Exploatarea puterii computaționale
7. accesul la Web se poate realiza
via dispozitive având resurse reduse
Web ubicuu (omniprezent), Web mobil, Web 3D,…
performanțăasigurarea scalabilității
Dr. Sabin Buragawww.purl.org/net/busaco
Exploatarea puterii computaționale
9. Soluții multi-platformă, slab-conectate
integrare (în timp-real) la nivel de Internet/Web
a aplicațiilor, serviciilor și sistemelor
Dr. Sabin Buragawww.purl.org/net/busaco
nevoi ale dezvoltatorilor Web
10. Soluții multi-platformă, slab-conectate
integrare (în timp-real) la nivel de Internet/Web
a aplicațiilor, serviciilor și sistemelor
exemplificare: găsirea de resurse Web, pe baza localizării
geografice a utilizatorului, privind ofertele de servicii
multiple disponibile în contextul dispozitivelor mobile
Dr. Sabin Buragawww.purl.org/net/busaco
nevoi ale dezvoltatorilor Web
11. Soluții multi-platformă, slab-conectate
datele să poată fi descrise pentru a fi “înțelese”
de calculatoare și pentru a fi interconectate facil
Dr. Sabin Buragawww.purl.org/net/busaco
nevoi ale dezvoltatorilor Web
12. Soluții multi-platformă, slab-conectate
datele să poată fi descrise pentru a fi “înțelese”
de calculatoare și pentru a fi interconectate facil
Web “puzzles”inter-conectarea mai multor servicii
informative (e.g., situri de știri, blog-uri) conform
preferințelor utilizatorului, pe baza intereselor sale
Dr. Sabin Buragawww.purl.org/net/busaco
nevoi ale dezvoltatorilor Web
13. Servicii atașabile (pluggable) & versatile
Software as a Service – SaaS
Application Service Provider – ASP
Dr. Sabin Buragawww.purl.org/net/busaco
nevoi ale dezvoltatorilor Web
15. Divizarea aplicațiilor în servicii – independente –
care se pot compune,
menite a se conecta și orchestra în mod spontan
în cadrul proceselor de afaceri/tehnice
Dr. Sabin Buragawww.purl.org/net/busaco
soluție
16. Divizarea aplicațiilor în servicii – independente –
care se pot compune,
menite a se conecta și orchestra în mod spontan
în cadrul proceselor de afaceri/tehnice
Web component-based software
Dr. Sabin Buragawww.purl.org/net/busaco
soluție
17. “The Web is the computer”
Dr. Sabin Buragawww.purl.org/net/busaco
solutie
18. “The Web is the computer”
disponibilitatea unei/unor arhitecturi care…
ofera suport pentru paradigme de comunicare
– bazata pe actualele tehnologii Web –
intre aplicatii eterogene
Dr. Sabin Buragawww.purl.org/net/busaco
solutie
19. “The Web is the computer”
disponibilitatea unei/unor arhitecturi care…
permit(e) localizarea transparentă a serviciilor
Dr. Sabin Buragawww.purl.org/net/busaco
solutie
20. “The Web is the computer”
disponibilitatea unei/unor arhitecturi care…
facilitează adăugarea, înlocuirea, eliminarea
serviciilor în mod dinamic
Dr. Sabin Buragawww.purl.org/net/busaco
solutie
21. “The Web is the computer”
disponibilitatea unei/unor arhitecturi care…
ascund(e) dezvoltatorului detaliile de sistem
Dr. Sabin Buragawww.purl.org/net/busaco
solutie
22. “The Web is the computer”
disponibilitatea unei/unor arhitecturi care…
asigură calitatea dezvoltării și exploatării
aplicațiilor distribuite și/sau paralele:
standardizare, securitate, disponibilitate,
reutilizare, mentenanță facilă etc.
Dr. Sabin Buragawww.purl.org/net/busaco
solutie
24. Software oferind o funcționalitate specifică
acces la resurse – Delicious, Pinterest, Slideshare, Vimeo
agregare de știri – Digg, Reddit
cartografiere – Bing Maps, Google Maps, Nokia HERE
mesagerie instantanee – Jabber, Twitter, Twilio
procesări – Anger Detection, Ping.it, Skyttle, Truthy,…
realizare de statistici Web – Google Analytics
rețele sociale – e.g., Facebook Open Graph Protocol
spelling checking – Spellr.us
stocare de date – Amazon S3, Dropbox, SkyDrive etc.
…
Dr. Sabin Buragawww.purl.org/net/busaco
servicii web
25. Software oferind o funcționalitate specifică
acces la resurse – Delicious, Pinterest, Slideshare, Vimeo
agregare de știri – Digg, Reddit
cartografiere – Bing Maps, Google Maps, Nokia HERE
mesagerie instantanee – Jabber, Twitter, Twilio
procesări – Anger Detection, Ping.it, Skyttle, Truthy,…
realizare de statistici Web – Google Analytics
rețele sociale – e.g., Facebook Open Graph Protocol
spelling checking – Spellr.us
stocare de date – Amazon S3, Dropbox, SkyDrive etc.
…
utilizate – la distanță – de alte aplicații/servicii
Dr. Sabin Buragawww.purl.org/net/busaco
servicii web
26. Accesate standardizat via Web
URI
HTTP
XML și/sau alte formate (e.g., JSON)
Dr. Sabin Buragawww.purl.org/net/busaco
servicii web
28. Implementare standard
recurgerea la script-uri CGI sau
servere/framework-uri de aplicații Web
ASP.NET, JSP, Node.js,
PHP (CodeIgnater, Symfony,…)
Ruby on Rails,…
Dr. Sabin Buragawww.purl.org/net/busaco
servicii web
29. Arhitectura generică a unei aplicații Web
(3-tier application)
Internet
(Web)
Client
(interface)
Server de aplicații Stocare
(application) (persistence)
Dr. Sabin Buragawww.purl.org/net/busaco
servicii web
30. Cream / Markup
Custard / Page Logic
Jelly / Business Logic
Sponge / Database
C. Henderson, “Scalable Web Architectures”,
Web 2.0 Expo, 2007: iamcal.com/talks/
Dr. Sabin Buragawww.purl.org/net/busaco
Fruit / Presentation
31. Cream / Markup
Custard / Page Logic
Jelly / Business Logic
Sponge / Database
C. Henderson, “Scalable Web Architectures”,
Web 2.0 Expo, 2007: iamcal.com/talks/
Dr. Sabin Buragawww.purl.org/net/busaco
Fruit / Presentation
32. Tradițional, aplicația oferă o interfață-utilizator
disponibilă pe Web
limbaj de marcare – e.g., HTML
stiluri de prezentare a conținutului – CSS
interactivitate via JavaScript
Dr. Sabin Buragawww.purl.org/net/busaco
servicii web
33. Tradițional, aplicația oferă o interfață-utilizator
disponibilă pe Web
cererile sunt capt(ur)ate via formulare
+ legături hipertext
Dr. Sabin Buragawww.purl.org/net/busaco
servicii web
34. Tradițional, aplicația oferă o interfață-utilizator
disponibilă pe Web
utilizatorii umani trebuie să interpreteze etichetele
și câmpurile de dialog
Dr. Sabin Buragawww.purl.org/net/busaco
servicii web
35. Tradițional, aplicația oferă o interfață-utilizator
disponibilă pe Web
serviciul implementat oferă un răspuns
(o reprezentare a unei resurse Web)
uzual, un document HTML al cărui conținut
e transferat la client via un protocol: HTTP
Dr. Sabin Buragawww.purl.org/net/busaco
servicii web
36. Cum obținem răspunsul pentru a fi (re)folosit
în programele noastre?
procesarea datelor din codul HTMLWeb scrapping
Dr. Sabin Buragawww.purl.org/net/busaco
servicii web
<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>
37. Cum obținem răspunsul pentru a fi (re)folosit
în programele noastre?
???!
orice modificare în marcajerescrierea programului
de preluare a datelor din documentul HTML
Dr. Sabin Buragawww.purl.org/net/busaco
servicii web
41. Arhitectura orientată spre servicii
SOA – Service Oriented Architecture
Dr. Sabin Buragawww.purl.org/net/busaco
soa
42. Arhitectura orientată spre servicii
SOA – Service Oriented Architecture
stil arhitectural de proiectare & dezvoltare de aplicații
considerate drept servicii
care pot fi invocate de alte aplicații
Dr. Sabin Buragawww.purl.org/net/busaco
soa
43. Paradigma de dezvoltare a software-ului
care adoptă folosirea de servicii,
oferind funcționalități solicitate de utilizatori
Dr. Sabin Buragawww.purl.org/net/busaco
soa
44. Paradigma de dezvoltare a software-ului
care adoptă folosirea de servicii,
oferind funcționalități solicitate de utilizatori
resursele sunt disponibile via o suită de servicii
independente ale căror implementări
nu trebuie să fie cunoscute (black box)
Dr. Sabin Buragawww.purl.org/net/busaco
soa
46. Componentele sistemului în ansamblu
au un grad mare de independență (de-coupling)
Dr. Sabin Buragawww.purl.org/net/busaco
soa
47. Componentele sistemului în ansamblu
au un grad mare de independență (de-coupling)
serviciile pot fi recompuse/orchestrate
conform cerințelor sau contextului
Dr. Sabin Buragawww.purl.org/net/busaco
soa
48. Serviciile să nu depindă de starea comunicării
(statelessness)
Dr. Sabin Buragawww.purl.org/net/busaco
soa
49. Serviciile să nu depindă de starea comunicării
(statelessness)
cantitatea de informație specifică unei activități
ce trebuie reținută trebuie să fie minimală
Dr. Sabin Buragawww.purl.org/net/busaco
soa
51. Stil arhitectural de dezvoltare a aplicațiilor Web
cu focalizare asupra reprezentării datelor
teza de doctorat a lui Roy Fielding, 2000
Dr. Sabin Buragawww.purl.org/net/busaco
rest: representational state transfer
52. Viziune complementară de implementare și
utilizare a serviciilor Web – fără SOAP
Dr. Sabin Buragawww.purl.org/net/busaco
rest
53. Rezultatul unei procesări conduce la obținerea
unei reprezentări a unei resurse
Dr. Sabin Buragawww.purl.org/net/busaco
rest
54. Rezultatul unei procesări conduce la obținerea
unei reprezentări a unei resurse
resursă Web
un utilizator având cont în cadrul unui sistem,
blog-ul unei persoane, o fotografie,
flux de știri, program etc.
Dr. Sabin Buragawww.purl.org/net/busaco
rest
55. Rezultatul unei procesări conduce la obținerea
unei reprezentări a unei resurse
reprezentare pe baza unui format de date
textual sau binar
exemple: HTML, JPEG, PNG, PDF, Atom, JSON,…
Dr. Sabin Buragawww.purl.org/net/busaco
rest
56. Rezultatul unei procesări conduce la obținerea
unei reprezentări a unei resurse
reprezentare = (X)HTML, JPEG, PNG, PDF, Atom, JSON,…
formatul reprezentării e desemnat de tipuri MIME
text/html, image/png, application/json etc.
Dr. Sabin Buragawww.purl.org/net/busaco
rest
57. Rezultatul unei procesări conduce la obținerea
unei reprezentări a unei resurse
reprezentările aceleași resurse
– desemnate de un URI unic – pot fi multiple
reprezentare1
(XHTML)
reprezentare2
(Atom)
resursa
URI
Dr. Sabin Buragawww.purl.org/net/busaco
rest
58. Rezultatul unei procesări conduce la obținerea
unei reprezentări a unei resurse
fiecare reprezentare a unei resurse are asociat un URL
URL
URL
reprezentare1
(XHTML)
reprezentare2
(Atom)
resursa
URI
Dr. Sabin Buragawww.purl.org/net/busaco
rest
59. Clienții (e.g., navigatoare Web, roboți, player-e etc.)
interacționează cu reprezentările resurselor via verbe
“accesează”: GET, “modifică”: POST, “șterge”: DELETE,…
GET POST
GET DELETE
URL
URL
reprezentare1
(XHTML)
reprezentare2
(Atom)
resursa
URI
Dr. Sabin Buragawww.purl.org/net/busaco
rest
60. Verbele (acțiunile) sunt stipulate de protocolul HTTP
GET
scop: accesarea (citirea) unei reprezentări de resursă
nu conduce la modificarea stării serverului (safe)
idempotentă – cereri identice vor conduce la returnarea
aceluiași răspuns (aceeași reprezentare)
Dr. Sabin Buragawww.purl.org/net/busaco
rest
61. Verbele (acțiunile) sunt stipulate de protocolul HTTP
PUT
actualizează o reprezentare de resursă sau
eventual creează o resursă la nivel de server Web
uzual, returnează un identificator (URI) al resursei
nu e considerată safe, dar este idempotentă
Dr. Sabin Buragawww.purl.org/net/busaco
rest
62. Verbele (acțiunile) sunt stipulate de protocolul HTTP
POST
creează o resursă (uzual, subordonată altei resurse)
nu este nici safe, nici idempotentă
utilizată când clientul nu cunoaște a-priori
care va fi URI-ul resursei ce va fi create
Dr. Sabin Buragawww.purl.org/net/busaco
rest
63. Verbele (acțiunile) sunt stipulate de protocolul HTTP
DELETE
șterge (elimină) o resursă desemnată de un URI
este idempotentă
Dr. Sabin Buragawww.purl.org/net/busaco
rest
64. Orice accesare a unei reprezentări
plasează aplicația – ori clientul Web – într-o stare
ce va fi schimbată în urma unui transfer de date
(accesarea altei reprezentări)
Dr. Sabin Buragawww.purl.org/net/busaco
rest
67. Transferul se realizează prin protocolul HTTP
Dr. Sabin Buragawww.purl.org/net/busaco
rest
Reprezentarea este modelată conform unui format
– e.g., XML sau JSON – și indicată prin tipuri MIME
Adresabilitatea se rezolvă via URI
68. Aplicațiile care invocă funcționalități (servicii)
consumă reprezentări de resurse – în stilul pull
Dr. Sabin Buragawww.purl.org/net/busaco
rest
69. Fiecare cerere este considerată independentă,
fără a se lua în considerație contextul
stateless server
Dr. Sabin Buragawww.purl.org/net/busaco
rest
70. Reprezentările de resurse pot fi stocate temporar
caching
Dr. Sabin Buragawww.purl.org/net/busaco
rest
72. client
stateless server
cache
Dr. Sabin Buragawww.purl.org/net/busaco
client
fiecare cerere
trebuie sa contina
toate informatiile
necesare procesarii
cache
adaptare dupa B. Mulloy (2012)
73. contextul activitatilor
nu-i stocat de server
client
stateless server
cache
Dr. Sabin Buragawww.purl.org/net/busaco
client
cache
adaptare dupa B. Mulloy (2012)
77. fiecare strat ofera
servicii stratelor
vecine
client
firewall
gateway
load
balan
cer
stateless
server
stateless
server
adaptare dupa B. Mulloy (2012)
Dr. Sabin Buragawww.purl.org/net/busaco
stateless
server
78. firewall
client
gateway
un strat nu poate
“vedea” strate
neinvecinate
adaptare dupa B. Mulloy (2012)
load
balan
cer
stateless
server
stateless
server
Dr. Sabin Buragawww.purl.org/net/busaco
stateless
server
80. client
firewall
gateway
load
balan
cer
are rol in asigurarea
performantei/
fiabilitatii
adaptare dupa B. Mulloy (2012)
stateless
server
stateless
server
Dr. Sabin Buragawww.purl.org/net/busaco
stateless
server
81. Serviciu pentru managementul adreselor Web favorite
(bookmark-uri), cu posibilitatea atașării de
termeni de conținut (tag-uri) și comentarii
social bookmarking
abordări similare: Delicious, Digg, Pocket, Reddit etc.
Dr. Sabin Buragawww.purl.org/net/busaco
rest: exemplu
82. Serviciu pentru managementul adreselor Web favorite
(bookmark-uri), cu posibilitatea atașării de
termeni de conținut (tag-uri) și comentarii
funcționalitate de bază: listarea tuturor bookmark-urilor
(eventual, filtrate după diverse criterii)
managementul bookmark-urilor:
adăugare, editare, ștergere
Dr. Sabin Buragawww.purl.org/net/busaco
rest: exemplu
84. răspuns XML (Atom)
oferit de serviciu
Dr. Sabin Buragawww.purl.org/net/busaco
GET /bookmarks
200 OK
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>… -->
obținerea
</feed>
bookmark-urilor
85. <bookmark>
<title>O resursă de interes</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ăspunsul XML oferit de serviciul Web
Dr. Sabin Buragawww.purl.org/net/busaco
GET /bookmarks/a211528fb5108cddaa4b0d3aeccdbdcf
200 OK
Content-type: application/bookmark+xml
86. POST /bookmarks
Content-type: application/bookmark+xml
…
201 Created
Location: /bookmarks/a211528fb5108cddaa4b0d3aeccdbdcf
PUT /bookmarks/a211528fb5108cddaa4b0d3aeccdbdcf
Content-type: application/bookmark+xml
…
actualizarea
200 OK
unui bookmark
Dr. Sabin Buragawww.purl.org/net/busaco
crearea unui
bookmark
87. Resursele se denumesc folosind URI-uri (URL-uri)
Reprezentările sunt interconectate prin URL-uri
Pot exista intermediari (proxy, cache, porți)
între clienți și resurseperformanță, securitate,...
Transferul de date poate fi și asincron – stil Ajax/Comet
Dr. Sabin Buragawww.purl.org/net/busaco
rest
88. O resursă poate avea asociate reprezentări
ce pot fi accesate/alterate via operații HTTP
operații CRUD – Create, Retrieve, Update, Delete
Dr. Sabin Buragawww.purl.org/net/busaco
rest
89. Divizarea în resurse a setului de date
ale problemei
clase tipice de resurse:
Utilizator
Document – alternative: Fotografie, Produs, Software,…
Metadata – e.g., Comentariu, Format, Locatie, Platforma etc.
Dr. Sabin Buragawww.purl.org/net/busaco
rest: metodologie
90. Numirea prin URI a fiecărei resurse
exemplificări:
http://aplicatie.info/Utilizator/tux
http://aplicatie.info/Document/pinguini-cu-mere-albastre
Dr. Sabin Buragawww.purl.org/net/busaco
rest: metodologie
91. Numirea prin URI a fiecărei resurse
cazuri concrete:
însemnările etichetate cu fii disponibile pe un blog
http://fiistudent.wordpress.com/tag/fii/
accesarea datelor despre o producție cinematografică
http://www.imdb.com/title/tt0401383/
obținerea listei utilizatorilor ce urmăresc o persoană
http://twitter.com/followers
Dr. Sabin Buragawww.purl.org/net/busaco
rest: metodologie
92. Numirea prin URI a fiecarei resurse
cazuri concrete:
acces la prezentările Slideshare ale utilizatorului busaco
http://www.slideshare.net/busaco/presentations
bookmark-urile cu tag-ul web ale utilizatorului busaco
http://delicious.com/busaco/web
efectuarea acțiunii de editare a unui document XWiki
http://www.info.uaic.ro/bin/edit/Students/Timetable
Dr. Sabin Buragawww.purl.org/net/busaco
rest: metodologie
93. Interacțiunea cu un serviciu Web dezvoltat în stilul REST
se poate face via un API
(Application Programming Interface)
alte detalii în
cursul viitor
pentru exemple de bune practici, a se consulta
www.restapitutorial.com
Dr. Sabin Buragawww.purl.org/net/busaco
rest: metodologie
94. Proiectarea reprezentarii(lor) acceptate
ce pot fi trimise de aplicația client
și reprezentării(lor) întoarse spre client
de considerat formatele standard – e.g., HTML, Atom
Dr. Sabin Buragawww.purl.org/net/busaco
rest: metodologie
96. Crearea de studii de caz
specificarea condițiilor de eroare și/sau de excepție,
inclusiv aspecte privind controlul versiunilor API-ului
Dr. Sabin Buragawww.purl.org/net/busaco
rest: metodologie
98. URL-urile desemnând resurse (concepte)
de interes trebuie să fie simple și intuitive
utilizarea substantivelor pentru fiecare “lucru”
colecții de resurse (uzual, la plural)
/students
identificatori unici pentru membrii unei colecții
/students/tuxy (concret) vs. /students/69 (abstract)
Dr. Sabin Buragawww.purl.org/net/busaco
rest: privire pragmatica
99. Folosirea verbelor (metodelor) HTTP pentru efectuarea
de operații asupra unor (colecții de) resurse
resursa
(URI)
/students
/students/69
(un URL deja
existent)
POST
(creează)
GET
PUT
DELETE
(accesează) (actualizează) (șterge)
creează
listează studenții
un student nou
existenți
eroare
oferă date
despre student
actualizează
un set de studenți
șterge toți
studenții
dacă există,
actualizează,
altfel eroare
șterge
studentul
respectiv
Dr. Sabin Buragawww.purl.org/net/busaco
rest: privire pragmatica
100. Tratarea erorilor
folosirea codurilor de stare HTTP
200 – OK
303 – See Other
400 – Bad Request, 404 – Not Found
500 – Internal Server Error
Dr. Sabin Buragawww.purl.org/net/busaco
rest: privire pragmatica
102. Tratarea erorilor
mesajele returnate trebuie să includă informații utile
exemplu: Twilio – cod de stare HTTP întors: 401
{ "status":
"message":
"code":
"more info":
}
"401",
"Authenticate",
20003,
"http://www.twilio.com/docs/errors/20003"
Dr. Sabin Buragawww.purl.org/net/busaco
rest: privire pragmatica
103. Controlul versiunilor API-ului dezvoltat
“Never release an API without a version
and make the version mandatory.” (Mulloy, 2012)
specificarea versiunii
în antetul HTTP vs. în cadrul URL-ului
http://feeds.delicious.com/v2/{format}/{username}
Facebook – ?v=1.0
Dr. Sabin Buragawww.purl.org/net/busaco
rest: privire pragmatica
104. Paginarea & oferirea de răspunsuri parțiale
uzual, se folosesc parametri precum limit și offset
/students?limit=33&offset=54
filtrele opționale (e.g., în contextul faceted search)
pot fi delimitate de virgulă
/students?fields=name,age,year,email
Dr. Sabin Buragawww.purl.org/net/busaco
rest: privire pragmatica
106. Paginarea & oferirea de răspunsuri parțiale
exemplificări reale:
Delicious – /v1/posts/recent?count=30&tag=web
Twitter – api.twitter.com/1.1/search/tweets.json
?q=…&since_id=24012619984051000&
max_id=250126199840518145&result_type=mixed&count=4
Dr. Sabin Buragawww.purl.org/net/busaco
rest: privire pragmatica
107. Dr. Sabin Buragawww.purl.org/net/busaco
rest: privire pragmatica
Eterogenitatea formatelor reprezentărilor întoarse
indicarea formatului în URL via un parametru opțional
?alt=json (Google Data)
specificarea formatului acceptat în antetul cererii HTTP
Accept: application/json (Digg)
precizarea formatului în numele resursei solicitate
/venue.json (Foursquare)
108. Utilizarea subdomeniilor pentru API-uri diferite
ale aceluiași ofertant de servicii
exemplificare:
search.twitter.com
stream.twitter.com
api.twitter.com
Dr. Sabin Buragawww.purl.org/net/busaco
rest: privire pragmatica
110. Biblioteci/API-uri implementând HTTP
libcURL (C, cu portări pentru Perl, PHP, Ruby,…)
libwww (C, Perl)
httplib (Python)
Net:HTTP (Ruby)
RestSharp (C#)
etc.
Dr. Sabin Buragawww.purl.org/net/busaco
rest: implementare
111. Studiu de caz: acces la Wikipedia
folosim URL-ul
http://en.wikipedia.org/w/api.php?action=query&
prop=categories&titles=Category:Arts&format=format
pentru a obține date despre categoriile asociate artelor
în diverse formate (JSON, XML, text obișnuit,…)
detalii la www.mediawiki.org/wiki/API
Dr. Sabin Buragawww.purl.org/net/busaco
rest: implementare
112. Dr. Sabin Buragawww.purl.org/net/busaco
HTTP/1.1 200 OK
Server: nginx/1.1.19
Date: Thu, 25 Apr 2013 17:01:59 GMT
Content-Type: text/xml; charset=utf-8
<api>
<query>
<pages>
<page pageid="4892515" ns="14" title="Category:Arts">
<categories>
<cl ns="14" title="Category:Creativity"></cl>
<cl ns="14" title="Category:Culture"></cl>
<cl ns="14" title="Category:Humanities"></cl>
<cl ns="14" title="Category:Main topic classifications"></cl>
</categories>
</page>
</pages>
răspuns XML furnizat de serviciul Web
</query>
implementat de Wikipedia
</api>
114. Studiu de caz: accesarea datelor publice
oferite de Science Museum (Londra)
se recurge la URL-ul
http://api.sciencemuseum.org.uk/exhibitions/?output=json
pentru a obține mesajele publice în format JSON
detalii la http://api.sciencemuseum.org.uk/
Dr. Sabin Buragawww.purl.org/net/busaco
rest: implementare
115. { "exhibitions": [
{ "id"
"name"
"admission_fee"
"opened_on"
"closed_on"
"closed"
"website"
},
{
…
} ],
"maximum"
"returned"
}
: "1031",
: "Dan Dare & the Birth of Hi-tech Britain",
: false,
: "2008-04-30",
: "2009-10-24",
: null,
: "http://www.sciencemuseum.org.uk/..."
: 1000,
: 91
Cum putem valida
corectitudinea răspunsului
JSON obținut?
Ce schemă e folosită?
Dr. Sabin Buragawww.purl.org/net/busaco
HTTP/1.1 200 OK
Date: Mon, 30 Sep 2013 16:05:22 GMT
Content-Type: application/json
Server: Microsoft-IIS/6.0
116. Biblioteci/API-uri implementând HTTP
permit dezvoltarea de aplicații desktop, mobile etc.
suport pentru crearea de mash-up-uri la nivel de server
nu funcționează în navigatorul Web
Dr. Sabin Buragawww.purl.org/net/busaco
rest: implementare
117. Biblioteci/API-uri implementând HTTP
permit dezvoltarea de aplicații desktop, mobile etc.
suport pentru crearea de mash-up-uri la nivel de server
nu funcționează în navigatorul Web
atenție la problemele de securitate ce pot apărea!
Dr. Sabin Buragawww.purl.org/net/busaco
rest: implementare
118. Navigatoarele Web actuale
nu necesită o interfață de programare (API) specifică
disponibilitate pe orice platformă
suport pentru REST via obiectul XMLHttpRequest (Ajax)
sau folosind WebSocket-uri (HTML5)
Dr. Sabin Buragawww.purl.org/net/busaco
rest: implementare
119. Dr. Sabin Buragawww.purl.org/net/busaco
rest: implementare
Exemplificare recurgând la biblioteca jQuery (JavaScript):
jQuery.ajax ({ // execută o cerere POST pentru invocarea serviciului Web
type: "POST",
contentType: "application/json; charset=utf-8",
url: "http://undeva.info/ServiciuWeb/Resursa",
data: "{…}",
// datele de intrare trimise serviciului
dataType: "json",
// dorim răspunsul în format JSON
success: function(data) { // funcție apelată la transfer cu succes
$('.rezultat').html(data); // preluăm datele, convertindu-le în HTML
}
});
120. ASP.NET MVC (C#)
JAX-RS – Java Architecture for RESTful web Services
Jifty (Perl)
neon (C)
Restlet (Java)
RIP – REST in Python
Ruby on Rails (Ruby)
Recess, Symfony, Tonic, Zend Framework (PHP)
etc.
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare
121. Servicii publice ce pot fi consumate via REST – exemple:
500px, AIDSInfo, Amazon, Basecamp, Blip.tv, DBpedia,
eBay, Ericsson, Facebook, GitHub, Google, LinkedIn,
Mastercard, Nodejitsu, Pipl, Quora, SlideShare, Tumblr,…
6395 API-uri (06 oct. 2013) – http://tinyurl.com/2ssfc2
inclusiv API publice disponibile pentru C++, C#, Java,
JavaScript, PHP, Python, Objective-C, Ruby,…
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare
122. Pași uzuali de urmat pentru implementarea unei aplicații
ce va invoca un serviciu Web pe baza unui API public:
(1) înregistrarea aplicației concepute
via situl entității furnizoare a serviciului
cheie de acces – API key, consumer key, developer key
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare
123. Pași uzuali de urmat pentru implementarea unei aplicații
ce va invoca un serviciu Web pe baza unui API public:
(2) pe baza acestei chei, aplicația se va putea autentifica
pentru a putea fi autorizată să acceseze serviciul
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare
124. Pași uzuali de urmat pentru implementarea unei aplicații
ce va invoca un serviciu Web pe baza unui API public:
(2) pe baza acestei chei, aplicația se va putea autentifica
pentru a putea fi autorizată să acceseze serviciul
pot fi impuse diverse politici de acces (permissions):
doar consultare (read), posibilitatea editării etc.
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare
125. Pași uzuali de urmat pentru implementarea unei aplicații
ce va invoca un serviciu Web pe baza unui API public:
(3) autentificarea și autorizarea aplicației
au loc cu acordul utilizatorului
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare
126. Pași uzuali de urmat pentru implementarea unei aplicații
ce va invoca un serviciu Web pe baza unui API public:
(3) autentificarea și autorizarea aplicației
au loc cu acordul utilizatorului
dacă utilizatorul nu este autentificat, i se vor solicita
informațiile de autentificare (e.g., nume + parola),
apoi va putea autoriza aplicația să aiba acces la date
via serviciul Web furnizat
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare
127. Pași uzuali de urmat pentru implementarea unei aplicații
ce va invoca un serviciu Web pe baza unui API public:
(4) aplicația apelează funcționalitățile oferite de serviciu
pentru preluarea/modificarea datelor de interes,
conform politicilor de acces
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare
128. Pași uzuali de urmat pentru implementarea unei aplicații
ce va invoca un serviciu Web pe baza unui API public:
(4) aplicația apelează funcționalitățile oferite de serviciu
sesiunea curentă va fi stabilită și menținută
pe baza unor informații de autentificare (auth tokens)
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare
129. Autorizarea securizată a unei aplicații să acceseze
date private într-un mod standardizat
se poate realiza via OAuth
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare – oauth
130. Autorizarea securizată a unei aplicații să acceseze
date private într-un mod standardizat
se poate realiza via OAuth
protocol deschis
OAuth 1.0 (2010), OAuth 2.0 (2012)
http://oauth.net/
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare – oauth
131. Exemplificări concrete:
Evernote, Facebook, Google, Ohloh, OpenSocial,
Photobucket, TripIt, Twitter, Vimeo, Windows Live,
Yahoo!, Yammer,...
pot fi utilizate diverse biblioteci disponibile
pentru C#, Java, Objective-C, Perl, PHP, Python, Ruby etc.
http://oauth.net/code/
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare – oauth
132. OpenID
mecanism descentralizat de autentificare a utilizatorului
la nivel de Web pe baza paradigmei SSO – Single Sign On
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare – openid
via un ofertant (serviciu) de identitate (identity provider),
utilizatorii pot să-și gestioneze prezențe online multiple
http://openid.net/
133. OpenID
fiecare identitate e desemnată de un URL (stabilit de
identity provider): me.yahoo.com, nume.wordpress.com,
google.com/profiles/nume, launchpad.net/~nume etc.
pentru a-și confirma identitatea,
utilizatorul va trebui să se autentifice:
nume de cont + parolă, smart card, date biometrice,…
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare – openid
134. OpenID
biblioteci open source disponibile
pentru C#, Java, Perl, PHP, Python, Ruby,…
http://openid.net/developers/libraries/
http://www.janrain.com/openid-enabled
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare – openid
135. Mozilla Persona
soluție de autentificare unică (în stilul SSO)
la nivel de browser Web
identitatea utilizatorului e dată de adresa de e-mail
http://developer.mozilla.org/Persona
http://github.com/mozilla/browserid-cookbook
Dr. Sabin Buragawww.purl.org/net/busaco
rest: dezvoltare – mozilla persona
136. aplicații orientate spre servicii Web în stilul REST
Dr. Sabin Buragawww.purl.org/net/busaco
rezumat