SlideShare 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 l’evolversi dei
design patterns, sono aumentate le possibilità
e le complicazioni

 • Database
 • Manipolazione immagini
 • Elaborazione files
 • ...
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)
Ovvero



Un framework è una collezione di
 “strati” di software, ognuno dei
   quali esegue compiti diversi
Caratteristiche


• Database configuration, 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ù specifico e complesso di un
  framework
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
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 file composer.json
{
    "require": {
      "slim/slim": "2.*"
    }
}


                                     Da shell:
user@host:projectA$ php composer.phar install
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
Installazione: Flask



                                       Da shell:
user@host:projectC$ pip install flask




                         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 flask 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://flask.pocoo.org/
Grazie
dell’attenzione
     @giefferre

   http://gdlabs.it

More Related Content

PDF
Creare API pubbliche, come evitare gli errori comuni
PDF
Seminario team working - 21-1-2015
PPTX
Fe04 angular js-101
PPTX
Single Page Applications
PDF
Blazor per uno sviluppatore Web Form
PDF
Blazor ha vinto? Storie di casi reali
PDF
JavaScript
PDF
REST API fantastiche e dove trovarle
Creare API pubbliche, come evitare gli errori comuni
Seminario team working - 21-1-2015
Fe04 angular js-101
Single Page Applications
Blazor per uno sviluppatore Web Form
Blazor ha vinto? Storie di casi reali
JavaScript
REST API fantastiche e dove trovarle

What's hot (20)

PDF
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
PDF
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
PDF
Applicazioni Web ultra-performanti con Vue.js e Delphi
PPTX
Cosa c'è di nuovo in asp.net core 2 0
PPTX
Asp net (versione 1 e 2)
PPTX
PPTX
.NET Core, ASP.NET Core e Linux per il Mobile
PDF
ASP.NET Core - Razor Pages
PPTX
Javascript avanzato: sfruttare al massimo il web
PPT
Generazione Dinamica di Codice in .NET
PPTX
Il "rilascio" con Octopus Deploy (visto dagli occhi di un dev)
PPTX
Frontend Development with Blazor
PDF
Applicazioni HTML5 Superveloci - Salvatore Romeo
PDF
Integrare Zend Framework in Wordpress
PPTX
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
PDF
Introduzione a node.js
PPS
Sviluppo Web Agile Con MonoRail
PPT
What's New in ASP.NET 4.5 and Visual Studio 2012
PPTX
.Net 4.0 Preview @ UGIdotNet
PPTX
Creare un Information Radiator con Delphi
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Applicazioni Web ultra-performanti con Vue.js e Delphi
Cosa c'è di nuovo in asp.net core 2 0
Asp net (versione 1 e 2)
.NET Core, ASP.NET Core e Linux per il Mobile
ASP.NET Core - Razor Pages
Javascript avanzato: sfruttare al massimo il web
Generazione Dinamica di Codice in .NET
Il "rilascio" con Octopus Deploy (visto dagli occhi di un dev)
Frontend Development with Blazor
Applicazioni HTML5 Superveloci - Salvatore Romeo
Integrare Zend Framework in Wordpress
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
Introduzione a node.js
Sviluppo Web Agile Con MonoRail
What's New in ASP.NET 4.5 and Visual Studio 2012
.Net 4.0 Preview @ UGIdotNet
Creare un Information Radiator con Delphi
Ad

Viewers also liked (8)

PDF
App Store Optimisation
PDF
Giocare con il fuoco: Firebase
PDF
iBeacon, il faro a bassa energia...
PDF
iOS Accessibility
PDF
Facciamo delle slide migliori!
PDF
Fitness for developer
PDF
Data visualization e fitness app!
PPTX
Lean Startup in Action
App Store Optimisation
Giocare con il fuoco: Firebase
iBeacon, il faro a bassa energia...
iOS Accessibility
Facciamo delle slide migliori!
Fitness for developer
Data visualization e fitness app!
Lean Startup in Action
Ad

Similar to Web frameworks (20)

PDF
Web frameworks
PDF
Come sviluppo le applicazioni web
PPTX
8 - Web app e CMS - 17/18
PPTX
8 - Web App e CMS - 16/17
TXT
Link. php [santi caltabiano]
PDF
Web 2.0 sviluppare e ottimizzare oggi
PDF
App Engine + Python
PPT
JAMP DAY 2010 - ROMA (1)
PDF
Framework software e Zend Framework
PPTX
7 - Web application e CMS
PPT
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
PPTX
Le applicazioni web e i CMS (18/19)
PPTX
07 - Web apps e CMS
PDF
Sviluppo web dall'antichità all'avanguardia e ritorno
PDF
Zend Framework 2
PDF
Combattere contro il codice del “cugino”? Symfony può aiutarti a sopravvivere...
PPT
Presentazione django reminiscence
ODP
Silex, iniziamo
ODP
Infrastrutture web e Ruby on Rails
PDF
Hands on MVC - Mastering the Web
Web frameworks
Come sviluppo le applicazioni web
8 - Web app e CMS - 17/18
8 - Web App e CMS - 16/17
Link. php [santi caltabiano]
Web 2.0 sviluppare e ottimizzare oggi
App Engine + Python
JAMP DAY 2010 - ROMA (1)
Framework software e Zend Framework
7 - Web application e CMS
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Le applicazioni web e i CMS (18/19)
07 - Web apps e CMS
Sviluppo web dall'antichità all'avanguardia e ritorno
Zend Framework 2
Combattere contro il codice del “cugino”? Symfony può aiutarti a sopravvivere...
Presentazione django reminiscence
Silex, iniziamo
Infrastrutture web e Ruby on Rails
Hands on MVC - Mastering the Web

More from Appsterdam Milan (10)

PDF
Follow the UX path
PDF
Dalla black box alla scatola nera
PDF
Java Search Engine Framework
PDF
iOS design patterns: blocks
PDF
Multithreading in Java
PDF
Data binding libera tutti!
PDF
Speech for Windows Phone 8
PDF
Interfacciamento di iPhone ed iPad
PDF
Design patterns
PDF
Appsterdam Milan Winter Launch
Follow the UX path
Dalla black box alla scatola nera
Java Search Engine Framework
iOS design patterns: blocks
Multithreading in Java
Data binding libera tutti!
Speech for Windows Phone 8
Interfacciamento di iPhone ed iPad
Design patterns
Appsterdam Milan Winter Launch

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 l’evolversi dei design patterns, sono aumentate le possibilità e le complicazioni • Database • Manipolazione immagini • Elaborazione files • ...
  • 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. Ovvero Un framework è una collezione di “strati” di software, ognuno dei quali esegue compiti diversi
  • 9. Caratteristiche • Database configuration, 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ù specifico e complesso di un framework
  • 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. 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
  • 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 file 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 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. Installazione: Flask Da shell: user@host:projectC$ pip install flask 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 flask 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://flask.pocoo.org/
  • 35. Grazie dell’attenzione @giefferre http://gdlabs.it