O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 35 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Anúncio

Semelhante a Web frameworks (20)

Anúncio

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 “web development” 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 dei design 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. Ovvero Un 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 != CMS Il CMS è un’applicazione “pronta all’uso” che solitamente serve per creare facilmente siti e webapp: • È 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 Javascript Erlang PHP Ruby C 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 <?php require 'vendor/autoload.php'; $app = new SlimSlim(); $app->get('/', function () { echo "Hello World!"; }); $app->run(); ?>
  26. 26. Hello world: ExpressJS index.js var express = require('express'); var app = express(); app.get('/', function(req, res){ res.send('Hello World!'); }); app.listen(8002);
  27. 27. Hello world: Flask index.py from flask import Flask app = 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 framework iniziano a somigliarsi tantissimo
  32. 32. Alcune considerazioni Va bene specializzarsi con una tecnologia, ma è necessario “cambiare aria” ogni tanto
  33. 33. Alcune considerazioni Scegliete 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. Grazie dell’attenzione @giefferre http://gdlabs.it

×