Da tab ase e W eb
Maggini, ScarselliSistemi per basi di dati2
Ap plic azio ni e D BM S
Un’applicazione (per l’accesso a database) contiene tre elementiunun
’’interfaccia utenteinterfaccia utente
i dati i dati
una logicauna logica Si Si
puopuo
’’usare unusare un
’’architetturaarchitettura
aadue strati (2due strati (2--tier)tier)
uno strato contiene launo strato contiene lalogica e llogica e l
’’interfacciainterfaccia
uno strato contiene i uno strato contiene i
datidati
aatre strati (3tre strati (3
--tier) o tier) o piupiu
’’((
nn-- tiertier ))
uno uno strato diverso per ciascun elementostrato diverso per ciascun elemento
Maggini, ScarselliSistemi per basi di dati3
Arc hit ett ura a du e s tra ti
Il client: Il client:
interfaccia utente e logica di interfaccia utente e logica di
comtrollocomtrollo
UnUn’’
applicazione sviluppata conapplicazione sviluppata con
un un comune linguaggiocomune linguaggiodi programmazionedi programmazione
browserbrowser+ + client sideclient sidescriptingscripting(Javascript, Applet Java, (Javascript, Applet Java, ActiveActiveX)X)Il server: Il server: i datii dati
un DBMS e il file systemun DBMS e il file system
eventualmente un Web server (se eeventualmente un Web server (se e
’’unun
utente rfacintecia ’’applicazione Web)applicazione Web)
logica DatiJavascriptJavascriptApplet Java +Applet Java +ActiveActiveXXbrowserbrowser DBMSDBMSFile systemFile systemWeb serverWeb server
Maggini, ScarselliSistemi per basi di dati4
Arc hit ett ura a du e s tra ti I I
Il client accede ai dati attraverso Il client accede ai dati attraverso
API proprietarieAPI proprietariedel DBMSdel DBMS
connettori standardconnettori standard(JDBC, ODBC, (JDBC, ODBC,
……)) OsservazioniOsservazioni
puopuo
’’ relato serveranche accad sul ataalizziagica sa loelle dart che perealiervlato s sul atazz che p reiagica sa loelle dartereanche accader
ll’’
architettura 2architettura 2
--tiertier
èè semplice da realizzaresemplice da realizzare
difficile da espanderedifficile da espandere
tipica delle applicazioni tradizionalitipica delle applicazioni tradizionali
Maggini, ScarselliSistemi per basi di dati5
Arc hit ett ura a tre str ati
PresentationPresentation tiertierun browserun browserBusinessBusiness logiclogic tiertier (middle (middle tiertier ))
un server Web, un un server Web, un transactiontransactionserver, un server, un
applicationapplication serverserver
……....
server sideserver side
logiclogic (CGI, PHP, (CGI, PHP,
servletservlet , JSP,..), JSP,..)
DataDatatiertier
DBMS + file systemDBMS + file systemlogicainterfacciautente Dati
browserbrowser DBMSDBMSFile systemFile system Server Web…..Script CGI ServletPHP….
Maggini, ScarselliSistemi per basi di dati6
Arc hit ett ura a tre str ati II
Osservazioni
si possono avere architetture n-tier
non èsempre semplice distinguere cosa deve essere messo su uncerto livelloVantaggi
separazionelogica di controllo da problematiche di presentazione
Si puo’cambiare la logica di controllo senza cambiare l’interfaccia
Si possono riusare gli stessi oggetti di controllo per applicazioni diverse
la gestione dell’applicazione ècentralizzata
Maggini, ScarselliSistemi per basi di dati7
Arc hit ett ura a tre str ati III
Vantaggi
thinclient(clientleggeri)
semplificata amministrazionedei client (.. solo un browser)
bassi costidell’hardware per il client
carico di lavorofacile da bilanciareSvantaggi
architettura piu’complessa
si usano molti strumenti per realizzare la logica di controllo
Maggini, ScarselliSistemi per basi di dati8
W eb In for m atio n S ys tem s
Web Information Systems(WIS)sistemi informativi accessibili attraverso unbrowser
permettono un accesso “universale”all’informazione
nati per il Web, sono usati anche
in Intranet
per realizzareapplicazioni di ogni tipo
strettamente legati ai DBMS
permettono di accederel’enorme quantita’di informazione preesistente nei database
man mano che diventano piu’complessi, parte dell’informazione originariamente memorizzata in pagine HTML vienespostata in database
Maggini, ScarselliSistemi per basi di dati9
Ac ce sso a da tab ase tra m ite W eb
Vantaggiindipendenza dalla piattaforma
dei client e parzialmente dei server
supporto per l’accesso contemporaneo da piattaforme diverse
visibilita’world wide
interfaccia grafica
facile da realizzare
standard
accesso alla retetrasparente
applicazionifacilmente aggiornabilie scalabili
Maggini, ScarselliSistemi per basi di dati10
Ac ce sso a da tab ase tra m ite W eb II
Svantaggibasso livello di
affidabilita’
sicurezza
alto costodi sviluppo di un’applicazione
l’HTML e HTTP sono poveri di funzionalita’
es. connessioni statless, difficolta’nell’interagire con l’utente, …
Lentezza
Internet èlenta
Gli interpreti dei linguaggi usati sono lenti
scalare un sito non èbanale, se un solo server Web non èsufficiente
Maggini, ScarselliSistemi per basi di dati11
Fu nz ion am en to di u n s erve r W eb
Quando si clicca sul link “http://www.ing.unisi.it/eventi.html”Prima fase: il browser
prepara una richiesta secondo il protocollo HTTP
apre una connessione con il serverwww.ing.unisi.ited invia la richiesta per avere il documento /eventi.htmlSeconda fase: il server
prepara una risposta nel formato HTTP che contiene
il documento HTML in /eventi.htmlse esiste
oppure contiene un messaggio di errore
invia la risposta e chiudela connessiones
BrowserServer Rispostahttp Richiesta HTTP
BrowserServer Documenti Fase 1Fase 2
Maggini, ScarselliSistemi per basi di dati12
Fu nz ion am en to di u n s erve r W eb II
Terza fase: il browser
legge la risposta estraendo il documento inviato dal server
mostra a videoil documento secondo regole che dipendono dallo specifico browser
Osservazioni
il server Web èsolo un “passa carte”:
non fa altro che inviare i documenti richiesti
non conosce il contenuto dei documenti
le connessioni sono stateless
per mantenere memoria dello stato occorre usare dei cookie
I documenti HTML sono statici
occorre estendere HTML e/o i server Web se si vuole connettersi ad un DBMS
Maggini, ScarselliSistemi per basi di dati13
Es ten de re HT M L e i se rve r W eb
Estensioni dei server WebCommon Gateway Interface (CGI), Java Servlets
i documenti (HTML o altro) sono prodotti da (l’output) di programmi
Estensioni proprietarie dei Web server (Netscape API, IIS API)
CGI e Servletspossono accedere a funzionalita’messe direttamente a disposizione dal server Web
linguaggi di scriptinglato server (PHP, ASP, JSP)
si inserisce all’interno di HTML degli script che verranno eseguiti dal server Web (o da un’applicationserver) producendo documenti HTML puriEstensioni di HTML
linguaggi di scriptinglato client (JavaScript, VBScript)
si inserisce all’interno di HTML degli script che verranno eseguiti dal browser
Java applet
vere e proprie applicazioni che possono essere scaricate ed eseguite dal browser
Maggini, ScarselliSistemi per basi di dati14
Co m m on G ate w ay In ter fac e ( CG I)
èun protocollo
consente al Web Server di eseguire programmi esterniin grado di produrrepagine dinamicamente
definisce un insieme di variabili di ambienteutili alla applicazione (es., i parametri inviati dal client)
l’applicazione
può essere scritta in un qualsiasi linguaggio(C, Java, linguaggi per script)
gli eseguibili devono essere inseriti in una directory gestita dal Web Administrator(/cgi-bin)
Maggini, ScarselliSistemi per basi di dati15
Co m m on G ate w ay In ter fac e I I
Il funzionamento
il browser invia al server una richiesta in cui si fa riferimento ad un cgies.www.search.com/search.cgi?Picasso
il server chiama il programma “search.cgi”
il parametro “Picasso”èpassato attraverso lo standard input (metodo POST nel form) o settando una variabile d’ambiente (metodo GET)
Il programmasearch.cgiproduce in uscita un documentoHTMLe termina
Il server Web invia il documento al browser
Esecuzioneprogramma
server Richiestae parametri chiamatapaginapaginaBrowser nucleo
Maggini, ScarselliSistemi per basi di dati16
Co m m on G ate w ay In ter fac e I II
connessione ad un DBMS
attraverso qualsiasi meccanismo disponibilenel linguaggio di programmazione prescelto
ODBC, JDBC, API proprietarie
ODBCAPI ProprietarieJDBC script CGI Web server Browser
DBMS DB connector
Maggini, ScarselliSistemi per basi di dati17
DB co nn ect ors
API propretariemoduli che forniscono le funzionalita’necessarie a connettersi ed accedere ai dati di uno specifico DBMS
realizzati dai produttori dei DBMS per i principali linguaggiConnettori standard
moduli che forniscono le funzionalita’per connettersi amolti DBMS
JDBC(Java DataBase Connectivity)
Package di Java (usabile solo con Java)
disponibili driver su tutte le piattaforme per i principali DBMSSQL
ODBC (MicrosftOpen Database Connectivity)
scritto in C++
adatto per client Windows
disponibili driver per i principali DBMS SQL
Maggini, ScarselliSistemi per basi di dati18
Un es em pio : J DB C
Quattro tipi di driver JDBCDBTipC pie Oridg: Bo 1Tipo 1: Bridge ODBC pi
CateDB a Oateiam chC inDBdi Jeto ai miam che levertCon drivCDBer OùùCDBer Odriv
lmTipava in Jente pirziar parive: Do 2Tipo 2: Driver parzialmente in Java pi
Sdi JBMl D dererie lib alleateiam chC inDBeto ai mateiam che levertCon APItive naùùtive naAPI
Tipo 3: Driver Java puro piTipo 3: Driver Java puro piùùmiddlewaremiddlewareComunica con un server intermedio attraverso un protocollo proprietario
MS prounica con un protocolloprietario direttamente con il DBCom Tiptarioprieo 4: Driver Java puro con protocollo pror Java pTipo 4: Dtarioprie procollorotorive couron p
Maggini, ScarselliSistemi per basi di dati19
Un es em pio : J DB C I I
Java application/applet JDBC-NetDriver JDBC-ODBCBridge Driver Driver AODBC driver Driver B JDBC API
DBMS Middlewareserver Varieversionidi driver
Protocollo proprietariodel DBMS Protocollo proprietariodel middleware Presentation/business logictierBusninesslogictier
Data tier
Maggini, ScarselliSistemi per basi di dati20
CG I: u n e se m pio
I CGI e form: un uso tipico
il formraccoglie logine passworddell’utente
e chiama la procedura/cgi-bin/listaStudenti.cgi
<HTML>
<BODY>
<FORMACTION=”/cgi-bin/listaStudenti.cgi”METHOD="POST”>
NOME:<INPUTTYPE="text"NAME=”nome"VALUE=""><p>
COGNOME:<INPUTTYPE=”text"NAME=”cognome"VALUE="">
<INPUTTYPE="submit"VALUE=“Cerca">.<P>
</FORM>
</BODY></HTML>i campi da leggere il metododi invio dei parametri
il cgida attivare
Maggini, ScarselliSistemi per basi di dati21
CG I: u n e se m pio II
Un CGI in Javasi crea una classe di nome listaStudenti
i parametri in ingresso
se il FORM usa il metodo POST, vengono letti dallo standard input
se il FORM usa il metodo GET, vengono lettida una variabile d’ambiente
importjava.cgi_lib.*;
classlistaStudenti{
publicstaticvoidmain(Stringargs[]){
Hashtableform_data=cgi_lib.ReadParse(System.in);
Stringnome=(String)form_data.get(”nome");
Stringcognome=(String)form_data.get(”cognome"); si leggono i parametri dallo standard input
Maggini, ScarselliSistemi per basi di dati22
CG I: u n e se m pio III
Per connettersi ad un DBMS occorreCaricare il driver JDBC che si intende usare
Stringdriver="COM.ibm.db2.jdbc.net.DB2Driver”;
Class.forName(driver).newInstance();
Aprire una connessione con il DBMS
Stringurl="jdbc:db2://segreteria.ing.unisi.it/stud";
Stringuserid=”pippo";
Stringpasswd=”pippoPass";
Connectioncon=DriverManager.getConnection(url,userid,passwd); Driver, servere database
Maggini, ScarselliSistemi per basi di dati23
CG I: u n e se m pio IV
Per eseguire un’interrogazione occorre creare uno StatementStatemented eseguirlo
Statementstmt=con.createStatement();
ResultSetrs=stmt.executeQuery(“selectcognome,nome,dataNascita”+
“fromstudenti”+
“wherenomelike%“+nome+“%and“+
“cognomelike%“+cognome=“%”);
executeQueryexecuteQueryinvia il comando al DBMS e pone il risultato in unoggetto di tipoResultSetResultSet
Maggini, ScarselliSistemi per basi di dati24
CG I: u n e se m pio V
L’oggetto
ResultSetResultSet
consente di scorrere le righe e accedere agli attributi
I tipi di dati SQL sono trasformati in tipi di dati Java
System.out.println(“<HTML><BODY><OL>”);
while(rs.next()){
Stringcognome=rs.getString(“cognome”);
intnome=rs.getString(“nome”);
Datedn=rs.getDate(“dataNascita”);
System.out.println(“<LI>"+cognome+“”+nome+“”
+dn.toString());
}
System.out.println(“</OL></BODY></HTML>”);
Iterazione su tutte le tupledel risultato dell’interrogazione stampa dellalista dei nomi stampa inizio e fine della pagina
Maggini, ScarselliSistemi per basi di dati25
Alt ern ative a JD BC
Per Java esistono alternative a JDBCSQLJ
una versione di embeddedSQLspecializzato per JAVA
il codice SQL èscritto direttamente all’interno di Java
un precompilatore trasforma l’SQL in chiamate al DBMS
JAVA Blend
crea una connessione diretta fra oggetti JAVA e oggetti del database: si opera sulle tabelle come se fossero oggetti
SQLJ e JAVA Blendsi appoggiano su JDBC
Maggini, ScarselliSistemi per basi di dati26
SQ LJ : u n e se m pio
I comandi SQLJ sono identificati da “#sql”….
#sqliteratorstudentDetails(Stringnome,Stringcognome);
studentDetailsstudentIterator=null;
#sqlstudentIterator={selectcognome,nomefromstudenti};
System.out.println(“<HTML><BODY><OL>”);
while(studentIterator.next()){
System.out.println(“<LI>"
+studentIterator.nome()+“”
+studentIterator.cognome()+“”);
}
System.out.println(“</OL></BODY></HTML>”);
Maggini, ScarselliSistemi per basi di dati27
SQ LJ vs JD BC
SQLJ facilita l’analisi statica
della sintassi
dei tipi
dello schema
SQLJ permette la generazione di strategie di accesso da parte del DBMSin modo trasparente
SQLJ richiede una fase precompilazione
Maggini, ScarselliSistemi per basi di dati28
Li m iti d ei C GI
CGI èmolto sempliceda usare ed èuno standarddiffuso, maad ogni accessoallo script (programma) CGI,
si crea un nuovo processo
si apre e richiude una connessione con il DBMS
tutte le comunicazioni fra client e CGI passano dal Web server
ci sono problemi di sicurezzaPer ovviare a questi problemi
i server Web forniscono nuove API: Netscape Server API, IIS API
gli script CGI sono caricati come parte del server Web e rimangono attivifrauna transazione e l’altra
gli script possono accedere a funzionalita’per laconnesioneai DBMS, per l’autenticazionee lagestione delle connessioni
Maggini, ScarselliSistemi per basi di dati29
Se rvl ets
Cosa sonosono applicazioni Javain esecuzionesu una JVM residentesul server
realizzate attraverso il package Java: java.servletCome CGI
il client invoca la servletnel contesto di una FORM HTML
la servletesegue le operazioni richieste
la servletridirige l’output al client in forma di pagina HTML A differenza di CGI
la servletcorrisponde ad un processo che viene caricato solo una volta e utilizzato per eseguire piùoperazioni distinte
il server Web deve essere esteso con un servletengine
Maggini, ScarselliSistemi per basi di dati30
Se rvl ets e D BM S
L’accesso a DBMSavviene attraverso JDBC, SQLJ, JavaBlend
poiche’la servletrimane attiva, le connessioni con il DBMS sono aperte una sola volta, solo al momento del caricamentoOsservazioni
le servletsono indipendenti dalla piattaforma
permettono l’aggiunta di ulteriori stratiall’architettura
JDBC API Web server Browser
DBMS Servletengine