Web Frameworks
A brief overview
Gianfranco Reppucci
@giefferre

martedì 29 ottobre 13
So, what?

• Cos’è un framework web?
• Quale framework utilizzare?
• Qualche esempio pratico
• Alcune considerazioni

mart...
OK, ma perché parlare di
web framework?
Non tutto quello che viene considerato “web
development” si riduce a “creare siti”...
Framework = ?
• I primi siti web erano una collezione di
pagine HTML statiche

• Ogni aggiornamento richiedeva un
cambiame...
Framework = ?
• Per creare pagine web dinamiche sono stati
introdotti i linguaggi di programmazione
“server-side”

<%@ lan...
Framework = ?
Col crescere delle esigenze e con l’evolversi dei
design patterns, sono aumentate le possibilità
e le compli...
Framework = ?
• Un framework è un software che permette di
supportare la fase di sviluppo di siti, web
application o web s...
Ovvero

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

martedì 29 ottobre...
Caratteristiche

• Database configuration, access, mapping
(Object-Relational Mapping)

• URL mapping
• Templating

martedì...
Caratteristiche

• Caching
• Security
• AJAX
• Helpers

martedì 29 ottobre 13
Framework != CMS
• È un errore molto frequente quello di
confondere il concetto di Content
Management System con quello di...
Framework != CMS
Il CMS è un’applicazione “pronta all’uso” che
solitamente serve per creare facilmente siti e
webapp:

• È...
Quale framework
utilizzare?

Dipende da:

• Linguaggio di sviluppo che si vuole adoperare
• Necessità strutturali del prog...
Python

Clojure

Javascript

Erlang

PHP
C
Asp.NET
Smalltalk

Java

martedì 29 ottobre 13

Ruby
Per ognuno dei linguaggi esistenti
esistono diversi framework

martedì 29 ottobre 13
Python

• Django
• Flask
• TurboGear
• Zope 2

martedì 29 ottobre 13
PHP
• Zend
• CodeIgniter
• Symphony
• Slim
• CakePHP

martedì 29 ottobre 13
Ruby

• Ruby on Rails
• Sinatra
• Ramaze

martedì 29 ottobre 13
Javascript

• node.js
• meteor JS
• SproutCore

martedì 29 ottobre 13
Punti in comune
• Paradigma Model-View-Controller
• Strutturazione “Three-tier”

(client, application, database)

• A volt...
Un esempio pratico

• PHP: Slim
• Python: Flask
• Javascript: node.js + Express JS

martedì 29 ottobre 13
Installazione: Slim
Da shell:
user@host:projectA$ curl -s https://getcomposer.org/installer | php

Create un file composer....
Installazione: ExpressJS
Scaricate ed installate node.js
Create un file package.json
{
	
	
	
	
	
	
	
}

"name": "node-expre...
Installazione: Flask

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

EPIC WIN

