Web Information Systems Prof Web Information Systems Prof. Barbara Pernici Politecnico di Milano parte del materiale e’ stata gentilmente fornita dal Prof. Paraboschi
Sommario Servizi elettronici in rete Web Information Systems Architetture a tre livelli (3-tier) Interazione web-DB
Obiettivi (1) I sistemi informativi in rete: Internet e i sistemi informativi: struttura di un sistema informativo basato su Web, tipologie di sistemi informativi basati su Web, servizi offerti dai sistemi informativi in rete Introduzione alla tecnologia Web
Obiettivi (2) I sistemi informativi come impianti Tecnologie utilizzate nelle reti Tecnologie per lo scambio dei dati nei sistemi distribuiti Nella parte finale del corso: Sicurezza: accessi autorizzati, integrita’ e autenticita’ dei dati Progettazione di sistemi informativi sicuri
Bibliografia Conallen: cap. 2 Serie Sistemi Informativi Vol. V Cap. 1: architetture Lucidi (in rete) Basi di Dati (Atzeni, Ceri, Paraboschi, Torlone) Cap. 14
Introduzione Servizi elettronici in rete: Classificazione UE Livelli di interazione Classificazione dei siti web
Dimensioni per la classificazione Servizi offerti A chi e’ rivolto esterno/interno/altro utente singolo (Customer)/impresa (Business)/PA (Government)/… Come vengono presentati i servizi e le informazioni (aggregazione)
Tipologie di servizi elettronici (dal Libro verde UE) Servizi di informazione per la fornitura su richiesta di informazioni strutturate e classificate Servizi di comunicazione per interagire con il pubblico ovvero gruppi di individui Servizi transazionali per acquistare prodotti o servizi on line o per trasmettere dati
Tipologia dei servizi elettronici - informativi informazioni link a altre risorse informative Su web: accesso a pagine statiche (file) o pagine dinamiche ottenute tramite interrogazioni a basi di dati personalizzazioni: presentazione di informazioni personalizzata Tramite cookie Accesso registrato l’utente non inserisce contenuto informativo nel sistema
Tipologia dei servizi elettronici - comunicazione Servizi di interazione basati su e-mail, liste di discussione, chat, form per inserimento richieste, .. L’utente e’ identificato (identita’ reale o fittizia) le comunicazioni dell’utente possono rimanere memorizzate
Tipologia dei servizi elettronici - transazionali Interazione con il sistema informativo l’utente (identificato) ottiene servizi, modicando dati nel sistema informativo interazione con dati in DBMS e servizi applicativi server per DB e application server criticita’: sicurezza transazioni multicanale
Livelli di interazione UE Livello 1: disponibili on-line informazioni sulle procedure Livello 2: interazione in un senso (download modulistica) Livello 3: interazione in due sensi (possibilita’ di avviare on-line la procedura, con modulo elettronico e autenticazione utente) Livello 4: esecuzione on-line dell’intera procedura (incluso pagamento)
Altra classificazione: per accesso Sito Internet: accessibile da tutta la rete Sito Intranet: accesso limitato dall’interno dell’organizzazione Knowledge management, gestione delle conoscenze sui processi aziendali Sito Extranet: accessibile da un gruppo di utenti ben identificato (ad es. clienti e fornitori) Scambio di informazioni concordate tramite accesso a archivi (ad esempio rendere visibili I livelli delle scorte in magazzino)
Confronto tra Intranet e Internet Esempio: Comune Sito Internet Intranet del Comune Utenti Noti con approssimazione Dipendenti del comune Compiti Informativo, servizi ai cittadini Uso quotidiano per il lavoro, gestione dei processi Larghezza di banda bassa Alta, affidabile Compatibilita’ diversi browser, accessibilita’ Scelta a priori del browser Quantita’ informazioni Poche e in tempi rapidissimi Quantita’ elevate, per gestione processi operativi
Servizi di una Intranet Serve a distribuire informazioni all’interno dell’azienda: News Interfaccia di ricerca, su contenuti noti Catalogo dei contenuti Sicurezza (riservatezza, accesso limitato) Integrazione: accesso a informazioni (documenti e dati da DB) e accesso a servizi Collaborazione: tra reparti, partecipazione al processo decisionale, visualizzazione documenti, dibattiti in linea
Classificazioni di servizi on line Business to Consumer B2C varianti: G2C (Government to Citizen) etc. servizi operativi per clienti Business to Business B2B varianti: G2G (Government to Government) servizi operativi tra aziende evoluzione EDI
Sistema informativo distribuito Un sistema informativo in una organizzazione e’ un sistema complesso: più sorgenti informative più basi di dati Collegamenti in rete con reti locali e geografiche processi interconnessi
RETE GEOGRAFICA MF Altri enti MINISTERO DELLE FINANZE UFFICI ENTRATE (430) DOGANE (420) RETE GEOGRAFICA MF AGENZIE CENTRALI firewall INTERNET RUPA Altri enti
Architettura di un sistema informativo distribuito Come scambiare i dati tra sistemi diversi: Quali sono i principali problemi da risolvere: Separazione tra dati, logica applicativa e presentazione Sicurezza
Sviluppo a tre livelli CLIENT CLIENT CLIENT SERVER SERVER DB Presentazione (P) Logica applicativa (A) SERVER SERVER DB Dati (D)
Architetture multilivello Divide-and-conquer strategy Separare in sottoproblemi Sistema complesso Difficolta’ di gestione Utilizzo risorse Diverse piattaforme (SO, sw, hw)
BD REGISTRO E IMPOSTE BD DOGANE BD IVA (sistemi centrali) ESEMPIO (MF)
Tecnologie Web Pagine statiche e pagine dinamiche Architetture web: CGI Form Progettazione con Form Interazione con DB Architetture complesse
Architettura di base LOCAL FILE SYSTEM WEB SERVER BROWSER
GATEWAY I server Web possono richiamare programmi trasmettendo anche eventuali parametri collegamento tra ambiente web e altri ambienti chiamata dei programmi: http URL (URI) eventuali parametri
Web server e file FILE SYSTEM - Web client (browser) Web server CGI pagine statiche HTTP A.html D.html B.html C.html Web client (browser) Web server Cgi-bin CGI CGI Xyz.exe abc.exe Pagine eseguibili
Common Gateway Interface Meccanismo che consente al Web Server di eseguire applicazioni esterne in grado di creare pagine dinamicamente ? ?
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) %&£$$ pp*&£$
Esecuzione 1. Il server riconosce dall’URl che la risorsa richiesta dal cliente e’ un eseguibile ? http://mio.server.web/cgi-bin/xyz.exe
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 ? http://mio.server.web/cgi-bin/xyz.exe?#^@@ #^@@
Esecuzione 3. Il server lancia in esecuzione l’applicazione richiesta #^@@
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)
Esecuzione 5. Il server ridireziona lo standard output sulla rete e quindi verso il client
Invio di parametri a un programma CGI Il client puo’ usare due metodi: GET POST GET: i parametri sono codificati nell’URL http://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
Form (moduli) Input dall’utente Come: con parametri (<INPUT type=“tipoparam”): text boxes (text) buttons (submit, reset) 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)
Esempio: invio al server il nome dell’utente FORM HTML Esempio: invio al server il nome dell’utente <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="submit" value ="Invia query"> </form> </body> </html>
FORM HTML
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> <input type="radio" name="tipo" value="stud">studente</p><input type="submit" value="VAI"> <input type="reset"> </form> </BODY> </HTML>
Struttura di un programma CGI leggi le variabili d’ambiente stampa codice HTML elabora cout << “Content-type: text/html” << endl << endl; stampa intestazione MIME
Decodifica dei parametri leggi la variabile Request_method Valore? leggi la variabile Query_string GET leggi la variabile content_length leggi content_length caratteri da standard input POST
Programmi eseguibili per selezionare pagine Per accedere a pagine riservate per accedere a servizi per accedere a basi di dati Es: home page docenti
Tecnologie per l’integrazione Web/Basi di dati
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
Pregi e difetti di basi di dati e Web pro contro Web basi di dati 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
Programma CGI (processi in esecuzione) Web server CGI gateway gateway DBMS via DBMS API, embedded SQL, JDBC, ODBC ...
Esempio di CGI per accesso a DB main(char Cognome[]) { …. char Nome[20], Dipartimento[20], Citta[20]; char Indirizzo[60]; int Age, Stipendio; … OMESSO CODICE PER LEGGERE VARIABILI IL CUI SCOPO E’ INSERIRE NELLA VARIABILE :Cognome il COGNOME USATO NELL’INTERROGAZIONE … $ 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 ...
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>"); }
Programma CGI per l’accesso a DB 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
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
Architetture di servizi on line basati su Web Architettura di base web applications soluzioni complesse clienti dinamici
Architettura di base LOCAL FILE SYSTEM WEB SERVER BROWSER
Web server e file FILE SYSTEM - Web client HTTP (browser) Web server 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
Applicazioni su web (server side) JAVA SERVLET, API propr. DATABASE Scripting lato server ASP JSP PHP BROWSER Scripted page Richieste di pagine WEB SERVER HTML page CGI eseguibili
Scripted page (lato server) Una scripted page è un file memorizzato nel file system del Web server che contiene degli script interpretabili Gli script interagiscono con oggetti sul server e alla fine producono un output HTML Una scripted page è molto simile ad una pagina HTML standard ma include dei tag/token speciali che sono interpretati dal server Esempi: Microsoft’s Active Server Pages (ASP), Java Server Pages (JSP), PHP