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

  • 740 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
740
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
14
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. servicii Web, API-uri & mashup-uri aspecte arhitecturale Dr. Sabin Buragawww.purl.org/net/busaco Dezvoltarea aplicațiilor Web
  • 2. Harriet Tubman Dr. Sabin Buragawww.purl.org/net/busaco “Fiecare vis începe cu un visător.”
  • 3. Dr. Sabin Buragawww.purl.org/net/busaco Care sunt cele mai importante aspecte privind ingineria Web?
  • 4. Dr. Sabin Buragawww.purl.org/net/busaco Aplicații Web  sisteme software complexe, în evoluție permanentă
  • 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. 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. 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. neadaptare la cerințele de tip business development vs. marketing vs. management Dr. Sabin Buragawww.purl.org/net/busaco Realitate
  • 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. Dr. Sabin Buragawww.purl.org/net/busaco dezvoltarea aplicațiilor Web Crumlish & Malone, 2009
  • 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. 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. 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. 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. 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. Dr. Sabin Buragawww.purl.org/net/busaco În ce mod dezvoltăm o aplicație Web?
  • 17. Uzual, se recurge la o metodologie Dr. Sabin Buragawww.purl.org/net/busaco modelare
  • 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. 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. Robert Baxley Dr. Sabin Buragawww.purl.org/net/busaco
  • 21. Jesse James Garrett Dr. Sabin Buragawww.purl.org/net/busaco
  • 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. 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. 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. Stabilirea standardelor de calitate content users context Dr. Sabin Buragawww.purl.org/net/busaco cerințe
  • 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. Documentare privind domeniul aplicației Web cu atragerea experților în domeniul problemei Dr. Sabin Buragawww.purl.org/net/busaco cerințe
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Calitatea aplicatiilor Web este influențată de arhitectura pe care se bazează Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi
  • 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. 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. 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. 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. 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. Uzual, se adoptă arhitecturi stratificate (N-tier Web applications) Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi
  • 44. Dr. Sabin Buragawww.purl.org/net/busaco Câteva exemplificări privind arhitectura unor aplicații Web?
  • 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. 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. Dr. Sabin Buragawww.purl.org/net/busaco arhitectura inițială – conform (Cal Henderson, 2007)
  • 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. 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. 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. Dr. Sabin Buragawww.purl.org/net/busaco arhitecturi: exemplu – lanyrd
  • 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. 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. Dr. Sabin Buragawww.purl.org/net/busaco studiu de caz: wikimedia Wikipedia – arhitectura generală (Domas Mituzas, 2008) http://tinyurl.com/m9nlwvq
  • 55. Dr. Sabin Buragawww.purl.org/net/busaco Există anumite “rețete” privind proiectarea de aplicații Web?
  • 56. O problemă – oricare ar fi aceasta – poate apărea frecvent Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 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. 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. 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. 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. 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. Un pattern nu reprezinta o regulă fermă uneori nu trebuie aplicat!anti-patterns Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 63. Este necesară adoptarea unui vocabular comun corespunzător domeniului problemei pattern language Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 64. Pattern-uri privitoare la: proiectare arhitectură analiză dezvoltare structură comportament … Dr. Sabin Buragawww.purl.org/net/busaco proiectare
  • 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. Ș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. 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. Ș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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Dr. Sabin Buragawww.purl.org/net/busaco Prin ce mijloace poate fi implementată o aplicație Web?
  • 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. 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. 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. 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. 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.   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. 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. 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. 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. 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. 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. 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. 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. 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. Web component dezvoltare bazată pe o bibliotecă/framework Dr. Sabin Buragawww.purl.org/net/busaco implementare
  • 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. 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. 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. 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. (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. (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. (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. (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. 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. 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. 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. 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. 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. 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. 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. Dr. Sabin Buragawww.purl.org/net/busaco testarea unui API public via Apigee Console https://apigee.com/console/
  • 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. 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. 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. 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. 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. Dr. Sabin Buragawww.purl.org/net/busaco privire pragmatica exemplificare: acces la API-uri în Python – www.pythonapi.com
  • 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. 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. 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. 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. Dr. Sabin Buragawww.purl.org/net/busaco mash-ups proiectul ubiGuide (Ionuț Dănilă & Mihaela Ghimiciu, 2013)
  • 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. 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. 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. 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. Dr. Sabin Buragawww.purl.org/net/busaco Zemanta – recomandare “inteligentă” de resurse
  • 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. 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. 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. 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. 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. 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. 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. “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. Dr. Sabin Buragawww.purl.org/net/busaco rezumat arhitectura aplicațiilor Web orientate spre servicii
  • 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ă