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

2,426 views
2,256 views

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
2,426
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
47
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ă

×