1 / 70

Basi di dati e Web

Basi di dati e Web. Prof. Stefano Paraboschi Prof. Barbara Pernici. GATEWAY. I server Web possono richiamare qualunque programma trasmettendo anche eventuali parametri collegamento tra ambiente web e altri ambienti chiamata dei programmi: http, URL, eventuali parametri. Web server e file.

onella
Download Presentation

Basi di dati e Web

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Basi di dati e Web Prof. Stefano Paraboschi Prof. Barbara Pernici

  2. GATEWAY • I server Web possono richiamare qualunque programma • trasmettendo anche eventuali parametri • collegamento tra ambiente web e altri ambienti • chiamata dei programmi: http, URL, eventuali parametri

  3. Web server e file FILE SYSTEM - pagine statiche A.html D.html B.html C.html Web client (browser) HTTP Web server CGI Cgi-bin Xyz.exe abc.exe Pagine eseguibili

  4. ? ? Common Gateway Interface • Meccanismo che consente al Web Server di eseguire applicazioni esterne in grado di creare pagine dinamicamente

  5. %&£$$ pp*&£$ Caratteristiche di CGI • Non e’: • un linguaggio di programmazione • un protocollo di comunicazione • Definisce solo un insieme di variabili di ambiente utili alla applicazione (ad es. parametri inviati dal client)

  6. http://mio.server.web/cgi-bin/xyz.exe ? Esecuzione 1.Il server riconosce dall’URl che la risorsa richiesta dal cliente e’ un eseguibile

  7. http://mio.server.web/cgi-bin/xyz.exe?#^@@ ? #^@@ P$&*£ Esecuzione • 2.Il server decodifica i parametri inviati dal cliente e riempie le variabili d’ambiente • es: request_method, query_string, content_length, content_type

  8. #^@@ P$&*£ Esecuzione 3.Il server lancia in esecuzione l’applicazione richiesta

  9. Esecuzione 4. L’applicazione stampa la sua risposta sullo standard output (la risposta puo’ essere una pagina web o di altro tipo - il tipo e’ dichiarato nella risposta)

  10. Esecuzione 5.Il server ridireziona lo standard output sulla rete e quindi verso il client

  11. Invio di parametri a un programma CGI • Il client puo’ usare due metodi: • GET • POST • GET: i parametri sono codificati nell’URLhttp://www.mioserver.it/cgi-bin/xyz?par=val • POST : i parametri sono spediti al server separatamente, usando il body del messaggio di richiesta HTTP • NB: il metodo POST richiede l’uso di un costrutto HTML chiamato FORM

  12. Form (moduli) • Input dall’utente • Come: con parametri (<INPUT type=): • text boxes (text) • buttons (submit) • radio buttons (radio) • password (password) • hidden (valore fisso, non visibile all’utente) • i parametri hanno un nome a cui si associa un valore compilando la form • submit: si invia il contenuto del modulo al server come parte di un’altra richiesta http di una pagina speciale (eseguibile)

  13. FORM HTML Esempio: invio al server il nome dell’utente <form action=http://www.mysrvr.it/cgi-bin/xyz.exe method=post> <p>Dimmi il tuo nome: <inputtype=“text” name=“chisei” ></p> <inputtype=“submit” > </form>

  14. FORM HTML

  15. FORM HTML <HTML> <BODY> <form action=http://www.mysrvr.it/cgi-bin/xyz.exe method=post> <p>Dimmi il tuo nome: <input type="text" name=“chisei” ></p> <input type="hidden" name=“sessione” value="123" > <p>Password: <input type="password" name=“pwd” ></p> <p> <input type="radio" name="tipo" value="doc">docente</p> <p> <input type="radio" name="tipo" value="stud">studente</p><input type="submit" value="VAI"> <input type="reset"> </form> </BODY> </HTML>

  16. stampa codice HTML Struttura di un programma CGI leggi le variabili d’ambiente elabora cout << “Content-type: text/html” << endl << endl; stampa intestazione MIME

  17. Valore? GET POST leggi la variabile Query_string leggi la variabile content_length leggi content_length caratteri da standard input Decodifica dei parametri leggi la variabile Request_method

  18. Programmi eseguibili • per selezionare pagine • Per accedere a pagine riservate • per accedere a servizi • per accedere a basi di dati

  19. A Web page (containing a list of links)

  20. A “unique” page-scheme: ProfessorListPage ProfessorListPage ProfessorList Name ToProfP

  21. An ADM Scheme ProfessorListPage ProfessorPage ProfessorList Name Name ToProfP Position Address EMail ResearchList Area ToResP

  22. Heterogeneous Union and Forms

  23. Name Submit Name U ProfessorList Position Name Address ToProfP EMail ResearchList Area ToResP Heterogeneous Union and Forms in ADM SearchProfPage ProfessorListPage ProfessorPage

  24. Maintenance • The Schemes help designers to maintain the hypertext structure • Maintenance activities correspond to apply scheme transformations: • introduce multilevel lists • introduce forms • split pages • ...

  25. Maintenance: example

  26. Tecnologie per l’integrazione Web/Basi di dati

  27. Web & basi di dati • Obiettivi: • ottenere la generazione dinamica di pagine a partire da dati contenuti in una base di dati • sfruttare i pregi di Web e basi di dati, aggirandone i difetti

  28. Web basi di dati Pregi e difetti di basi di dati e Web pro contro • semplice • portabile • a basso costo • indipendente dalle interfacce • ipermediale • basato su file • statico • modelli dei dati • linguaggi di interrogazione • funzioni di amministazione • complesse • proprietarie • navigazione e presentazione assenti

  29. CGI via DBMS API, embedded SQL, ODBC ... DBMS Programma CGI Web server gateway gateway

  30. http://mio.server.web/cgi-bin/xyz.exe ? root cgi-bin xyz.exe Invocazione • Il cliente specifica nell’URL il nome del programma da eseguire • Il programma deve stare in una posizione precisa (di solito il direttorio cgi-bin)

  31. Esempio di CGI per accesso a DB main(char Cognome[]) { char Nome[20], Dipartimento[20], Citta[20]; char Indirizzo[60]; int Age, Stipendio; $ open connection to NewCompanyDB $ select Nome, Dipart, Citta, Indirizzo, Stipendio into :Nome, :Dipart, :Citta, :Indirizzo, :Stipendio from Impiegato I, Sede S where I.Sede = S.Citta and Cognome = :Cognome ; $ close connection ...

  32. if (sqlcode == 0){ printf("<html>\n<head><title> %s %s",Nome,Cognome, "</title></head>\n<body>\n"); printf("<H3> %s %s",Nome,Cognome,"</H3>\n"); printf("<table>\n"); printf("<tr><td><em>Dipartimento</em>:</td><td>%s", Dipartimento,"</td></tr>\n"); printf("<tr><td><em>Citta</em>:</td><td>%s",Citta,“ </td></tr>\n"); printf("<tr><td><em>Indirizzo</em>:</td><td>%s", Indirizzo,"</td></tr>\n"); printf("<tr><td><em>Stipendio</em>:</td><td>%u", Stipendio,"</td></tr>\n"); printf("<tr><td><a href=\"/cgi-bin/ProjOfEmp?Cognome=%s", Cognome,"\">Progetti in corso</a></td><td> </td></tr>\n"); printf("</table>\n</body>\n</html>"); } else { printf("<html>\n<head><title>Error</title></head>\n<body>\n"); printf("niente impiegato %s\n",Cognome,"</body>\n</html>"); } }

  33. Programma CGI per l’accesso a DB • PRO • portabilità: usa solo standard aperti: URL, HTTP, CGI, HTML (attenzione però all’accesso al DB) • CONTRO • prestazioni: creazione di un sotto-processo per ogni richiesta • aperture e chiusure ripetute della connessione con la base di dati

  34. Form e CGI come interfacce di applicazioni • Per applicazioni di qualsiasi tipo • Problemi: • identificazione utente, sicurezza • affidabilita’, transazioni • sessioni • numero di processi attivati, operazioni di apertura e chiusura

  35. Simulazione sessioni • HTTP consente di richiedere una pagina alla volta • Simulazione di sessioni: • con hidden parameters nelle form • con cookie (max 4KB) (inviato nell’intestazione della risposta e memorizzato come parte della configurazione del browser) e dizionario stato clienti

  36. Processo CGI: FAST-CGIhttp://www.fastcgi.com • Il web server genera il processo fast-cgi in fase di inizializzazione • Il processo esegue una routine di inizializzazione e si pone in attesa • Ad ogni richiesta, il web server apre una connessione verso il processo fast-cgi • Il processo genera output sulla connessione http con il client passatagli dal server http • Il processo fast-cgi chiude la connessione e rimane in attesa di nuove connessioni

  37. FAST-CGI: vantaggi • Migliori prestazioni: creazione di processi fast-cgi solo in fase di inizializzazione • Mantenimento dello stato: la persistenza del processo fast-cgi consente di superare la natura stateless di http • Disponibilita’: distribuito gratuitamente da Open Market come fast-cgi library

  38. CGI Processo CGI Web server dispatcher dispatcher Applicazione server gateway DBMS

  39. Processo CGI • PRO • evita apertura e chiusura della connessione ad ogni richiesta • sfrutta le ottimizzazioni del DBMS • basato su standard CGI • CONTRO • prestazioni: tempo di commutazione tra processi diversi (dispatcher - server) • complessita’ realizzativa dell’interfaccia tra dispatcher e applicazione server

  40. Gateway Web-base di dati CLIENT HTTP server DBMS GATEWAY

  41. Una gerarchia di soluzioni Gateway su Server su client basato su API basato su CGI proprietario estensione interna estensione esterna programma CGI processo CGI

  42. Architetture di servizi on linebasati su Web • Architettura di base • clienti dinamici • web applications • soluzioni complesse

  43. Architettura di base LOCAL FILE SYSTEM WEB SERVER BROWSER

  44. Clienti dinamiciscripting lato client DOM DOM BROWSER HTML Script Compiled modules

  45. Applicazioni su web (server side) JAVA SERVLET, API DATABASE Scripting lato server ASP JSP PHP BROWSER Scripted page WEB SERVER HTML page

  46. Applicazioni complesse:un esempio di modulo intelligente Richiesta form client Web server Risposta 3 minuti Risposta con form con inclusione script per completare citta’ da CAP CAP

  47. Seconda soluzione Sottomissione form invocata da script Java 00198 Web server CAP Risposta 3 secondi Risposta con form ricostruito con completamento citta’ da CAP ROMA 00198 CAP

  48. Terza soluzione L’oggetto comunica direttamente con l’application server Application server Risposta < sec Web server 00198 CAP Oggetto distribuito che comunica direttamente con un oggetto sul lato server e restituisce la citta’ dato il CAP

  49. API Server API Web server API = interfaccia per estendere il server con servizi non standard Gateway DBMS

More Related