Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Anatomia di un sistema
informativo sul Web
Giovanni Grasso
This
work
is
licensed
under
a
Crea2ve
Commons
A6ribu2on-‐Noncommercial-‐Share
Alike
3.0
United
States
See
h6p://crea2vecommons.org/licenses/by-‐nc-‐sa/3.0/us/
for
details
Anatomia
di
un
sistema
informa2vo
su
Web
Archite6ura
client
server
Browser
(Firefox,
internet
Site
Chrome,…)
HTTP+URI+Cookie
Model-‐View-‐Controller
Controller
REST
CRUD
Model
View
ORM
Tra6o
da:
David
Pa6erson,
Armando
Fox
CRUD
ORM
Engineering
Long-‐Las-ng
So/ware:
An
Agile
Approach
Using
SaaS
and
Cloud
Compu-ng
Internet
=
Web?
La risposta e’ no
“The
Internet
is
the
global
system
of
interconnected
mainframe,
personal,
and
wireless
computer
networks
Internet
that
use
the
Internet
protocol
suite
(TCP/IP)
to
link
billions
of
devices
worldwide.
Email
The
Internet
carries
an
extensive
range
of
informa-on
Web resources
and
services,
such
as
the
World
Wide
Web
(WWW),
electronic
mail,
Usenet
newsgroups,
telephony,
and
peer-‐to-‐peer
networks
for
file
sharing.”
Online
gaming
FTP
Tim
Berners-‐Lee
L’invenzione
del
WWW
e’
solitamente
a6ribuita
al
britannico
Tim
Barners-‐Lee,
che
nel
1990,
quando
lavorava
al
CERN,
propose
un
sistema
ipertestuale
distribuito
• Ipertesto
=
testo
a
sviluppo
non
lineare
• Distribuito
=
dislocato
sui
nodi
di
una
rese
La
crescita
del
web
fu
agevolata
dalla
decisione
del
CERN
di
non
breve6are
il
lavoro
e
le
idee
dei
propri
dipenden2,
rendendo
pubblci
sia
il
codice
sia
i
protocolli
senza
vincoli
Cara6eris2che
del
Web
Subito
dopo
la
sua
proposta
iniziale,
Berners-‐Lee
sviluppo’
quali
dovevano
essere
le
principali
cara6eris2che
del
Web:
1. Una
URL
per
iden2ficare
univocamente
una
risorsa
sul
Web.
2. Il
protocollo
HTTP
per
descrivere
come
operano
richiesta
e
risposta.
3. Una
programma
sogware
(successivamente
chiamato
web
server)
che
risponde
a
richieste
HTTP.
4. Un
linguaggio
per
la
pubblicazione
di
documen2:
HTML.
5. Un
programma
(successivamente
chiamato
browser)
per
effe6uare
richieste
HTTP
da
URLs
e
visualizzare
il
codice
HTML
ricevuto
come
risposta.
Anatomia
di
un
sistema
informa2vo
su
Web
Archite6ura
client
server
Browser
(Firefox,
internet
Site
Chrome,…)
HTTP+URI+Cookie
Model-‐View-‐Controller
Controller
REST
CRUD
Model
View
ORM
Tra6o
da:
David
Pa6erson,
Armando
Fox
CRUD
ORM
Engineering
Long-‐Las-ng
So/ware:
An
Agile
Approach
Using
SaaS
and
Cloud
Compu-ng
Archite6ura
Client-‐Server
• World
Wide
Web
– servizio
applica2vo
di
Internet
basato
su
un’archite6ura
client/server
– ma
non
è
l’unico
servizio
client/server
• Nel
caso
del
Web
– risorse:
documen2,
immagini
ed
altri
media,
servizi
interalvi
– client:
2picamente
il
browser
o
una
app
– server:
server
per
l’accesso
a
risorse
Web
Archite6ura
Client-‐Server
• Consideriamo
il
sito
del
corso
di
laurea
– È
un
esempio
di
sistema
su
archite6ura
Client-‐Server
• Il
browser
è
un
esempio
di
un
client
– un
programma
specializzato
a
chiedere
ad
un
server
informazioni
e
a
perme6ere
all'utente
di
interagire
con
tali
informazioni
• Il
programma
che
risponde
sul
sito
del
corso
è
un
esempio
di
server
– un
applica2vo
specializzato
nell’
a6endere
richieste
dai
client
e
a
fornire
una
risposta
Client-‐Server
• Il
client
fa
un
richiesta
• Il
server
invoca
una
applicazione
per
soddisfare
la
richiesta
e
manda
in
risposta
al
client
l'output
della
applicazione
• Il
client
visualizza
la
risposta
Anatomia
di
un
sistema
informa2vo
su
Web
Archite6ura
client
server
Browser
(Firefox,
internet
Site
Chrome,…)
HTTP+URI+Cookie
Model-‐View-‐Controller
Controller
REST
CRUD
Model
View
ORM
Tra6o
da:
David
Pa6erson,
Armando
Fox
CRUD
ORM
Engineering
Long-‐Las-ng
So/ware:
An
Agile
Approach
Using
SaaS
and
Cloud
Compu-ng
Il
Protocollo
HTTP
• Client
e
server
comunicano
a6raverso
un
protocollo
di
rete
– insieme
di
regole
condivise
tra
gli
agen2
coivol2
• Browser
e
server
Web
comunicano
con
il
protocollo
HTTP
(HyperText
Transfer
Protocol)
– HTTP
si
basa
su
TCP/IP
(Transmission
Control
Protocol/Internet
Protocol)
– 4
comandi
principali:
GET,POST,PUT,DELETE
HTTP
• In
una
rete
TCP/IP,
ogni
computer
(host)
ha
un
indirizzo
IP
e
rimane
in
ascolto
su
una
porta
– Es.
193.205.219.57:8080
– Il
numero
IP
iden2fica
un
computer
sulla
rete
• Di
solito
non
usiamo
l'indirizzo
IP,
ma
un
nome:
un
server
specializzato
(Domain
Name
Server,
DNS)
man2ene
una
mappa
nomeànumero
IP.
Quando
il
browser
conta6a
un
server
per
nome
(es.
www.unical.it),
automa2camente
chiede
ad
un
DNS
il
numero
IP
ad
esso
associato
– La
porta
iden2fica
uno
specifico
programma
server
• Tipicamente
un
server
web
è
impostato
sulla
porta
:80
Uniform
Resource
Iden2fier
• La
stringa
h6p://www.people.it:80/search.php?name=pinco&surname=pallino
è
un
Uniform
Resource
Iden2fier
(URI)
– Nome
del
protocollo
(h6p://)
– Hostname
(www.people.it)
– Port
number,
opzionale:
se
non
specificata
si
usa
il
default
associato
al
protocollo
(:80)
– Risorsa
richiesta
all'host
(/search.php)
• Immagine,
pagina
HTML,
etc.
• Ogni
applicazione
ha
le
sue
regole
per
interpretare
il
nome
della
risorsa.
REST
rappresenta
una
proposta
affermata
e
diffusa
(perchè
semplice
e
consistente)
Uniform
Resource
Iden2fier
• Si
puo’
specificare
anche
una
query
string:
coppie
nome=valore
separate
da
&
• Serve
a
trasme6ere
parametri
al
server
• Sintassi
query
string:
?<nome-‐parametro>=<valore>(&<nome-‐parametro>=<valore>)*
Es.
h6p://www.people.it/search.php?name=pinco&surname=pallino
Nome
Valore
Nome
Valore
parametro
(pinco)
parametro
(pallino)
(name)
(surname)
Cookie
• Il
protocollo
HTTP
è
privo
di
stato
– Ogni
richiesta
non
ha
memoria
delle
preceden2
– Serve
un
meccanismo
per
mantenere
traccia
dello
stato
della
"sessione"
tra
una
richiesta
e
l’altra
• Session
Cookies
• Persistent
Cookies
– tracciamento
delle
abitudini
– personalizzazione
dei
contenu2
– mantenere
l’utente
loggato
Anatomia
di
un
sistema
informa2vo
su
Web
Archite6ura
client
server
Browser
(Firefox,
internet
Site
Chrome,…)
HTTP+URI+Cookie
Model-‐View-‐Controller
Controller
REST
CRUD
Model
View
ORM
Tra6o
da:
David
Pa6erson,
Armando
Fox
CRUD
ORM
Engineering
Long-‐Las-ng
So/ware:
An
Agile
Approach
Using
SaaS
and
Cloud
Compu-ng
HTML+CSS
• L'interazione
con
l'utente
avviene
a6raverso
pagine
Web
• Le
tecnologie
base
per
la
codifica
di
pagine
Web
sono:
HTML
+
CSS
(e
JavaScript)
– HTML:
definisce
il
contenuto
della
pagina
– CSS:
definisce
la
presentazione
del
contenuto
della
pagina
– Javascript:
definisce
il
comportamento
HTML+CSS
• HTML:
linguaggio
di
markup
per
la
definizione
di
pagine
ipertestuali
– stru6ura
gerarchica,
rappresentata
come
nodi
di
un
albero
• CSS:
linguaggio
per
associare
direlve
di
presentazione
agli
elemen2
della
stru6ura
gerarchica
di
un
documento
HTML
• Javascript:
semplicemente
il
linguaggio
di
programmazione
del
Web.
HTML+CSS
• Una
stru6ura
gerarchica
ha
diverse
forme
di
rappresentazione
equivalente:
– nidificazione
di
nodi
in
un
albero
– nidificazione
di
elemen2
in
un
documento
– nidificazione
di
riquadri
HTML+CSS
<!DOCTYPE HTML>
html <html>
<body>
<h1>Linguaggi di programmazione:</h1>
<ul>
body
<li>Java</li>
<li>Ruby</li>
<li>Phyton</li>
<li>C language</li>
</ul>
h1 ul </body>
</html>
Linguaggi:
li li li li
Java
Ruby
h1 ul
Phyton
Linguaggi:
C
Language
li li li li
Regola
h1 {
color: red;
font-size: 14pt;
} Dichiarazione
ul {
border: solid; Valore
}
Proprietà
Anatomia
di
un
sistema
informa2vo
su
Web
Archite6ura
client
server
Browser
(Firefox,
internet
Site
Chrome,…)
HTTP+URI+Cookie
Model-‐View-‐Controller
Controller
REST
CRUD
Model
View
ORM
Tra6o
da:
David
Pa6erson,
Armando
Fox
CRUD
ORM
Engineering
Long-‐Las-ng
So/ware:
An
Agile
Approach
Using
SaaS
and
Cloud
Compu-ng
Archite6ura
3-‐Tier
• I
SIW
sono
stru6ura2
in
una
archite6ura
3-‐-er
• Tre
2er
logici
– Presenta2on
Tier
– Logic
Tier
– Persistence
Tier
• Alla
distribuzione
logica
può
corrispondere
anche
una
distribuzione
fisica
Architettura >> Architettura
Archite6ura 3-‐Tier
Server DBMS
Applicativo
HTTP
browser
Internet
DB
Pagine
Load Balancer
Load Balancer
Load Balancer
HTTP+URI+Cookie
Web
Server
AppServer
DBMS
HTML+CSS
(JBoss,
(Postgres,
(Apache,MSIIS,
…)
GlassFish,
…)
MySQL,
…)
HTML
CSS
Presenta2on
Tier
Logic
Tier
Persistence
Tier
Archite6ura
3-‐2er
Controller
Model-‐View-‐Controller
REST
Model
View
CRUD
ORM
Tra6o
da:
David
Pa6erson,
Armando
Fox
CRUD
ORM
Engineering
Long-‐Las-ng
So/ware:
An
Agile
Approach
Using
SaaS
and
Cloud
Compu-ng
Model-‐View-‐Controller
• Controller
– ha
la
responsabilità
di
ges2re
la
richiesta:
• sulla
base
delle
richieste
dell'utente
invoca
un
metodo
del
modello
• sulla
base
del
risultato
ritornato
decide
a
quale
componente
affidare
la
ges2one
(creazione)
della
risposta
• Model
– ha
la
responsabilità
di
implementare
la
logica
applica2va
• View
– ha
la
responsabilità
di
ges2re
l'interazione
con
l'utente
• mostrare
i
da2
del
modello
(prepara2
dal
controller)
• raccoglie
da2
dall'utente
Model-‐View-‐Controller
• In
Java
:
– Controller
• classe
Java
specializzata
a
ges2re
la
richiesta.
Ogni
metodo
corrisponde
ad
una
azione
– Model
• classi
che
rappresentano
il
dominio
e
le
rela2ve
operazioni
di
manipolazione.
Solitamente
si
appoggia
ad
un
DB
per
la
persistenza.
– View
• Dinamiche
basate
su
tecnologie
di
templa2ng
per
HTML,
XML,
JSON
Anatomia
di
un
sistema
informa2vo
su
Web
Archite6ura
client
server
Browser
(Firefox,
internet
Site
Chrome,…)
HTTP+URI+Cookie
Web
Server
AppServer
DBMS
HTML+CSS
(JBoss,
(Postgres,
(Apache,MSIIS,
…)
GlassFish,
…)
MySQL,
…)
HTML
CSS
Presenta2on
Tier
Logic
Tier
Persistence
Tier
Archite6ura
3-‐2er
Controller
Model-‐View-‐Controller
REST
Model
View
CRUD
ORM
Tra6o
da:
David
Pa6erson,
Armando
Fox
CRUD
ORM
Engineering
Long-‐Las-ng
So/ware:
An
Agile
Approach
Using
SaaS
and
Cloud
Compu-ng
Mapping
Risorse
• Come
passiamo
da
una
richiesta
HTTP
ad
una
azione
sul
modello
(a6raverso
l'invocazione
di
un
metodo
del
controller)?
• Sistema
di
mapping
(o
rou2ng)
– richiesta
HTTP
-‐>
metodo
del
controller
• Route:
richiesta
HTTP
à
azione
– Richiesta
HTTP:
URI
+
metodo
HTTP
– Azione:
controller
(classe)
+
metodo
(della
classe)
REST
• Representa2on
State
Transfer
(REST)
• S2le
archite6urale
–
API
stateless
su
HTTP
• Ado6a
un
sistema
di
convenzioni
per
definire
come
u2lizzare
e
indirizzare
risorse
di
rete
con
il
protocollo
HTTP
– in
pra2ca
perme6e
di
definire
semplici
API
– convenzione
su
route
(URI
+metodo
HTTP)
REST
Metodo
HTTP
Operazione
CRUD
GET
Retrieve
POST
Create
PUT
Update
DELETE
Delete
GET|PUT|DELETE
h6p://www.example.com/products/66432
read,
update,
delete
il
prodo6o
con
id
=
66432
POST
h6p://www.example.com/products
crea
un
nuovo
prodo6o
(con
parametri
passa2
nel
metodo
POST)
GET
h6p://www.example.com/customers/33245/orders
ritorna
gli
ordini
per
il
cliente
33245
GET
h6p://www.example.com/customers/33245/orders/8769
res2tuisce
l'ordine
8769
del
cliente
33245
Anatomia
di
un
sistema
informa2vo
su
Web
Archite6ura
client
server
Browser
(Firefox,
internet
Site
Chrome,…)
HTTP+URI+Cookie
Model-‐View-‐Controller
Controller
REST
CRUD
Model
View
ORM
Tra6o
da:
David
Pa6erson,
Armando
Fox
CRUD
ORM
Engineering
Long-‐Las-ng
So/ware:
An
Agile
Approach
Using
SaaS
and
Cloud
Compu-ng
CRUD
• I
da2
devono
essere
resi
persisten2,
cioè
salva2
in
un
database
• Le
principali
operazioni
della
persistenza
sono:
– Create:
crea
una
nuova
tupla
nel
database
– Retrieve:
recupera
una
(o
più)
tuple
dal
database
– Update:
aggiorna
una
(o
più)
tuple
del
database
– Delete:
cancella
una
(o
più)
tuple
dal
database
CRUD
• Problema
principale:
conciliare
in
maniera
efficace
ed
efficiente
il
mondo
OO
con
il
mondo
relazionale
– classi
–
tabelle
– oggel
–
tuple
– riferimen2
–
foreign
key
– navigazione
–
join
• Altri
problemi:
consistenza
e
concorrenza
– ges2one
delle
transazioni
CRUD
• Diverse
soluzioni:
– Ac2ve
Record
• le
classi
del
modello
sono
"estese"
con
metodi
che
implementano
le
operazioni
CRUD
– save(),
list()
– Data
Access
Object
• la
responsabilità
di
ges2re
le
operazioni
CRUD
viene
delegata
ad
opportuni
oggel
(Data
Access
Objects)
CRUD
• Problemi:
– quando
recupero
un
ogge6o,
inseguo
(e
recupero)
tul
i
suoi
riferimen2?
Prodo6o
1 RigaOrdine Ordine
nome
* * 1
prezzoUnitario id
descrizione
quantità data
prezzo
*
1
• Soluzione:
Lazy-‐Load
Cliente
– classe
proxy:
estensione
con
metodi
id
HTTP+URI+Cookie
Model-‐View-‐Controller
Controller
REST
CRUD
Model
View
ORM
Tra6o
da:
David
Pa6erson,
Armando
Fox
CRUD
ORM
Engineering
Long-‐Las-ng
So/ware:
An
Agile
Approach
Using
SaaS
and
Cloud
Compu-ng
Termini della licenza