際際滷

際際滷Share a Scribd company logo
Web Frameworks
   A brief overview

    Gianfranco Reppucci
         @giefferre
So, what?


 Cos竪 un framework web?
 Quale framework utilizzare?
 Qualche esempio pratico
 Alcune considerazioni
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
  ...
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>
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>
Framework = ?

Col crescere delle esigenze e con levolversi dei
design patterns, sono aumentate le possibilit
e le complicazioni

  Database
  Manipolazione immagini
  Elaborazione 鍖les
  ...
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
  loverhead di un programmatore nello
  scrivere parti di codice comuni (gestione
  database, templating, sessioni, ecc)
Ovvero



Un framework 竪 una collezione di
 strati di software, ognuno dei
   quali esegue compiti diversi
Caratteristiche


 Database con鍖guration, access, mapping
  (Object-Relational Mapping)

 URL mapping
 Templating
Caratteristiche


 Caching
 Security
 AJAX
 Helpers
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湛 speci鍖co e complesso di un
  framework
Framework != CMS

Il CMS 竪 unapplicazione pronta alluso 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 luso di
    plugin speci鍖ci
Quale framework
           utilizzare?


  Dipende da:

 Linguaggio di sviluppo che si vuole adoperare
 Necessit strutturali del progetto
Python           Clojure



                     Javascript
Erlang

                PHP          Ruby
C
           Asp.NET
    Smalltalk

                 Java
Per ognuno dei linguaggi esistenti
   esistono diversi framework
Python


 Django
 Flask
 TurboGear
 Zope 2
PHP

 Zend
 CodeIgniter
 Symphony
 Slim
 CakePHP
Ruby



 Ruby on Rails
 Sinatra
 Ramaze
Javascript



 node.js
 meteor JS
 SproutCore
Punti in comune

 Paradigma Model-View-Controller
 Strutturazione Three-tier
  (client, application, database)

 A volte, sono molto simili


                                    Infatti...
Un esempio pratico



 PHP: Slim
 Python: Flask
 Javascript: node.js + Express JS
Installazione: Slim
                                     Da shell:
user@host:projectA$ curl -s https://getcomposer.org/installer | php


                           Create un 鍖le composer.json
{
    "require": {
      "slim/slim": "2.*"
    }
}


                                     Da shell:
user@host:projectA$ php composer.phar install
Installazione: ExpressJS
                         Scaricate ed installate node.js


                           Create un 鍖le 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
Installazione: Flask



                                       Da shell:
user@host:projectC$ pip install 鍖ask




                         EPIC WIN
Hello world: Slim


                                 index.php
<?php
require 'vendor/autoload.php';

$app = new SlimSlim();
$app->get('/', function () {
  echo "Hello World!";
});

$app->run();
?>
Hello world: ExpressJS


                                    index.js
var express = require('express');
var app = express();

app.get('/', function(req, res){
    res.send('Hello World!');
});

app.listen(8002);
Hello world: Flask


                             index.py
from 鍖ask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
  return 'Hello World!'

if __name__ == '__main__':
   app.run(port=8003)
Development server: PHP


                             Da shell (PHP >= 5.4):
user@host:projectA$ php -S localhost:8001


            Altrimenti bisogna installare un classico stack *AMP
Development server:
               node.js

                                    Da shell:
user@host:projectB$ node index.js
Development server:
               Python

                                      Da shell:
user@host:projectC$ python index.py
Alcune considerazioni



  I costrutti dei vari framework
iniziano a somigliarsi tantissimo
Alcune considerazioni



Va bene specializzarsi con una
 tecnologia, ma 竪 necessario
  cambiare aria ogni tanto
Alcune considerazioni



Scegliete il framework rispetto al
 progetto che dovete sviluppare
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://鍖ask.pocoo.org/
Grazie
dellattenzione
     @giefferre

   http://gdlabs.it

More Related Content

Web frameworks

  • 1. Web Frameworks A brief overview Gianfranco Reppucci @giefferre
  • 2. So, what? Cos竪 un framework web? Quale framework utilizzare? Qualche esempio pratico Alcune considerazioni
  • 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. 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. 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. Framework = ? Col crescere delle esigenze e con levolversi dei design patterns, sono aumentate le possibilit e le complicazioni Database Manipolazione immagini Elaborazione 鍖les ...
  • 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 loverhead di un programmatore nello scrivere parti di codice comuni (gestione database, templating, sessioni, ecc)
  • 8. Ovvero Un framework 竪 una collezione di strati di software, ognuno dei quali esegue compiti diversi
  • 9. Caratteristiche Database con鍖guration, access, mapping (Object-Relational Mapping) URL mapping Templating
  • 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湛 speci鍖co e complesso di un framework
  • 12. Framework != CMS Il CMS 竪 unapplicazione pronta alluso 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 luso di plugin speci鍖ci
  • 13. Quale framework utilizzare? Dipende da: Linguaggio di sviluppo che si vuole adoperare Necessit strutturali del progetto
  • 14. Python Clojure Javascript Erlang PHP Ruby C Asp.NET Smalltalk Java
  • 15. Per ognuno dei linguaggi esistenti esistono diversi framework
  • 16. Python Django Flask TurboGear Zope 2
  • 17. PHP Zend CodeIgniter Symphony Slim CakePHP
  • 18. Ruby Ruby on Rails Sinatra Ramaze
  • 19. Javascript node.js meteor JS SproutCore
  • 20. Punti in comune Paradigma Model-View-Controller Strutturazione Three-tier (client, application, database) A volte, sono molto simili Infatti...
  • 21. Un esempio pratico PHP: Slim Python: Flask Javascript: node.js + Express JS
  • 22. Installazione: Slim Da shell: user@host:projectA$ curl -s https://getcomposer.org/installer | php Create un 鍖le composer.json { "require": { "slim/slim": "2.*" } } Da shell: user@host:projectA$ php composer.phar install
  • 23. Installazione: ExpressJS Scaricate ed installate node.js Create un 鍖le 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. Installazione: Flask Da shell: user@host:projectC$ pip install 鍖ask EPIC WIN
  • 25. Hello world: Slim index.php <?php require 'vendor/autoload.php'; $app = new SlimSlim(); $app->get('/', function () { echo "Hello World!"; }); $app->run(); ?>
  • 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. Hello world: Flask index.py from 鍖ask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run(port=8003)
  • 28. Development server: PHP Da shell (PHP >= 5.4): user@host:projectA$ php -S localhost:8001 Altrimenti bisogna installare un classico stack *AMP
  • 29. Development server: node.js Da shell: user@host:projectB$ node index.js
  • 30. Development server: Python Da shell: user@host:projectC$ python index.py
  • 31. Alcune considerazioni I costrutti dei vari framework iniziano a somigliarsi tantissimo
  • 32. Alcune considerazioni Va bene specializzarsi con una tecnologia, ma 竪 necessario cambiare aria ogni tanto
  • 33. Alcune considerazioni Scegliete il framework rispetto al progetto che dovete sviluppare
  • 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://鍖ask.pocoo.org/
  • 35. Grazie dellattenzione @giefferre http://gdlabs.it