Database e Web - le Active Server Pages - Il modello client

Transcript

Database e Web - le Active Server Pages - Il modello client
Database e Web
- le Active Server Pages -
Andrea Proli
Laboratorio di Basi di Dati – A.A. 2005/2006
Il modello client-server
n
Il modello di interazione client-server ricorre spesso
sia nelle architetture informatiche, sia nella vita reale
n Modella la comunicazione tra un’entità che offre un
servizio (server
server) e un’entità che ne usufruisce (client
client)
n Tipicamente, la fruizione del servizio avviene tramite
uno scambio di messaggi: a fronte di una richiesta
effettuata dal client, il server fornisce una risposta
1. Richiesta
SERVER
CLIENT
2. Risposta
2
1
Il modello client-server
n
Il modello client-server è un paradigma astratto. In
concreto, può assumere diverse forme
n I vari sistemi classificabili come client-server si
differenziano in base ai seguenti aspetti:
ü Mezzo di comunicazione (posta, voce, telefono, …)
ü Contenuto della richiesta e della risposta (dati, …)
ü Metodo
di reciproca identificazione e localizzazione
(credenziali, coordinate geografiche, indirizzo, …)
ü Natura del servizio (vendita, calcolo, archiviazione, …)
ü Mantenimento della storia
storia, ovvero ciò che un server registra
informazioni sui client che ha servito (preferenze, stato, …)
ü Luogo di memorizzazione delle suddette informazioni (sul
lato server o sul lato client, …)
3
Esempio – una biblioteca
n
Uno studente (client) si reca in una biblioteca (server)
per ottenere il prestito di un libro (servizio offerto)
ü La richiesta avviene tramite uno scambio vocale
ü Il contenuto della richiesta è in sostanza il titolo del libro che
ü
ü
ü
ü
si vuole ottenere in prestito; il contenuto della risposta è il
libro e la data di restituzione
L’identificazione del client avviene tramite l’esibizione di una
tessera. La biblioteca è localizzata tramite il suo indirizzo
Il servizio effettuato è (ovviamente) il prestito del libro
La biblioteca mantiene informazioni storiche sui servizi offerti
ai propri tesserati, in particolare la presenza o meno di libri
non ancora restituiti
Queste informazioni vengono mantenute all’interno della
biblioteca (sul
sul lato server
server) in un registro cartaceo o
informatico
4
2
Esempio – un supermercato
n
Una persona (client) si reca in un supermercato
(server) per acquistare dei prodotti (servizio offerto)
ü La richiesta avviene tramite uno scambio vocale
ü Il contenuto della richiesta è l’insieme dei prodotti che si
intende acquistare, e il denaro necessario per il pagamento
ü Non occorre identificare il client. La localizzazione del
supermercato avviene tramite il suo indirizzo
ü Il servizio effettuato è (ovviamente) la vendita di prodotti
ü Il supermercato non mantiene informazioni sui propri clienti:
le modalità con cui viene offerto un servizio non dipendono
dai servizi offerti in precedenza allo stesso cliente
ü Nel caso della tessera punti, il supermercato mantiene
informazioni sul volume di acquisto di un cliente tramite
l’accredito di punti all’interno di una tessera magnetica.
Essendo questa di proprietà del cliente, la memorizzazione
avviene sul lato client
5
Esempio – un bancomat
n
Una persona (client) si reca presso un bancomat
(server) per prelevare denaro in contanti (servizio
offerto)
ü La richiesta avviene presentandosi allo sportello automatico,
ü
ü
ü
ü
ü
inserendo la tessera ed effettuando selezioni da un menu di
opzioni
Il contenuto della richiesta è la quantità di denaro che si
intende ritirare, la tessera del bancomat e il codice segreto
L’identificazione del client avviene tramite il codice PIN e la
tessera. La localizzazione del bancomat avviene tramite
ricerca
Il servizio effettuato è (ovviamente) il prelievo di denaro
Il bancomat (in realtà, la banca…) mantiene la storia dei
propri clienti, registrando la quantità di denaro residua
Queste informazioni sono memorizzate sul lato server
6
3
Il World Wide Web
n
Il modello client-server applicato al Web consiste
nella richiesta di una risorsa da parte di un
programma client e nella restituzione di quella risorsa
(se esistente) da parte di un programma server
n Il programma client è un Web browser
n Il programma server è un Web server
n Le modalità con cui il Web browser effettua una
richiesta al Web server e con cui il Web server
fornisce una risposta al Web browser sono definite
dal protocollo HTTP
7
Il World Wide Web
WEB
SERVER
WEB
BROWSER
1. Richiesta documento
http://www.google.it/index.html
2. Restituzione file
<html>
<title>Google</title>
<body>
…
</body>
</html>
URL (Uniform Resource Locator )
3. Rendering del file HTML
da parte del web browser
http://www.google.it/index.html
Protocollo Localizzazione
Contenuto
del server richiesta (nome
della pagina)
8
4
Il World Wide Web “statico”
n
Nel modello originario del WWW, le richieste
inoltrate dai client ai server Web riguardano
esclusivamente file HTML
n Questo significa che due richieste per la stessa
risorsa otterranno la stessa risposta,
risposta ossia lo stesso
documento HTML, indipendentemente da chi le
effettua e quando. La pagina visualizzata dal browser
è la stessa per tutti gli utenti e in qualsiasi momento
(a meno che non venga modificato il file HTML)
n A questo schema “statico
statico”, in cui la risposta ottenuta
non dipende né dal contesto né da eventuali criteri di
personalizzazione, viene contrapposto il modello
“dinamico
dinamico”
9
Il World Wide Web “dinamico”
n
Quasi tutti i siti Web, attualmente, realizzano
il modello dinamico
dinamico: a fronte della stessa
richiesta si possono ottenere risposte diverse
Il contenuto della risposta
che si ottiene dal web
server www.amazon.com,
cioè il file HTML visualizzato
dal browser, viene definito
in funzione del client che ha
effettuato la richiesta.
10
5
Il World Wide Web “dinamico”
n
Le applicazioni di e-commerce rappresentano
un tipico esempio di sito Web dinamico
La pagina HTML che visualizza
un “carrello della spesa” virtuale
deve riflettere lo stato attuale
dell’ordine che l’utente sta
componendo.
Se lo stesso utente ritorna alla
pagina dei prodotti e aggiunge un
prodotto al proprio ordine, alla
richiesta successiva la pagina del
carrello dovr à essere aggiornata
e riflettere la modifica.
Inoltre, a utenti diversi dovr à
essere presentato il proprio
carrello della spesa individuale.
11
Il World Wide Web “dinamico”
n
n
n
In un sito Web dinamico il contenuto della
risposta può variare da richiesta a richiesta
Tuttavia, in genere, ciò che cambia è solo
una parte del documento HTML restituito,
mentre la struttura della pagina resta perlopiù
perlopiù
invariata
Allora, è possibile realizzare un sito Web
dinamico definendo a priori un template
template, una
struttura invariante per la pagina HTML, e
completando il template con i dati variabili
calcolati al momento della richiesta
12
6
Active Server Pages
n Microsoft Active Server Pages (ASP) è uno strumento semplice
per la realizzazione di siti Web dinamici che permette di
combinare codice HTML e codice di script
<!-- Helloworld.asp -->
<TITLE>My First Active Server Web Page</TITLE>
<BODY BGCOLOR="Yellow">
<%If Time >= #12:00:00 AM# And Time < #12:00:00 PM#
Then cMessage = "Good morning, World! How about some coffee?“
Else cMessage = "Hello, World! How's your day going so far?"
End If%>
<FONT Size=12 COLOR=“Red”>
<%=cMessage %>
</FONT>
</BODY>
n Tecnologie superiori ad ASP, come JSP (Java Server Pages) e
ASP.NET, sono state sviluppate. La più semplice architettura e
la larga diffusione in ambito aziendale fanno però di ASP un
ottimo strumento didattico
13
ASP: Quadro tecnologico
n
ASP è parte di un’architettura complessa in
cui figurano diversi componenti
IIS
14
7
Cos’è ASP?
n
Il framework ASP mette a disposizione:
ü
Un linguaggio di scripting che consente di
generare codice HTML per via programmatica
ü
Un ambiente di esecuzione che permette di
interfacciarsi con il server Web attraverso i
cosiddetti “oggetti built-in”
ü
Tecnologia ActiveX e COM per collegarsi a basi
di dati non soltanto relazionali
15
Active Server Pages e DB
n
Nell’esempio precedente, la porzione di codice script
verificava il valore assunto da una variabile globale
ed emetteva un messaggio differente a seconda
dell’orario in cui la richiesta veniva effettuata
n Nelle applicazioni reali, molto più complesse, le
informazioni da inserire nell’output o da utilizzare per
determinare quale output produrre sono memorizzate
in uno o più database
n Questi database possono a loro volta trovarsi su una
macchina differente da quella su cui viene eseguito il
server Web, e ne possono esistere più copie (per
ridurre il rischio di perdita di dati a fronte di
malfunzionamenti e per aumentare le prestazioni)
prestazioni
16
8
MDAC (Microsoft Data Access Components)
n
M icrosoft Data Access Components è lo stack di
componenti per l’accesso a fonti dati
Applicazione
Applicazioneweb
web
ADO
ADO
OLE
OLEDB
DB
ODBC
ODBC
DATI
DATISQL
SQL
DATI
DATINON
NONSQL
SQL
SQL
SQLServer
Server
Oracle
Oracle
Ecc.
Ecc.
Testo
Testo
Video
Video
Ecc.
Ecc.
17
ADO
(ActiveX Data Objects)
n
Gli ActiveX Data Object sono una famiglia di
controlli ActiveX che fornisce un’interfaccia di
programmazione per il collegamento con basi
di dati
n
L’interfaccia ADO è una collezione di
operazioni di alto livello e si basa, a sua
volta, su comandi OLE DB di più basso livello
18
9
Interfacciarsi a DB con ADO
n
Come accedere a una fonte dati con ADO
1.
2.
3.
4.
5.
6.
7.
8.
9.
Connessione con data source (Connection
Connection). Opzionalmente,
iniziare una transazione
Opzionalmente, creare un oggetto per rappresentare un comando
SQL (Command
Command)
Opzionalmente, specificare colonne, tabelle, e valori della query
SQL come parametri variabili (Parameter
Parameter)
Eseguire il comando (Command
Command, Connection
Connection, o Recordset
Recordset)
Se il comando è “row-returning”, memorizzare le righe in un
oggetto contenitore (Recordset
Recordset)
Opzionalmente, creare una vista per ordinare, filtrare e navigare i
dati (Recordset
Recordset)
Modificare i dati: aggiungere, cancellare, modificare righe e
colonne (Recordset
Recordset)
Se appropriato, aggiornare il data source con le modifiche
eseguite (Recordset
Recordset)
In caso di transazione, accettare o rigettare i cambiamenti prima
di terminare la transazione (Connection
Connection)
19
Interfacciarsi a DB con ADO
n
Esempio di connessione ad un DB da ASP
<%
‘Stabilisce la connessione con una sorgente dati
strDSN = “FILEDSN=MyDatabase.dsn”
Set cn = Server.CreateObject("ADODB.Connection ")
cn.Open strDSN
'Instantiate a Recordset object
Set rsCustomers = Server.CreateObject(“ADODB.Recordset”)
‘Apre un recordset usando il metodo Open e usa la connesione creata precedentemente
strSQL = “SELECT FirstName, LastName ”
&
“FROM Customers ”
&
“WHERE LastName = ‘Smith’”
rsCustomers.Open(strSQL, cn)
‘Cicla sul record set e mostra i risultati
Set firstName = rsCustomers( “FirstName”)
Set lastName = rsCustomers(“LastName”)
Do Until rsCustomers.EOF
Response.Write firstName & “ “ & lastName & “<BR>”
rsCustomers.MoveNext
Loop
%>
L’operazione Response.Write consente di scrivere una stringa di testo nell’output che
verrà inviato al client come risposta sottoforma di documento HTML. Equivale a scrivere:
<%=objFirstName & “ ” & objLastName & “<BR> ”%>
20
10
Architettura a 3 livelli
n
Dall’architettura client-server tradizionale si evolve
allora verso un
un’’architettura a 3 livelli (3-tier)
n Il server Web, insieme con le pagine ASP che
realizzano la logica applicativa del sito, occupa il
livello intermedio, tra il front
front--end (browser dell’utente)
e il back
back--end (server dei dati)
CLIENT
WEB SERVER
Front-- end
Front
(Web Browser)
DATA SERVER
Application Logic
(ASP Files)
Back-- end
Back
(Databases)
21
Architettura a 3 livelli
n
Esempio di pagina ASP per autenticazione
ü
Nel framework ASP, l’oggetto Request incapsula la richiesta
HTTP effettuata dal client e contiene tutti i parametri (valori
dei campi dei form , ecc)
[…]
<%
‘Apre un recordset usando il metodo Open e usa la connesione creata precedentemente
username = Request.Form(“username”)
strSQL = “SELECT Password, Name, Surname ”
&
“FROM Users ”
&
“WHERE username=‘” &username & “’”
rsUsers.Open(strSQL, cn)
password = rsUsers(“Password”)
firstName = rsUsers(“Name”)
‘Effettua l’autenticazione
If (password = correctPassowrd) Then
Response.Write “<B>Benvenuto , ” & firstName & “!</B>"
Else
[…]
%>
22
11
Architettura a 3 livelli
n
Nell’esempio del carrello virtuale,
virtuale in un
database potrebbero essere memorizzati gli
ordini effettuati dai clienti e i relativi dettagli
n
Esempio nel generare la risposta alla richiesta (inoltrata
Esempio:
dal Web browser) della pagina degli ordini
(http://.../orders.asp), una porzione di codice di script
simile a quella dell’esempio precedente potrebbe allora
iterare su tutte le righe di un ordine per generare in output
una tabella HTML simile a quella del sito di e-commerce
già visto
23
Un problema…
n
Problema in relazione al carrello virtuale, come può
Problema:
il server sapere quale utente ha effettuato la
richiesta, in modo da selezionare soltanto gli ordini
da lui effettuati?
Se il codice di script generasse l’output senza curarsi di chi
abbia effettuato la richiesta, come sarebbe possibile
personalizzare il contenuto delle pagine HTML restituite?
n
Occorrerà allora che le informazioni necessarie alla
personalizzazione siano codificate, in qualche modo,
nella richiesta stessa
stessa…
24
12
Paragima di comunicazione
n
Comunicazione “tipo telefonata”
ü Tra il server e il client esiste una connessione sempre attiva
in tutto il periodo durante il quale si svolge la comunicazione
ü Il server e il client si scambiano messaggi sfruttando la
connessione attiva
ü Il server e il client chiudono la connessione quando lo
scambio di messaggi è terminato
n
Comunicazione “tipo posta” (il WWW funziona così)
ü Non esiste una connessione permanente
ü Concluso lo scambio di messaggi richiesta-risposta, il server
e il client “perdono la memoria” e non ricordano nulla dello
scambio avvenuto
ü Un nuovo scambio di messaggi richiede di instaurare una
nuova connessione (e si “ricomincia
ricomincia da capo”)
capo
25
Modello richiesta-risposta
(metafora)
che ore sono?
le 15:50
come ti chiami?
Andrea
conosci Giorgio?
Questo meccanismo banale di
comunicazione è supportato, ma
non modella comunicazioni
articolate in cui la risposta ad
una domanda può dipendere
dagli scambi di messaggi
avvenuti in precedenza…
sì
e suo fratello?
suo di chi?
da quanto tempo stiamo conversando?
dal momento in cui me l’
l’hai chiesto
hai capito cosa ti ho chiesto?
Il modello richiesta-risposta non
supporta
questo
tipo
di
comunicazione. Dopo ogni
risposta la conversazione è
chiusa, e il server perde la
chiusa
memoria dello scambio…
non mi avevi mai chiesto niente prima
26
13
Molteplicità degli interlocutori
n
Complicazione consideriamo un server al quale
Complicazione:
vengono inoltrate richieste provenienti da diversi
client
ü Se il server è “privo di memoria”, non è mai in grado di
“riconoscere” chi effettua le richieste
ü E’ quindi impossibile per il server ricostruire le sequenze di
messaggi che costituiscono le “conversazioni”
n
In un’applicazione Web, si vuole invece mantenere
lo stato dell’interazione nel tempo tra client e server,
realizzando così una comunicazione “tipo telefonata”
al di sopra di un sistema “tipo posta”…
27
Per non perdere la memoria…
n
Nelle applicazioni Web è tipico che si voglia
tener traccia delle richieste effettuate dal
client (percorsi di navigazione, selezioni…)
n
Occorre allora un meccanismo che consenta
di riconoscere quando due messaggi fanno
parte della stessa comunicazione
n
Una possibilità potrebbe essere quella di
basarsi sul riconoscimento del mittente di un
messaggio
28
14
Il “mittente”…
n
Problema quand’è che due richieste sono
Problema:
considerate parte della stessa comunicazione
con un unico mittente?
ü
Quando provengono dallo stesso indirizzo IP ?
ü Quando provengono dallo stesso computer?
ü Quando provengono dallo stesso programma?
ü Quando provengono dallo stesso processo?
ü Quando l’utente è lo stesso essere umano?
ü Tutte queste condizioni insieme?
n
Consideriamo un esempio reale…
29
Esempio…
Un sito Web che offre un servizio di consultazione online della
posta elettronica. Effettuo login e accedo alla mailbox…
30
15
Esempio…
Creo una nuova finestra dalla stessa istanza del browser e copio
l’URL nella barra degli indirizzi: tutto OK, accedo alla mailbox…
31
Esempio…
Apro una nuova istanza del browser e copio l’ URL nella barra
degli indirizzi: questa volta non vengo riconosciuto…
32
16
Soluzione: le “sessioni”
n
Tutte le richieste di pagine ad un server Web si
svolgono all’interno di una sessione
sessione. Le sessioni
sono gestite dal server Web (session
session tracking
tracking)
Una nuova sessione viene creata alla prima richiesta che non
appartiene ad alcuna sessione, e viene distrutta tramite
apposito comando oppure allo scadere di un certo tempo limite
n
Una sessione rappresenta un contesto
contesto,, un
ambiente di comunicazione all’
all ’interno del quale
ha
luogo
una
sequenza
di
interazioni
(richieste/risposte) tra il client e il server
33
Sessione
WEB
SERVER
WEB
BROWSER
1. Richiesta documento
http://www.mysite.org /login.asp
contiene: info autenticazione
3. Restituzione output HTML
contiene: SessionID (es., AB135)
2. SessionID = CreaNuovaSessione()
4. Richiesta documento
http://www.mysite.org /products.asp
contiene : SessionID (AB135)
6. Restituzione output HTML personalizzato
5. Riconoscimento SessionID=AB135
34
17
L’oggetto Session in ASP
n
La sessione corrente nel contesto della quale il
codice script di una pagina ASP viene eseguito è
incapsulata dall’oggetto
oggetto Session
n L’oggetto Session è in grado di memorizzare coppie
<nome, valore>,
valore> del tipo:
Nome
Valore
username
“Rossi”
IDProdottiSelezionati
“AB12, BC455, CD330”
IDOrdineAttuale
“ORD4513”
numeroTentativi
4
formatoPreferito
“.JPG”
…
…
35
L’oggetto Session - Esempio
n
Supponiamo che l’utente abbia inserito username e
password alla pagina www.mysite.org/login.asp
ü L’utente ha poi premuto il pulsante “login”, effettuando il
submit del form e inviando una richiesta al server Web per
la pagina www.mysite.org/authenticate.asp:
<%
[…]
‘Effettua l’autenticazione
If (password = correctPassowrd) Then
Response.Write “<B> Benvenuto , ” & firstName & &
“!</B>”
Session(“login ”)=“OK”
Response.Redirect(“www.mysite.org/homepage.asp”);
Else
Response.Write “<B> Credenziali non valide</B>”
Response.Redirect(“www.mysite.org/login.asp ”);
End If
%>
36
18
L’oggetto Session - Esempio
n
Tutte le altre pagine del sito “riservate”, ossia che
richiedono il login per consentire l’accesso al loro
contenuto, possono contenere questo prologo:
<%
‘Verifica che il login sia stato effettuato
If Not (Session(“login”)=“OK”)
Response.Redirect(“www.mysite.org/login.asp”);
End If
%>
[…]
n
In questo modo, se qualcuno tentasse di accedere
direttamente alla pagina protetta digitandone l’URL
nel browser, verrebbe automaticamente rediretto
alla pagina in cui effettuare il login
37
Mantenimento dello stato
n
L’oggetto Session realizza il concetto di
“mantenimento
mantenimento dello stato”
stato
n
Permette di realizzare una sequenza di
interazioni: ad ogni nuova richiesta, la
interazioni
comunicazione tra il client e il server “non
non
ricomincia da capo”
capo
n
Il server mantiene informazioni riguardo il
client e il codice ASP può accedere a tali
informazioni per personalizzare l’
l ’output
38
19
Implementare le sessioni…
n
Esistono in sostanza due soluzioni per tenere
traccia delle sessioni:
ü
Soluzione basata sui cookie
L’ID della sessione viene mantenuto sul client sottoforma di
cookie e inviato all’interno di ogni richiesta HTTP. Non
affidabile se il client consente di disattivare i cookie…
ü
Soluzione basata sulla riscrittura degli URL
L’ID della sessione viene passato come suffisso all’URL, da
dove il server Web provvede ad estrarlo. Questo artificio
richiede però che tutti gli eventuali link all’interno della
pagina HTML restituita, così come i target di tutti i form,
vengano opportunamente riscritti appendendo l’ID della
sessione corrente.
39
Applicazione ASP
n
Una applicazione ASP è un insieme di
documenti (“pagine ASP”) collocati nella
stessa directory virtuale
Si può pensare ad un’applicazione ASP come ad un
“sito ” Web strutturato su più pagine
ü
Lo stesso server Web può ospitare diverse
applicazioni ASP
ü
Per ogni applicazione ASP possono risultare attive
contemporaneamente diverse sessioni, associate
a utenti diversi
40
20
Applicazione ASP
n
L’oggetto Session mantiene informazioni locali ad
una singola comunicazione, ossia relative ad una
particolare sequenza di interazioni tra un certo client
e il server Web
n
L’oggetto
oggetto Application è invece un oggetto globale
globale,
relativo all’intera applicazione, anch’esso in grado di
memorizzare coppie <nome, valore>
n
Di fatto, l’oggetto Application incapsula lo stato
dell’’intera applicazione ASP
dell
41
Applicazione ASP
n
La “mappa” di un server Web sul quale girano
due applicazioni ASP:
Web server
Application 1
Page X
Application 2
Page A
Page Z
Page Y
Page B
Session 1
Session 2
Session 3
Session 4
Variables
Variables
Variables
Variables
Variables
Variables
42
21
L’oggetto Application
n
L’oggetto Application per una certa
applicazione ASP viene creato
dal
framework non appena viene inoltrata al
server una richiesta per una pagina ASP
nella relativa directory virtuale
n
L’oggetto viene distrutto soltanto quando il
server viene riavviato oppure in conseguenza
di un esplicito comando
43
L’oggetto Application - Esempio
n
L’oggetto Application può essere utilizzato per
memorizzare variabili globali, ad esempio il numero
di utenti connessi all’applicazione:
<% Application("UserNum ") = 0 %>
......
Application("UserNum ") = Application(" UserNum ") + 1%>
......
You are user: <%= Application("UserNum ") %>
n
Il codice illustrato sopra può essere inserito nella
funzione Session_OnStart, invocata alla creazione di
ogni sessione…
44
22
Il file global.asa
n
Ogni applicazione ASP contiene un file
chiamato global.asa, all’interno del quale è
possibile definire 4 funzioni personalizzate:
ü
Application_OnStart
(invocata quando l’oggetto Application viene creato)
ü
Session_OnStart
(invocata quando l’oggetto Session viene creato)
ü
Session_OnEnd
(invocata quando l’oggetto Session viene distrutto)
ü
Application_OnEnd
(invocata quando l’oggetto Application viene distrutto)
45
Gli oggetti built-in
n
Negli script ASP è possibile far uso di sei oggetti
built-in gestiti dal framework
ü Session
Memorizza variabili locali ad una sessione (descritto in precedenza)
ü Application
Memorizza variabili globali per un’applicazione ASP (descritto in precedenza)
ü Request
Rappresenta la richiesta effettuata dal client , ne riporta ’lindirizzo IP, gli eventuali
cookie inviati, i valori dei parametri allegati alla richiesta (es. i campi di un form), ecc…
ü Response
Rappresenta la risposta restituita dal server, espone un’interfaccia che consente di
scrivere in output l’HTML da generare, di redirigere l’utente a un’altra pagina, ecc...
ü Server
Memorizza informazioni relative alla macchina su cui l’applicazione viene eseguita
ü ASPError
Riporta informazioni sull’ultimo errore generato dall’applicazione – utile per in fase di
debugging
46
23
Come funziona il server Web
n Semplificando
Semplificando,
un
server
Web
implementa
il
seguente
algoritmo:
1.
2.
WEB
SERVER
Resta in ascolto sulla porta TCP 80 (porta HTTP)
Quando arriva una richiesta per una risorsa (ad esempio,
products.asp), analizza l’estensione di quella risorsa e:
a)
Se l’estensione è “.HTM” o “.HTML” (come in index.html o
homepage.html ) recupera il file e restituisci il suo
contenuto come risposta
b)
Altrimenti, verifica se esiste un programma registrato per
gestire quell’estensione (nel web server IIS di Microsoft,
un simile programma è detto “filtro”)
c)
Questo programma viene lanciato fornendo in input l’URL
della risorsa richiesta (www.mysite.org/hom.asp) e l’output
del programma viene restituito al client come risposta
Registro delle estensioni gestite
Estensione
Programma
.asp
../program1.exe
.jsp
../program2.exe
.aspx
../program3.exe
…
…
47
Oltre ASP…
n
ASP è una tecnologia ormai consolidata. Tra i
suoi successori, J2EE…
Apache o
JSERVER
Componenti lato server:
Enterprise Java Bean
48
24
Oltre ASP…
n
…e ASP.NET
Tutte le comunicazioni
sono basate su XML
Simple Object Access
Protocol
ASP.NET
XML
IIS
SOAP
Componenti lato server
ADO.NET
Framework
Integrato nel
sistema operativo,
gestisce primitive
di sicurezza e
transazioni
49
25