Web frameworks

382 views

Published on

1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
382
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
2
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Web frameworks

  1. 1. Web Frameworks A brief overview Gianfranco Reppucci @giefferre
  2. 2. So, what?• Cos’è un framework web?• Quale framework utilizzare?• Qualche esempio pratico• Alcune considerazioni
  3. 3. OK, ma perché parlare di web framework?Non tutto quello che viene considerato “webdevelopment” si riduce a “creare siti” • Web Application • Social Network Apps & Mashup • Web services • ...
  4. 4. Framework = ? • I primi siti web erano una collezione di pagine HTML statiche • Ogni aggiornamento richiedeva un cambiamento manuale<html> <head> <title>My wonderful website</title> </head> <body> <h1>Hello World!</h1> <p>This is my ancient website. Enjoy your time here.</p> <a href=”page2.html”>Click here to open page 2</a> </body></html>
  5. 5. Framework = ? • Per creare pagine web dinamiche sono stati introdotti i linguaggi di programmazione “server-side”<%@ language="vbscript" %><html>...<body> <h1>Un esempio di codice dinamico</h1> <% For i = 1 to 10 Step 1 response.write("Questo messaggio sarà stampato 10 volte") Next %></body></html>
  6. 6. Framework = ?Col crescere delle esigenze e con l’evolversi deidesign patterns, sono aumentate le possibilitàe le complicazioni • Database • Manipolazione immagini • Elaborazione files • ...
  7. 7. Framework = ?• Un framework è un software che permette di supportare la fase di sviluppo di siti, web application o web services.• Lo scopo di un framework è ridurre l’overhead di un programmatore nello scrivere parti di codice comuni (gestione database, templating, sessioni, ecc)
  8. 8. OvveroUn framework è una collezione di “strati” di software, ognuno dei quali esegue compiti diversi
  9. 9. Caratteristiche• Database configuration, access, mapping (Object-Relational Mapping)• URL mapping• Templating
  10. 10. Caratteristiche• Caching• Security• AJAX• Helpers
  11. 11. Framework != CMS• È un errore molto frequente quello di confondere il concetto di Content Management System con quello di Framework.• Solitamente (ma non sempre!) un CMS è qualcosa di più specifico e complesso di un framework
  12. 12. Framework != CMSIl CMS è un’applicazione “pronta all’uso” chesolitamente serve per creare facilmente siti ewebapp: • È un contenitore (di pagine, articoli, contenuti multimediali, ecc.) • Il backend è più o meno standard • Ha un proprio sistema di templating • Di solito customizzabili solo tramite l’uso di plugin specifici
  13. 13. Quale framework utilizzare? Dipende da:• Linguaggio di sviluppo che si vuole adoperare• Necessità strutturali del progetto
  14. 14. Python Clojure JavascriptErlang PHP RubyC Asp.NET Smalltalk Java
  15. 15. Per ognuno dei linguaggi esistenti esistono diversi framework
  16. 16. Python• Django• Flask• TurboGear• Zope 2
  17. 17. PHP• Zend• CodeIgniter• Symphony• Slim• CakePHP
  18. 18. Ruby• Ruby on Rails• Sinatra• Ramaze
  19. 19. Javascript• node.js• meteor JS• SproutCore
  20. 20. Punti in comune• Paradigma Model-View-Controller• Strutturazione “Three-tier” (client, application, database)• A volte, sono molto simili Infatti...
  21. 21. Un esempio pratico• PHP: Slim• Python: Flask• Javascript: node.js + Express JS
  22. 22. Installazione: Slim Da shell:user@host:projectA$ curl -s https://getcomposer.org/installer | php Create un file composer.json{ "require": { "slim/slim": "2.*" }} Da shell:user@host:projectA$ php composer.phar install
  23. 23. Installazione: ExpressJS Scaricate ed installate node.js Create un file package.json{ "name": "node-express-test", "description": "NodeJS + ExpressJS test", "version": "0.0.1", "private": true, "dependencies": { "express": "3.x" }} Da shell:user@host:projectB$ npm install
  24. 24. Installazione: Flask Da shell:user@host:projectC$ pip install flask EPIC WIN
  25. 25. Hello world: Slim index.php<?phprequire vendor/autoload.php;$app = new SlimSlim();$app->get(/, function () { echo "Hello World!";});$app->run();?>
  26. 26. Hello world: ExpressJS index.jsvar express = require(express);var app = express();app.get(/, function(req, res){ res.send(Hello World!);});app.listen(8002);
  27. 27. Hello world: Flask index.pyfrom flask import Flaskapp = Flask(__name__)@app.route(/)def hello_world(): return Hello World!if __name__ == __main__: app.run(port=8003)
  28. 28. Development server: PHP Da shell (PHP >= 5.4):user@host:projectA$ php -S localhost:8001 Altrimenti bisogna installare un classico stack *AMP
  29. 29. Development server: node.js Da shell:user@host:projectB$ node index.js
  30. 30. Development server: Python Da shell:user@host:projectC$ python index.py
  31. 31. Alcune considerazioni I costrutti dei vari frameworkiniziano a somigliarsi tantissimo
  32. 32. Alcune considerazioniVa bene specializzarsi con una tecnologia, ma è necessario “cambiare aria” ogni tanto
  33. 33. Alcune considerazioniScegliete il framework rispetto al progetto che dovete sviluppare
  34. 34. Riferimenti• http://en.wikipedia.org/wiki/ Comparison_of_web_application_frameworks• http://en.wikipedia.org/wiki/Web_application_framework• http://www.slimframework.com/• http://nodejs.org/• http://expressjs.com/• http://www.pip-installer.org/en/latest/installing.html• http://flask.pocoo.org/
  35. 35. Graziedell’attenzione @giefferre http://gdlabs.it

×