martedì 29 ottobre 13
Hello world: Slim
index.php
<?php
require 'vendor/autoload.php';
$app = new SlimSlim();
$app->get('/', function () {
echo ...
Hello world: ExpressJS

index.js
var express = require('express');
var app = express();
app.get('/', function(req, res){
r...
Hello world: Flask

index.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello...
Development server: PHP

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

Altrimenti bisogna installare u...
Development server:
node.js
Da shell:
user@host:projectB$ node index.js

martedì 29 ottobre 13
Development server:
Python
Da shell:
user@host:projectC$ python index.py

martedì 29 ottobre 13
Alcune considerazioni

I costrutti dei vari framework
iniziano a somigliarsi tantissimo

martedì 29 ottobre 13
Alcune considerazioni

Va bene specializzarsi con una
tecnologia, ma è necessario
“cambiare aria” ogni tanto

martedì 29 o...
Alcune considerazioni

Scegliete il framework rispetto al
progetto che dovete sviluppare

martedì 29 ottobre 13
Riferimenti
• http://en.wikipedia.org/wiki/

Comparison_of_web_application_frameworks

• http://en.wikipedia.org/wiki/Web_...
Grazie
dell’attenzione
@giefferre
http://gdlabs.it

martedì 29 ottobre 13
Upcoming SlideShare
Loading in …5
×

Web frameworks

456 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
456
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Web frameworks

  1. 1. Web Frameworks A brief overview Gianfranco Reppucci @giefferre martedì 29 ottobre 13
  2. 2. So, what? • Cos’è un framework web? • Quale framework utilizzare? • Qualche esempio pratico • Alcune considerazioni martedì 29 ottobre 13
  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 • ... martedì 29 ottobre 13
  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> martedì 29 ottobre 13
  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> martedì 29 ottobre 13
  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 • ... martedì 29 ottobre 13
  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) martedì 29 ottobre 13
  8. 8. Ovvero Un framework è una collezione di “strati” di software, ognuno dei quali esegue compiti diversi martedì 29 ottobre 13
  9. 9. Caratteristiche • Database configuration, access, mapping (Object-Relational Mapping) • URL mapping • Templating martedì 29 ottobre 13
  10. 10. Caratteristiche • Caching • Security • AJAX • Helpers martedì 29 ottobre 13
  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 martedì 29 ottobre 13
  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 martedì 29 ottobre 13
  13. 13. Quale framework utilizzare? Dipende da: • Linguaggio di sviluppo che si vuole adoperare • Necessità strutturali del progetto martedì 29 ottobre 13
  14. 14. Python Clojure Javascript Erlang PHP C Asp.NET Smalltalk Java martedì 29 ottobre 13 Ruby
  15. 15. Per ognuno dei linguaggi esistenti esistono diversi framework martedì 29 ottobre 13
  16. 16. Python • Django • Flask • TurboGear • Zope 2 martedì 29 ottobre 13
  17. 17. PHP • Zend • CodeIgniter • Symphony • Slim • CakePHP martedì 29 ottobre 13
  18. 18. Ruby • Ruby on Rails • Sinatra • Ramaze martedì 29 ottobre 13
  19. 19. Javascript • node.js • meteor JS • SproutCore martedì 29 ottobre 13
  20. 20. Punti in comune • Paradigma Model-View-Controller • Strutturazione “Three-tier” (client, application, database) • A volte, sono molto simili Infatti... martedì 29 ottobre 13
  21. 21. Un esempio pratico • PHP: Slim • Python: Flask • Javascript: node.js + Express JS martedì 29 ottobre 13
  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 martedì 29 ottobre 13
  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 martedì 29 ottobre 13
  24. 24. Installazione: Flask Da shell: user@host:projectC$ pip install flask EPIC WIN martedì 29 ottobre 13
  25. 25. Hello world: Slim index.php <?php require 'vendor/autoload.php'; $app = new SlimSlim(); $app->get('/', function () { echo "Hello World!"; }); $app->run(); ?> martedì 29 ottobre 13
  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); martedì 29 ottobre 13
  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) martedì 29 ottobre 13
  28. 28. Development server: PHP Da shell (PHP >= 5.4): user@host:projectA$ php -S localhost:8001 Altrimenti bisogna installare un classico stack *AMP martedì 29 ottobre 13
  29. 29. Development server: node.js Da shell: user@host:projectB$ node index.js martedì 29 ottobre 13
  30. 30. Development server: Python Da shell: user@host:projectC$ python index.py martedì 29 ottobre 13
  31. 31. Alcune considerazioni I costrutti dei vari framework iniziano a somigliarsi tantissimo martedì 29 ottobre 13
  32. 32. Alcune considerazioni Va bene specializzarsi con una tecnologia, ma è necessario “cambiare aria” ogni tanto martedì 29 ottobre 13
  33. 33. Alcune considerazioni Scegliete il framework rispetto al progetto che dovete sviluppare martedì 29 ottobre 13
  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/ martedì 29 ottobre 13
  35. 35. Grazie dell’attenzione @giefferre http://gdlabs.it martedì 29 ottobre 13

×