SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NET
Stefano Ottaviani
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
Stefano Ottaviani
 

Was ist angesagt? (20)

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

Andere mochten auch

Andere mochten auch (8)

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

Ähnlich wie Web frameworks

Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAX
Tommaso Torti
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)
jampslide
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Giorgio Cefaro
 
Gianfrasoft Corso Di Php Parte 1
Gianfrasoft   Corso Di Php   Parte 1Gianfrasoft   Corso Di Php   Parte 1
Gianfrasoft Corso Di Php Parte 1
Gianfranco Fedele
 

Ähnlich wie Web frameworks (20)

Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Node.js - Server Side Javascript
Node.js - Server Side JavascriptNode.js - Server Side Javascript
Node.js - Server Side Javascript
 
Link. php [santi caltabiano]
  Link. php [santi caltabiano]  Link. php [santi caltabiano]
Link. php [santi caltabiano]
 
Php for ASP.NET Developers
Php for ASP.NET DevelopersPhp for ASP.NET Developers
Php for ASP.NET Developers
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesigner
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesigner
 
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
 
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
 
Il PaaS di Google
Il PaaS di GoogleIl PaaS di Google
Il PaaS di Google
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAX
 
DDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continuaDDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continua
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migration
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)
 
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
 
Gianfrasoft Corso Di Php Parte 1
Gianfrasoft   Corso Di Php   Parte 1Gianfrasoft   Corso Di Php   Parte 1
Gianfrasoft Corso Di Php Parte 1
 
ASP.NET Core essentials
ASP.NET Core essentialsASP.NET Core essentials
ASP.NET Core essentials
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 

Mehr von Appsterdam Milan

Appsterdam Milan Winter Launch
Appsterdam Milan Winter LaunchAppsterdam Milan Winter Launch
Appsterdam Milan Winter Launch
Appsterdam Milan
 

Mehr von Appsterdam Milan (10)

Follow the UX path
Follow the UX pathFollow the UX path
Follow the UX path
 
Dalla black box alla scatola nera
Dalla black box alla scatola neraDalla black box alla scatola nera
Dalla black box alla scatola nera
 
Java Search Engine Framework
Java Search Engine FrameworkJava Search Engine Framework
Java Search Engine Framework
 
iOS design patterns: blocks
iOS design patterns: blocksiOS design patterns: blocks
iOS design patterns: blocks
 
Multithreading in Java
Multithreading in JavaMultithreading in Java
Multithreading in Java
 
Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!
 
Speech for Windows Phone 8
Speech for Windows Phone 8Speech for Windows Phone 8
Speech for Windows Phone 8
 
Interfacciamento di iPhone ed iPad
Interfacciamento di iPhone ed iPadInterfacciamento di iPhone ed iPad
Interfacciamento di iPhone ed iPad
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Appsterdam Milan Winter Launch
Appsterdam Milan Winter LaunchAppsterdam Milan Winter Launch
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