ASP, che cosa è? A cosa serve?

Materie:Altro
Categoria:Informatica

Voto:

1 (2)
Download:272
Data:15.06.2005
Numero di pagine:12
Formato di file:.doc (Microsoft Word)
Download   Anteprima
asp-cosa-e-cosa-serve_1.zip (Dimensione: 61.96 Kb)
trucheck.it_asp,-che-cosa-+     287.5 Kb
readme.txt     59 Bytes



Testo

ASP, che cosa è? A cosa serve?
Lo sai cosa è un protocollo no?
Beh, nel caso che il termine sia nuovo, un protocollo è un gruppo di regole che ci permettono di comunicare l'uno con l'altro. Per esempio, l'italiano è un protocollo, lo stringere la mano quando ci si incontra, adoperare il coltello e la forchetta, fermarsi quando il semaforo è rosso (non un buon esempio per gli italiani) sono tutti protocolli. Quando due eskimesi si incontrano si strofinano il naso, i russi si baciano 3 volte, gli inglesi una, gli italiani due, ecc. E' così che ci capiamo.
L'unica cosa importante è che tutti coloro che sono coinvolti nella comunicazione condividano le stesse regole.
L'HTTP (HyperText Transfer Protocol), la lingua franca dell'internet, è un protocollo. Quando due computer conoscono le regole dell'HTTP possono comunicare tranquillamente.
La ragione per cui è così popolare ed ha ricevuto così tanto successo, più che altro, è perché è un protocollo molto semplice. Ogni computer riesce a parlare HTTP!
Sfortunatamente questa sua grande forza, come sempre nella vita, è anche la sua più grande debolezza.
Il HTTP protocollo funziona così:
tu mi chiedi una pagina web e io te la mando. Punto, basta. Non so chi sei, no so dove stai e non me ne importa niente. Basta che mi dai un Internet Protocol (IP) verso cui spedire il pacchetto e io lo riesco a far arrivare a destinazione.
Sfortunatamente un protocollo così semplice non ci permette una grande sofisticazione nel processo comunicativo. È un po' come vivere senza la memoria. Un po' come un pesce rosso che gira dentro al suo vaso: "Hello! Guarda qui! Che bel sasso!"
È in questo contesto che vengono utilizzate tecnologie come Microsoft Internet Information Server (IIS), Macromedia ColdFusion Server, Apache Server ecc.
Impiegando un po' di risorse sul server ci permettono di comunicare più intelligentemente. In un senso, introducono la memoria nei processi di comunicazione HTTP.
IIS (il server) per esempio, quando riceve una richiesta da te (il cliente) per un pagina mette da parte un po' di spazio nella sua memoria e ci scrive il tuo nome, indirizzo, la pagina e un mucchio di altre cose (che vedrai nella prossime lezioni) riguardo a chi sei e cosa hai chiesto. Quando richiedi un'altra risorsa il server controlla la tua area di memoria riconoscendoti subito.
Come programmatore, usando Active Server Pages (ASP) sul server (IIS), io posso guardare in quest'area di memoria e, per esempio, trovare il tuo nome e stamparlo in cima alla pagina prima di mandartela.
ASP è la tecnologia che è a nostra disposizione per manipolare le informazioni che IIS raccoglie e mantiene.
In conclusione possiamo dire che tecnologie come IIS e ASP espandono il protocollo HTTP con l'introduzione della continuità e ci permettono di maneggiare la conversazione fra il server e il cliente in una maniere più ricca.
I primi passi
Prima che tu possa cominciare a sperimentare le tue applicazioni con questa tecnologia hai bisogno di un server e della DLL di ASP. Ci sono diversi siti che spiegano come si fa ad installare l'ambiente ASP.
Questo sito spiega come si fa ad installare il Personal Web Server per Window98 ed è uno dei migliori
http://www.soft-land.org/faq/asppws.html
A questo punto, penso sia ragionevole assumere che tu sei gia un discreto programmatore in HTML (la lingua di HTTP), altrimenti non saresti qui a volere imparare di più ;o)
Allora, cominciamo subito.
Il seguente file, buongiorno.htm, scrive "Buongiorno a tutti" sul tuo schermo quando lo chiami dal tuo browser.
Buongiorno
Una volta che riesci a far funzionare lo script sul tuo browser, dai un'occhiata al codice sorgente ;o) (Visualizza -> HTML)
Questo è il codice che vedrai visualizzato:
Buongiorno a tutti
) attacca la sua stringa a quella precedente e così continua fino alla fine del file. Quando ha finito, il motore manda la stringa in HTML a IIS che la invia al browser dell'utente (un po' semplicistico ma vero ;o).
Ne segue che ASP e HTML possono essere mescolati in ogni maniera. Finché stiamo attenti a mantenere i delimitatore, funziona sempre.
Per esempio buongiorno.asp potrebbe essere scritto così:
Buongiorno a tutti
e queste variabili rimangono valide finché noi stessi uccidiamo l'applicazione o fermiamo IIS.
Un altro esempio. Nel global.asa durante Session OnStart event, definiamo:
Potremmo adoperarla in tutte le pagine nel nostro sito per controllare se il cliente ha l'autorizzazione per vedere la pagina. Come? Così:
Naturalmente questo presume che tu abbia un meccanismo per permettere che il cliente effettui il login nel tuo sito e che il tuo codice cambi lo stato della variabile (Set Session ("login") = True) quando il login è avvenuto correttamente.
Nell'oggetto Session la durata delle variabili è valida fino a quando non chiudi il tuo browser, oppure, se non hai attività, IIS chiude di solito la sessione dopo 30 minuti.
Un esempio pratico che puoi applicare subito.
Diciamo che tu hai un sito dove è importante che i tuoi clienti entrino da una pagina specifica che vuoi tu e non da dove loro hanno messo un bookmark:
Facile, lo facciamo con il Response:
Sub Session_OnStart
Response.Redirect "C:\MyWebRoot\MyWebSite\buongiorno.asp
end sub
Appena la Session comincia, cioè quando qualcuno entra nel sito attraverso il suo bookmark, IIS spara l'azione Session_OnStart che ti ridirige esattamente dove vuoi tu.
C'è chi dice che l'internet mette sempre più potere nelle mani dei clienti ma non certo con noi programmatori. Abbiamo sempre tutto sotto controllo ;o)
Vbscript e le lingue che usiamo per parlare con il browser
Le pagine ASP sono una combinazione di script in ActiveX e di tag HTML. IIS usa questi scripts, per darci la funzionalità nelle nostre applicazioni.
IIS ha due motori interni per interpretare questi scripts:
· VBScript che è un subset di Visual Basic for Application (VBA)
· Jscript un versione di JavaScript da Microsoft
Javascript, un subset del linguaggio C, è un prodotto di Netscape e di Sun Microsystem ed è interpretato dal suo motore.
Quali di queste lingue adoperare è una tua scelta e dipende naturalmente dalla familiarità che hai con questi linguaggi. In pratica però adoperiamo un po' di una e un po' dell'altra.
Per esempio, qui adoperiamo Vbscript per scrivere server side script e adoperiamo Javascript per scrivere client side script. La ragione è che Netscape non capisce VBScript e quindi tutti i nostri utenti Netscape non vedrebbero quando siamo svegli.
Siccome questo è un tutorial su ASP, non VBScript, cerchiamo di non perdere troppo tempo. Ci sono ottimi manuali per VBScript anche online. Per citarne uno, all'indirizzo riportato qui sotto trovi l'help di Microsoft che puoi scaricare e installare liberamente sul tuo computer.
http://msdn.microsoft.com/scripting
32-bit VBScript Documentation Download (VBSDOC.exe 473KB) for Windows 95 and Windows NT.
Guardiamo solo velocemente quello di cui abbiamo bisogno. Come tutte le lingue VBScript impiega delle strutture di controllo per creare la logica nelle nostre applicazioni. Ci sono due tipi principali di strutture:
· Decisioni, che definiscono su che ramo logico andare in base al risultato di un test
· Loops, che processano ciclicamente fino a che una specifica condizione non è raggiunta.
Decisioni:
Questa è la decisione più comune di tutte e c'è poco da spiegare.
"Se passi la condizione allora facciamo qualcosa"
La struttura che segue è un allargamento della precedente
"Se passi la condizione allora facciamo qualcosa altrimenti facciamone qualche altra""
La prossima struttura invece è adoperata per scegliere fra decisioni multiple:
Questa struttura è molto efficiente e in più produce del codice che si legge bene.
Loop
Come abbiamo detto queste sono strutture cicliche che continuano a riprodursi fino a che una condizione predeterminante è raggiunta.
Questo lo abbiamo già visto nella prima lezione
Logico no? Comunque, usando il For loop dobbiamo sapere quanti gradini ci sono prima di cominciare altrimenti rimaniamo a metà della scala!
La seguente struttura ci permette invece di arrivare in cima alla scala in tutte le maniere
Quando arriviamo in cima e non ci sono più scalini il Loop esce.
Ti ricordi ospite.asp che abbiamo scritto nella lezione 5?
Allora prova questa struttura:
se ti trovi nei guai qui, usa il Response per vedere cosa succede.
Per esempio se il tuo programma non trova il file, utilizza un'altra dichiarazione:
così vedi dove sei e lo puoi riparare.
Questo programma, essendo così corto, è certamente leggibile; ma se le righe invece di essere poche fossero diverse centinaia? Con una form molto lunga e con una presentazione complessa basata su un numero di parametri passati da pagine precedenti? Tipo una situazione di e-commerce dove raccogliamo dati di carte di credito?
Guarda un po' com'è bello usando procedure:
Come vedi questa Funzione è certamente riutilizzabile anche se un po' semplice (ma bisogna pur cominciare da qualche parte o no? ;o).
Aggiungi queste due linee nel codice fra:
Come vedi, poiché la funzione ci restituisce un valore, bisogna dargli una variabile per raccogliere l'informazione. Oppure volendo avremmo potuto scriverla direttamene con:
Allora, in sostanza, abbiamo messo un po' di ordine nel nostro programma.
Anche se ti sembra un po' troppa strutturato per quello che fa, so di sicuro che mi ringrazierai se per caso ritorni a questo programma fra qualche mese ;o)
E adesso la vera ragione per cui adoperiamo tecnologie come ASP
Fino ad ora tutta l'enfasi nello sviluppo dei siti web è stata "messa in vetrina". Abbiamo fatto delle vetrine stupende che sono costate una fortuna, ma dentro al negozio? Molto poco. Spesso un cliente ha l'impressione che non ci sia nessunno e spesso il cliente ha ragione! Come facciamo a rimediare?
In questo caso tecnologie come ASP ci aiutano proprio. Per esempio tutti sanno che un sito deve avere un mezzo con cui il cliente può comunicare con noi. La maniera più semplice è un "mailto:" collegato al tuo email.
Sfortunatamente questo metodo fallisce molto spesso poiché presuppone che il programma di posta elettronica dell'utente sia configurato correttamente e spesso non lo è.
Il secondo metodo è una form mantenuta dall'ISP presso cui risiede il nostro sito. Gli Script dietro a questa form di solito mandano un e-mail al cliente. Il metodo migliore però è costruire la tua form da solo e controllare le informazioni che vuoi sapere dai tuoi clienti e la risposta che gli vuoi dare.
A questo punto, cominciamo a costruire un'applicazione che ci servirà quando avremo finito le nostre lezioni: costruiamo una Form che ci permette di raccogliere informazioni dai nostri clienti, restituendo loro un messaggio di ringraziamento e mandando a noi una email. Il primo pezzo lo sai già fare da solo.
Cominciamo a fare un file chiamato feedback.asp e vediamo dove ci porta.
Feedback Form
Grazie per....
Se avete....
Nome
email
Commenti
 
