UN SINGOLO COMPONENTE... ? Finora ci siamo concentrati su un singolo programma = un singolo componente –si leggono i dati di ingresso... –... si elabora.

Slides:



Advertisements
Presentazioni simili
UNO STRUMENTO PER INTERAGIRE CON GLI UTENTI DELLE PAGINE WEB
Advertisements

INFORMATICA Altre Istruzioni di I/O
Gli ipertesti del World Wide Web Funzionamento e tecniche di realizzazione a cura di Loris Tissìno (
Corso di Fondamenti di Informatica
Una applicazione complessa non può essere sviluppata in un unico file: sarebbe ingestibile! Deve necessariamente essere strutturata su più file sorgente.
Università degli Studi di Napoli "Federico II" - a.a. 2002/2003 Le TD nei processi di apprendimento: strategie di apprendimento collaborativo supportate.
A. Ferrari Alberto Ferrari. Un form html è una sezione di documento che contiene Testo normale e markup Elementi speciali chiamati controlli (checkbox,
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
(Appunti da Scott Mitchell, James Atkinsons - Active Server Pages 3.0 – ed. Apogeo) Le pagine ASP.
PHP.
INTERNET : ARPA sviluppa ARPANET (rete di computer per scopi militari)
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Mantenimento dello stato Laboratorio Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Introduzione ai Web Services. E' un nuovo meccanismo RPC ottimizzato per l'uso in Internet Un qualunque Client su una generica piattaforma deve poter.
Programmazione Procedurale in Linguaggio C++
Modulo o Form in Html.
JavaScript Laboratorio di Applicazioni Informatiche II mod. A.
1 Basi di dati e Web Prof. Stefano Paraboschi Prof. Barbara Pernici.
Architettura Three Tier
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Introduzione agli stream e alle classi
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Internet Explorer Il browser.
CORSO DI INFORMATICA LAUREA TRIENNALE-COMUNICAZIONE & DAMS
Corso di Informatica A.A
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
RISORSE WEB Internet Per un uso consapevole delle risorse della Rete
Posta elettronica : per iniziare : per iniziare Primi passi con la posta elettronica Primi passi con la posta elettronica
I File.
APPLICAZIONI WEB In questo corso impareremo a scrivere un'applicazione web (WA) Marco Barbato - Corso di Applicazioni Web – A.A
ASP Lezione 1 Concetti di base. Introduzione ad ASP ASP (che è la sigla di Active Server Pages) è un ambiente di programmazione per le pagine web. La.
GESTIONE DEI FILE Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persi-stenza dei dati) è necessario poterli archi-viare.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Corso di PHP.
Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno.
Internet I moduli web. Inviare informazioni Quando si comunica nel web, si ricevono messaggi e informazioni dai siti web, ma si debbono anche inviare.
Usare la posta elettronica con il browser web
Internet L’essenziale.
Elaborazioni server-side: dalle CGI al PHP
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Maria Vittoria Avolio Laurea.
Introduzione alle ASP: primi passi negli script. Frosini Andrea Università degli studi di Siena Dipartimento di Scienze Matematiche.
1 Ripassino Reti di Computer Carasco 19/02/ Che cosa è una rete informatica? Una rete informatica è un insieme di computer connessi tra di loro.
Sistemi Informativi sul Web
Applicazioni Web HTTP, HTML e CSS Elaborato da Gianluca Lauteri e Daniele Filannino.
BIOINFO3 - Lezione 121 Alter Table Alter table permette di cambiare la struttura di tabelle esistenti. Ad esempio e` possibile aggiungere o cancellare.
Il World Wide Web Lidea innovativa del WWW è che esso combina tre importanti e ben definite tecnologie informatiche: Documenti di tipo Ipertesto. Sono.
BIOINFO3 - Lezione 101 GLI IPERTESTI Una delle innovazioni introdotte da HTML e dal WWW in generale, rispetto ad un testo normale è sicuramente la possibilità
BIOINFO3 - Lezione 111 CGI-BIN CGI-BIN sono chiamati i programmi la cui esecuzione può essere richiesta attraverso il WEB. Il server web (httpd) della.
1 Applet ed HTML Fondamenti di Informatica Corso D.
INTRODUZIONE A JAVASCRIPT
Web Form Presentazione 2.3 Comunicazione integrata in rete| Prof. Luca A. Ludovico.
Protocolli e architetture per WIS. Web Information Systems (WIS) Un Web Information System (WIS) usa le tecnologie Web per permettere la fruizione di.
JavaScript Generalità Cos'è JavaScript?
Internet e HTML Diffusione di informazioni mediante la rete Internet.
HTML 4.01 Apogeo. I tag di base Capitolo 1 I tag SintassiEsempi:
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Protocolli e architetture per WIS. Cronologia di Internet ricerche sulla commutazione di pacchetto (Leonard Kleinrock) 1967 Nasce il progetto.
Laboratorio di Servizi Web - servlet - Ardissono 1 Chiarimenti su Servlet Note aggiuntive su architettura di applicazione web che usa Servlet per gestire.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente –la loro esistenza deve essere prevista e.
Sistemi di elaborazione dell’informazione Modulo 3 -Protocolli applicativi Unità didattica 4 -Protocolli del Web Ernesto Damiani Lezione 1 – World Wide.
Servizi Internet Claudia Raibulet
CORSO INTERNET la Posta elettronica
Lezione 6: Form.  In alcuni documenti HTML può essere utile creare dei moduli (form) che possono essere riempiti da chi consulta le pagine stesse (es.
Eprogram informatica V anno.
Gli indirizzi delle pagine Web Prof. Cristina Sanvito e Renzo Didoni.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
I sistemi operativi Funzioni principali e caratteristiche.
Eprogram informatica V anno. Programmare in rete.
Transcript della presentazione:

UN SINGOLO COMPONENTE... ? Finora ci siamo concentrati su un singolo programma = un singolo componente –si leggono i dati di ingresso... –... si elabora (computazione)... –... si scrivono i risultati in uscita. Ma oggi quasi mai un’applicazione consi- ste in un singolo componente! –un componente acquista molto più valore se può cooperare a creare progetti più grandi –elaborazione distribuita su rete

ARCHITETTURE MULTI-COMPONENTE componenti software e hardware eterogenei ogni componente forni- sce servizi agli altri com- ponenti e usa i servizi da essi forniti necessità di protocolli di comunicazione esecuzione distribuita nel tempo e nello spazio

Servitore: un qualunque ente computazionale capace di nascondere la propria organizzazione interna presentando ai clienti una precisa interfaccia per lo scambio di informazioni Cliente: qualunque ente in grado di invocare uno o più servitori per svolgere il proprio compito ARCHITETTURA CLIENTE / SERVITORE

IL MODELLO INTERNET Cliente = browser Web –Internet Explorer, Netscape Navigator,... Servitore = server Web (sul sito) Browser Web (cliente) Server Web rete Internet

IL PROTOCOLLO DI COMUNICAZIONE HTTP: HyperText Transfer Protocol 1) il cliente invia al server l’identificatore della pagina richiesta (URL) 2) il server recupera il file corrispondente a quella pagina /studenti/stud.html 3)... e lo invia al cliente (byte per byte)

IL PROTOCOLLO DI COMUNICAZIONE Browser Web (cliente) Server Web

IL PROTOCOLLO DI COMUNICAZIONE HTTP: HyperText Transfer Protocol Pregio: è un protocollo molto semplice da gestire e da implementare Difetto: nella versione base, è poco flessibile –il contenuto delle pagine web è prefissato –il server non fa alcuna elaborazione, si limita a prendere un file e spedirlo

HTTP: ESTENSIONI Obiettivo: dare al server la possibilità di rispondere a una richiesta in modo “personalizzato” e flessibile (non solo fisso a priori) –esempio: fornire i risultati di una ricerca Come? rendendo il server capace di eseguire un programma per rispondere alla richiesta. CGI: Common Gateway Interface

HTTP: ESTENSIONI Risultato: qualunque programma può fornire i suoi servizi sul web –non più solo su un computer isolato! non importa il linguaggio in cui è scritto non importa come elabora (computazione) importa che gestisca input e output nei mo- di previsti dagli standard, ossia che segua il MODELLO DI COORDINAZIONE previsto.

HTTP + CGI Con CGI, HTTP diviene aperto e flessibile: 1) il cliente invia al server l’URL della pagina richiesta, che però non è una vera pagina, ma il nome di un programma ( xxxx ): 2) il server esegue il programma xxxx /cgi-bin/xxxx 3)... e invia il risultato al cliente.

HTTP + CGI Browser Web (cliente) Server Web cgi-bin/xxxx Programma xxxx

HTTP + CGI Quindi: è il programma che risponde al cliente, non più il server (fa solo da tramite) tutto quello che il programma scrive sullo standard output viene trasferito “pari pari” al cliente (il browser Web) –semplice testo, testo HTML, immagini, altro... si può trasferire di tutto: basta che il cliente sappia come trattare quello che gli arriva.

CGI: UN MINI-ESEMPIO Un programma C che stampa “Hello World”... main(){ printf(“Hello World!”); }...

CGI: UN MINI-ESEMPIO... portato “sulla rete”: main(){ printf(“Content-type: text/plain\n\n”); printf(“Hello World!”); } forma standard per avvertire il browser di “cosa gli sta arrivando” (in questo caso testo semplice, senza formattazioni particolari) Fondamentale il “doppio a capo”

MINI-ESEMPIO: VARIANTE Un programma C che stampa “Hello World” come pagina HTML main(){ printf(“Content-type: text/html\n\n”); printf(“ Here we are! ”); printf(“ Hello World! ”); fflush(stdout); } opportuno svuotare il buffer di output per garantire che tutto il testo sia effettivamente inviato Questa volta stiamo inviando testo HTML “doppio a capo”

UNA PRECISAZIONE Questi programmi devono essere compilati come normali programmi da console, non come programmi (pseudo-) grafici! –il server presuppone di poter parlare col programma tramite i normali canali di I/O, non tramite finestre di un qualche tipo! Quindi, non si può usare il Turbo C! Occorre DJgpp –o un qualunque compilatore C che produca eseguibili “da linea di comando” (DOS-like)

E PER FARE LE PROVE..? Non è necessario avere accesso a un ser- ver web situato chissà dove È possibile installarne uno localmente, sul proprio computer –ce ne sono a decine in rete, molti gratuiti... –...ma non tutti supportano bene le CGI! Sul sito del corso trovate Vq Server –un web server scritto in Java (richiede Java per funzionare), molto completo, e gratuito!

HTTP + CGI Al momento, però, il programma non riceve dati di ingresso, quindi ha un output fisso! Invece, vogliamo che il cliente (browser) possa inviare al programma opportuni dati di ingresso per guidarne l’elaborazione. Come fare? Due possibili modi: –con il sub-protocollo GET –con il sub-protocollo POST

INVIO DI DATI con GET Il cliente invia i dati appendendoli all’URL –un punto interrogativo come separatore iniziale –seguito da qualunque cosa, ma senza spazi! il server pone tutto ciò che segue il ? nella variabile di ambiente QUERY_STRING il programma può recuperarla con la funzione di libreria getenv() [in stdlib ]: char *s = getenv("QUERY_STRING")

ESEMPIO Un programma C che ristampa quello che ri- ceve (eco): main(){ char *st = getenv("QUERY_STRING"); printf(“Content-type: text/plain\n\n”); printf(“Buongiorno %s !”, st); fflush(stdout); } ristampa la stringa st che ha ricevuto Ricordare il “doppio a capo”

ESEMPIO Il browser può invocarlo ad esempio così: L’URL ha la forma:... /cgi-bin/ /cgi/.... ristampa la stringa che ha ricevuto

UNA RIFLESSIONE SULL’ESEMPIO Certo, questo esempio è estremamente banale, perfino inutile.....ma dimostra che “portare un programma sul Web” è semplicissimo basta rispettare il modello di coordinazione previsto dallo standard (qui, CGI) Anche un programma che da solo sarebbe stato di modesta utilità, portato sul Web può essere utile ad altri –diventa accessibile da tutto il mondo!

I MODULI (FORM) In pratica, nessuno si sogna di scrivere i dati nell’URL “a mano” Tipicamente, l’utente compila un modulo grafico e preme un bottone per inviare i dati UN “FORM” scritto in HTML Il risultato è che il cliente (browser): –prepara la stringa dati da inviare –la appende al ? nel modo previsto

I MODULI (FORM) Qui si scrive il testo da inviare al programma Quando si preme il bottone, il testo viene inviato

MODULI... E RISULTATI La stringa inviata ha una forma particolare: Campo=Valore Riscrive esattamente la stringa ricevuta

RISULTATI... E MODULI Il testo scritto era PaolinoPaperino Questo campo di testo si chiamava testo Perciò, la stringa inviata è stata testo=PaolinoPaperino

IL MODULO (HTML) Esempio di form Inserisci il testo: e poi premi invio: Protocollo GET Azione da compie- re quando si preme il pulsante invio

IL MODULO (HTML) Esempio di form Inserisci il testo: e poi premi invio: Il campo di testo (di nome testo ) Il pulsante che attiva l’azione (tipo submit ), chiamato invio nel modulo

INVIO DI DATI CON I MODULI Dunque, quando si compila un modulo, la stringa inviata al programma (con GET) ha sempre la forma standard seguente:...?nome1=valore1 & nome2=valore2 &... dove –nome1, nome2,... sono i nomi dei campi (di testo, di selezione,...) –valore1, valore2,... sono i testi effetti- vamente scritti nei rispettivi campi

UN MODULO PIÙ COMPLESSO Due campi di testo, deno- minati rispettivamente Nome e Cognome Due pulsanti, chiamati conferma e annulla (il primo invia, il secondo cancella il modulo)

IL RISULTATO La stringa inviata ha la forma standard Nome=Paolino&Cognome=Paperino

IL MODULO PIÙ COMPLESSO (HTML) Esempio di form <FORM METHOD="GET" ACTION=" > Inserire i seguenti dati: Inserire il nome: Inserire il cognome: Un diverso programma i due campi di testo i due pulsanti (il tipo submit invia, il tipo reset cancella il modulo)

IL PROGRAMMA Il programma riceve una stringa in forma standard e deve estrarre i vari pezzi main(){ char cognome[80], nome[80], *st; printf("Content-type: text/plain\n\n"); st = getenv("QUERY_STRING"); estrai(st, "Nome", nome); estrai(st, "Cognome", cognome); printf("Buongiorno %s %s!\n\n", nome, cognome); } I nomi dei campi di testo del modulo (attenzione: devono essere identici!)

IL PROGRAMMA La funzione estrai(char*, char*, char*) int estrai(char s[], char parametro[], char valore[]) { const char separatore = '&'; char *fine, *pos = strstr(s,parametro); if (pos==NULL) return 1; /* non c’è */ pos += strlen(parametro)+1; fine = strchr(pos,separatore); if (fine==NULL) fine = pos + strlen(pos); strncpy(valore,pos,fine-pos); valore[fine-pos]='\0'; return 0; }

IL PROGRAMMA La funzione estrai(char*, char*, char*) int estrai(char s[], char parametro[], char valore[]) { const char separatore = '&'; char *fine, *pos = strstr(s,parametro); if (pos==NULL) return 1; /* non c’è */ pos += strlen(parametro)+1; fine = strchr(pos,separatore); if (fine==NULL) fine = pos + strlen(pos); strncpy(valore,pos,fine-pos); valore[fine-pos]='\0'; return 0; } parametro=valore ci si posiziona dopo l’= parametro=valore& si cerca l’& finale (se c’è) se l’& finale non c’è, si prende fino a fine stringa finalmente si ricopia in valore il pezzo che serve

Da GET a POST Finora, per inviare dati al programma CGI abbiamo sfruttato il sub-protocollo GET –Pro: è semplice, è facile da gestire –Contro: è inadatto a inviare molti dati (la varia- bile QUERY_STRING ha limiti di lunghezza) Questi limiti si superano con il sub-proto- collo POST –i dati sono inviati sullo standard input del programma –richiede obbligatoriamente un modulo (form) per inviare i dati (non si possono appendere all’URL)

INVIO DI DATI con POST È indispensabile usare un modulo (form) Quando si preme il pulsante di invio, il browser invia i dati al server..... che li ridirige sul canale d’input standard del programma –i dati si possono quindi recuperare con normali letture da input –non si passa più dalle variabili di ambiente del sistema operativo, quindi non ci sono limiti di dimensione

INVIO DI DATI con POST Quale formato usa POST per inviare i dati? di norma, usa lo stesso formato di GET: nome1=valore1 & nome2=valore2 &... Se però si specifica un particolare tipo di codifica ( enctype ), il browser usa quello Ad esempio, con enctype="multipart/form-data” il browser invia i dati su righe separate, uno per riga, separati da righe speciali e righe vuote.

LO STESSO MODULO DI POCO FA Due campi di testo, deno- minati rispettivamente Nome e Cognome Due pulsanti, chiamati conferma e annulla (il primo invia, il secondo cancella il modulo)

...CHE USA POST (CASO BASE) Esempio di form <FORM METHOD="POST" ACTION=" > Inserire i seguenti dati: Inserire il nome: Inserire il cognome: Un terzo programma

IL PROGRAMMA Il programma fa l’eco di tutto ciò che riceve: main(){ char buf[1024]; printf("Content-type: text/plain\n\n"); printf("Risposta:\n\n"); while(gets(buf)) printf("%s\n", buf); } Ipotesi: righe non più lunghe di 1024 caratteri

IL RISULTATO (NEL CASO BASE) La stringa inviata ha la forma standard Nome=Paolino&Cognome=Paperino Niente più dati appesi all’URL

IL POST “multipart/form-data” Esempio di form <FORM METHOD="POST" ACTION=" enctype= "multipart/form-data" > Inserire i seguenti dati: Inserire il nome: Inserire il cognome: Lo stesso programma Una diversa codifica

... E IL DIVERSO RISULTATO I dati sono inviati uno per riga, separati da righe speciali e da una riga vuota

IL CODICE FISCALE.. SUL WEB!! Ricordate l’esercizio sul codice fiscale? una delle varianti prevedeva proprio il formato di dati tipico di GET e POST (caso base) adottando tale formato di input, il program- ma può essere “portato sul Web” senza sforzo......e immediatamente un servizio importante risulta disponibile a tutti!