Vi interessa ricevere....


Feedback.asp ha 2 text boxes, 1 textarea per i commenti e un checkbox nel caso i nostri clienti vogliano ricevere una newsletter regolarmente o pubblicità o qualcosa che ce li leghi a noi un po'. In inglese si chiama stickyness (come il miele, appiccicoso)
La form chiama in azione manda_feedback.asp con il metodo Post. Questo file raccoglie l'input del cliente e lo invia a noi per email. In più presenta al cliente una pagina ringraziando per i suoi commenti.
Volendo, se sei avventuroso, potresti adoperare lo stesso metodo di prima e costruire l'applicazione nello stesso file. Come vuoi tu, ormai sei già un esperto ;o)
Allora costruiamo questa manda_feedback.asp.
Per mandare una email dobbiamo adoperare il NewMail oggetto dalla CDONTS library di Micorsoft.
Il modo in cui adoperiamo questo oggetto è simile agli altri e molto semplice.
"
response.write "Continua"
response.write ""
End sub
%>
Ed ecco qui che abbiamo la nostra form funzionante. L'oggetto NewMail è abbastanza semplice no?
Se volessimo delle copie carbone il NewMail ci permetterebbe di specificare anche:
O potremmo formattare la email in HTML con la proprietà:
Ma adopereremo questo oggetto di nuovo nelle prossime lezioni e impareremo di più.
Database access with ADO
Se il nostro sito diventa popolare dovremmo ricevere un mucchio di email e presto ci accorgeremo che programmi come Outlook o Eudora non sono adeguati a conservare questo dati. Ma grazie a Dio, ci sono le banche dati. In un sito moderno, le banche dati sono come il cuore in un essere umano: indispensabili. Costruiamone una subito.
Io ne ho fatta una in Microsoft Access. L'ho chiamata CRM.mdb poiché vogliamo costruire un sistema di Customer Relationship Management (CRM, gestore dei rapporti con i clienti) che ci permetta di comunicare con i nostri clienti in una maniera più efficiente. Dentro crm.mdb ho messo una tabella chiamata:
tbl_feedback
Nome campo
Tipo campo
Id Autonumber
primary key
Nome
Text
Email
Text
Commenti
Memo
E poi ho inserito un paio di records in modo da fare un test dell'intera procedura.
A questo punto lasciami chiarire la scelta di Access come database. Io di solito uso MS SQL ma ho pensato che Access sia un pò più accessibile come costo. Però il tipo di database che adoperi per questi esercizi non è molto rilevante. Il code che scriveremo funziona per quasi tutte le banche dati commerciabili, quindi scegli quella con cui sei più comodo.
Prima che andiamo troppo avanti però, devo dirti che Access non è una soluzione industriale, non è il tipo di applicazione che vorrei adoperare su un web server per un sito commerciale.
Allora cominciamo a fare cose serie. Fino a poco tempo fa, costruire un sito dinamico con un database era un lavoro solo per i "big boys" ma adesso con oggetti (o meglio super oggetti) come ActiveX Database Object (ADO) è diventato un gioco da ragazzi.
ADO è come un superset di un oggetto. È una collezione di oggetti che, tutte insieme, semplificano il lavoro di collegare e manipolare i dati che risiedono dentro il database. In più ADO è inserito dentro un'altra tecnologia di Microsoft, Object Linking & Embedding DataBase (OLE DB), il che rende le cose ancora più facili.
La prima cosa da fare per lavorare con un database è di creare una connection. Se vuoi dare acqua al giardino devi attaccare il tubo al rubinetto, è uguale.
Il metodo che adoperiamo per collegarci è sempre lo stesso indipendentemente dal tipo di database che utilizziamo, la sintassi però varia. Ci sono diverse maniere per collegarsi ma qui, per semplicità adoperiamo la Connection String.
Per esempio per collegarci con il nostro database dobbiamo inserire il seguente codice:
Un consiglio gratuito: non salvare mai il database nella stessa directory dei tuoi file ASP. Mettilo sempre fuori dal tuo Web Root, in modo da renderla inaccessibile agli utenti.
Lo stesso code per MS SQL per esempio è
Comunque una volta che abbiamo inserito uno di questi due comandi per la nostra pagina ASP siamo collegati al database.
Non ci credi? Beh, prova un po' questo codice (chiama il file check_connection.asp)
Se non ha funzionato, leggi i messaggi che il Browser ti dà sulla pagina. Io qui uso IE5.5 e se per esempio metto l'indirizzo del database sbagliato mi dice:
Error Type:
Microsoft JET Database Engine (0x80004005)
'C:\asptutorial\tut\crm.mdb' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.
/tut/check_connection.asp, line 4
Svelto, guardo subito alla linea 4 e vedo subito dove è il problema.
Se a questi punto il database non funziona non puoi continuare con le lezioni. Quindi concentrati e lavora. Quando sei riuscito a vedere il contenuto del tuo database, prosegui con la lezione 11 e vediamo un po' che cosa è che abbiamo fatto in realtà.
Facciamo la conoscenza con il Connection e il Recorset
Congratulazioni ;o)
Adesso che hai passato questo ostacolo, non ce ne sono più. Di qui in poi, è tutta discesa. A dir la verità, è proprio incredibile come si fa presto al giorno d'oggi. Fino a poco tempo fa ci sarebbero volute delle settimane per fare una cosa simile. La metafora del Lego sta diventando più e più realtà.
Allora cos'è che abbiamo fatto esattamente? Cosa significa il codice che abbiamo usato?
Cominciamo dal principio:
Abbiamo già visto prima come si costruisce un oggetto con NewMail. Qui faremo lo stesso. Costruiamo un oggetto Connection che appartiene ad ADO e lo chiamiamo objConn.
Set objConn = Server.CreateObject("ADODB.Connection")
Poi usando il metodo Open del Connection Object ci colleghiamo al database:
objConn.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:/asptutorial/crm.mdb")
Adesso abbiano bisogno di un oggetto Recordset (anche questo di ADO) per metterci dentro tutti i nostri dati che vengono fuori quando interroghiamo il database.
Set objRs = Server.CreateObject("ADODB.Recordset")
E poi con il metodo Execute dell'oggetto Connection eseguiamo una query al database e depositiamo il risultato nel recordset che abbiamo costruito.
set objRs = objConn.Execute("SELECT * from tbl_feedback")
Ciò che faremo di qui in poi l'abbiamo già visto. Questo While Loop semplicement dice "fai finché non siamo arrivati alla fine del file" (EOF = End Of File)
Do While NOT objRs.EOF
Scrivimi il nome, email e commenti del primo record:
response.write "nome = " & objRs("nome") & "
"
response.write "email = " & objRs("email") & "
"
response.write "commenti = " & objRs("commenti") & "
"
response.write "
Tutte le volte che devi accedere al database basta una riga sola
e così finiamo questo programma per bene. (Segue check_connection.asp)
"
objRs.Movenext
Loop
End sub
Function Prendi_Recordset(strConn, strsql)
'--------------------------------------------------------
'Purpose: riceve un recordset da un query
'Date: 28 March 2001
'Commenti:
'--------------------------------------------------------
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn
Set objRs = objConn.Execute (strsql)
End Function
%>
Conoscenza col Connection e Recordset non basta
Nella lezione precedente siamo riusciti a estrarre un recordset dal nostro database. Bene, da qualche parte si deve pur cominciare. Se non l'avevi mai fatto sono sicuro che sei molto contento con te stesso ;o)
L'oggetto Recordset però è un po' più complicato di quello che abbiamo fatto fino adesso. Se ci hai fatto caso, nel programma check_connection.asp abbiamo dovuto mantenere la Connection con il database aperta finché non abbiamo finito col recordset. La ragione è che il metodo che abbiamo adoperato, essendo il più semplice, ci ha dato un Connected Recordset. C'è un'altra maniera, e più efficiente di estrarre un recordset che ci permette di chiudere la connection non appena i dati sono arrivati. Questo è il Disconnected Recordset.
Modifichiamo il nostro Prendi_Recordset così che possiamo chiudere la connection subito. Prima però abbiamo bisogno di includere un file che contiene i valori delle costanti di ADO. Il file si chiama adovbs.inc e si include nella pagina con questa sintassi:
Lo so che non abbiamo parlato di Includes e forse è meglio se ne parliamo subito.
Gli Includes sono un po' come le Funtions e le Procedures e si adoperano per incapsulare del codice in modo da poterlo riutilizzare in molte pagine. Il motore di ASP, quando vede una direttiva "include", cerca il file e inserisce il codice che trova in quel punto del file. Personalmente io adopero poco i file include perché rendono il codice più difficile da leggere e possono creare problemi se la struttura del directory del sito cambia. Di regola si fa una folder chiamata include e tutte le include si chiamano di li. Per convenzione sono chiamati con estensione .inc ma le puoi chiamare anche con .asp. Come tutto il resto possono contenere ASP, HTML o una mescolanza di tutto.
Con un po' di giudizio sono molto utili e anche noi li adopereremo presto. Il più grande vantaggio è che se mettiamo un file include che, per esempio, contiene un numero di funzioni utili al principio di tutte le nostre pagine, quando cambiamo l'include non dobbiamo cambiare nessuna delle nostre pagine.
Ma riprendiamo con la nostra funzione che ci dà indietro un recordset disconnesso.

Esempio