Creare Applicazioni INTRANET
Active Server Pages
e
.NET
Riferimenti: Help IIS, manuali Visual Studio.NET
21 Ottobre 2002
Prof. Domenico de Biase
1
Evoluzione della architettura Client / Server
• Tipicamente, le applicazioni cooperanti si
•
•
dividono in client e server. Il client chiede
servizi e dati al server, il server glieli fornisce.
Le prime applicazioni client/server sono state
sviluppate per accedere a grandi database,
ed incorporano sia le regole di manipolazione
dei dati che l’interfaccia utente nel client.
Il server deve solo eseguire il maggior
numero possibile di richieste di lettura /
scrittura dati.
21 Ottobre 2002
Prof. Domenico de Biase
2
Evoluzione della architettura Client /
Server
• Con questa architettura il client fa quasi tutto il lavoro
•
•
•
•
perché il server sa solo leggere e scrivere i dati.
Uno dei vantaggi principali del modello client/server è
la possibilità da parte di molti utenti di accedere
simultaneamente agli stessi dati.
Gli aggiornamenti fatti sul server sono
istantaneamente disponibili a tutti i client.
Nonostante ciò, all’aumentare dei client, il server
diventa troppo lento.
Inoltre i cambiamenti nelle regole di accesso ai dati
sono costosi da riportare nel software.
21 Ottobre 2002
Prof. Domenico de Biase
3
Evoluzione della architettura Client /
Server
• Sebbene i prodotti “two-tier” abbiano
ancora ragione di esistere, il bisogno di
accedere più velocemente ai dati e i tempi
di sviluppo più ristretti richiedono un
nuovo modo di progettare le applicazioni
distribuite.
21 Ottobre 2002
Prof. Domenico de Biase
4
Il Nuovo Modello
• Il nuovo modello viene chiamato “Multitier” o “n-tier” (tier = fila, ordine
strutturato, strato)
• L’elaborazione viene distribuita più
equamente tra il client e il server
• Le regole e la logica di accesso sono
racchiusi in uno strato intermedio.
21 Ottobre 2002
Prof. Domenico de Biase
5
Il Nuovo Modello
1. Interfaccia utente e
2.
3.
navigazione (è il
browser)
Regole e logica della
specifica applicazione (è
il cuore della
applicazione). Connette
l’utente da un lato con i
dati dall’altro.
Servizi di accesso ai dati
strutturati (SQL, Oracle)
o non strutturati (email
ecc…).
21 Ottobre 2002
Prof. Domenico de Biase
6
Sistema Distribuito
Sito1
SitoN
O
D
B
C
SERVER
WEB server
DBL
DB1
DBN
TCP/IP
Client1
ClientN
Client2
21 Ottobre 2002
Client3
Prof. Domenico de Biase
7
CLUSTERING & NETWORK LOAD BALANCING
21 Ottobre 2002
Prof. Domenico de Biase
8
Le Applicazioni WEB
Internet ha cambiato per sempre l’architettura della
elaborazione distribuita
Il linguaggio HTML è usato per rappresentare
l’interfaccia utente
Gli strumenti Cross-platform come VBscript e applet
Java, insieme ai componenti COM, riescono a
combinare elementi dinamici e testi statici per
aumentare l’interattività delle applicazioni
La tecnologia Web non si usa solo con Internet, è
utile anche in ambiente locale e in ambiente misto
“Intranet”
21 Ottobre 2002
Prof. Domenico de Biase
9
The Team Development Environment
21 Ottobre 2002
Prof. Domenico de Biase
10
ASP
ASP non è un linguaggio a sé stante, è uno strumento di scripting per rendere
più interattive le pagine HTML. In un certo senso è un metalinguaggio perché
permette di programmare con VBScript e Jscript all’interno di pagine HTML.
Ad esempio:
<HTML>
<HTML>
<BODY>
<BODY>
<% For i=3 To 7 %>
<FONT SIZE=7>
<FONT SIZE= <% = i %>>
Hello World!<BR>
Hello World!<BR>
</FONT>
</FONT>
</BODY
Hello World
</HTML>
Hello World
Hello World
Hello World
Hello World
<% Next %>
</BODY
</HTML>
Hello World
Si usano i delimitatori <% e %> per racchiudere i comandi. All’interno dei
delimitatori si scrive nel linguaggio di scripting prescelto (VBScript, Jscript,…).
21 Ottobre 2002
Prof. Domenico de Biase
11
Applicazione Web .NET
Una applicazione web .NET è l’insieme
di tutti i file contenuti in una virtual
directory e tutte le sue subdirectory.
21 Ottobre 2002
Prof. Domenico de Biase
12
CREAZIONE MANUALE DI UNA
VIRTUAL DIRECTORY
• Entrare come Amministratore
• Creare una cartella sul proprio PC
• Aprire IIS (pannello di controllo-strumenti di
•
•
•
•
•
amministrazione-IIS)
Selezionare col tasto destro Sito web predefinito e
scegliere Nuova directory virtuale
Digitare il nome Alias (visibile dall’esterno)
Selezionare la cartella creata al punto 1
Assegnare le autorizzazioni di accesso
Copiare tutti i file della applicazione nella virtual directory
21 Ottobre 2002
Prof. Domenico de Biase
13
Fondamenti
Le applicazioni web possono essere eseguite solo tramite un Web server. Non si
possono eseguire con il browser aprendole come un file HTML normale
Ad ogni pagina .aspx è associata una classe esattamente come se fosse una
Windows Form, ma si chiama Web Form e la sua istanza viene creata ogni volta
che viene richiesta la pagina.
Le variabili globali dichiarate nella classe sono valide solo all’interno di una
pagina e per il round trip corrente
Nella classe posso sapere se sono in un PostBack ed ho accesso agli oggetti
predefiniti
21 Ottobre 2002
Prof. Domenico de Biase
14
Variabili Globali
Le variabili globali possono essere visibili a livello di Applicazione o di Sessione.
Le globali di Sessione sono visibili in tutte le pagine e sono private (duplicate) per
ciascun client. Le globali di Applicazione sono visibili in tutte le pagine e sono
condivise da tutti i client. Per crearle basta assegnare il valore ad una proprietà
dell’oggetto Session o Application con lo stesso nome della variabile.
Session("FirstName") = “Nico“;
Session("LastName") = “de Biase“;
21 Ottobre 2002
Prof. Domenico de Biase
15
ASP – Oggetti Predefiniti 1
• Application – per condividere informazioni tra tutti gli utenti di
una applicazione
• Request – per accedere a tutto ciò che il client passa tramite una
richiesta HTTP: parametri di una form, cookies, client certificates e
dati binari.
• Response – per mandare le informazioni direttamente al
browser, redirigere il browser su un altro URL, assegnare valori ai
cookies.
• Server – per accedere ai metodi ed alle proprietà del server,
creare una istanza di un oggetto COM, mappare percorsi dei file,
definire il timeout di uno script.
• Session – per memorizzare le informazioni globali, ma private, di
una sessione. Le variabili di sessione permangono finchè l’utente
rimane nella applicazione.
21 Ottobre 2002
Prof. Domenico de Biase
16
ASP – Oggetti Predefiniti 2
• ASPError – per ottenere informazioni sugli errori occorsi in
una pagina ASP. Oggetto read-only ritornato da
Server.GetLastError
• ObjectContext – per confermare (Commit) o annullare
(Abort) una transazione iniziata da uno script ASP. Vedi anche:
%@TRANSACTION = value % Ritorna anche gli oggetti
predefiniti: Application, Request, Response, Server e Session.
• ScriptingContext – Ritorna gli oggetti predefiniti:
Application, Request, Response, Server e Session. Però questo
metodo è obsoleto. Conviene usare ObjectContext.
21 Ottobre 2002
Prof. Domenico de Biase
17
Oggetto Application
Collections
Contents contiene tutti gli elementi che sono stati aggiunti con gli script.
StaticObject contiene tutti gli elementi che sono stati aggiunti con il tag
<OBJECT>.
Metodi
Contents.Remove(Nome) cancella un elemento.
Contents.RemoveAll cancella tutti gli elementi della Collection.
Lock blocca l’oggetto Application per avere accesso esclusivo.
UnLock libera l’oggetto Application.
Eventi
Sono generati dal Web server e richiamano gli script che vanno dichiarati in
Global.asa (ce n’è uno per ogni applicazione).
Application_OnEnd
Application_OnStart
21 Ottobre 2002
Prof. Domenico de Biase
18
Oggetto Request
Collections
ClientCertificate valori che servono ad identificare l’utente.
Cookies valori delle variabili registrate presso l’utente.
Form valori dei campi delle form di una richiesta HTTP.
QueryString valori delle variabili di una richiesta HTTP.
ServerVariables valori delle variabili di ambiente predefinite.
Proprietà
TotalBytes numero di byte che il client sta mandando nel body della
richiesta.
Metodi
BinaryRead legge i dati binari mandati dal client al server tramite una
richiesta di tipo POST.
21 Ottobre 2002
Prof. Domenico de Biase
19
Cookies
L’insieme Cookies può contenere dati semplici oppure strutturati.
Per sapere se un cookie è strutturato si usa il metodo HasKeys. I
cookies dell’oggetto Request sono read-only, quelli dell’oggetto
Response sono write-only.
<%
‘ Esempio di lettura di tutti I cookies
Dim strKey
For Each strKey In Request.Cookies
Response.Write strKey & " = " & Request.Cookies(strKey) & "<BR>“
If Request.Cookies(strKey).HasKeys Then
For Each strSubKey In Request.Cookies(strKey)
Response.Write "->" & strKey & "(" & strSubKey & ") = " & _
Request.Cookies(strKey)(strSubKey) & "<BR>“
Next
End If
Next
%>
21 Ottobre 2002
Prof. Domenico de Biase
20
Oggetto Response
Collections
Cookies imposta i valori delle variabili da registrare presso l’utente.
Proprietà
Buffer indica se l’output della pagina è bufferizzato.
CacheControl abilita i server proxy a bufferizzare output di ASP.
CharSet appende il nome del set di caratteri a content-type HTTP.
ContentType specifica il content-type HTTP della risposta.
Expires specifica il tempo di validità della pagina per il browser.
ExpiresAbsolute specifica la data di scadenza della pagina per il
browser.
IsClientConnected controlla se il client è ancora connesso o no
Pics definisce la label PICS (Platform for Internet Content Selection)
Status valore della linea di stato ritornata dal server.
21 Ottobre 2002
Prof. Domenico de Biase
21
Oggetto Response
Metodi
AddHeader imposta header HTML.
AppendToLog aggiunge una stringa al log del Web server.
BinaryWrite scrive dati binari su HTTP output senza conversioni.
Clear azzera il buffer di output (se bufferizzazione abilitata).
End termina l’esecuzione della pagina ASP corrente.
Flush manda immediatamente in output il contenuto del buffer.
Redirect manda un messaggio di redirezione al browser che tenta di
connettersi al nuovo URL.
Write scrive una variabile su HTTP output sotto forma di stringa.
21 Ottobre 2002
Prof. Domenico de Biase
22
Oggetto Server
Proprietà
ScriptTimeout tempo massimo entro cui lo script deve terminare.
Metodi
CreateObject crea una istanza di un componente server.
Execute esegue un file .asp.
GetLastError ritorna un oggetto ASPError che descrive l’errore.
HTMLEncode traduce in HTML la stringa passata come parametro.
MapPath mappa un percorso web virtuale in un percorso fisico.
Transfer trasferisce il controllo a un file .asp passandogli il contesto.
URLEncode traduce in URL la stringa passata come parametro.
21 Ottobre 2002
Prof. Domenico de Biase
23
Oggetto Session
Collections
Contents contiene gli elementi di sessione aggiunti con gli script.
StaticObject contiene tutti gli elementi che sono stati aggiunti con il tag
<OBJECT>.
Proprietà
CodePage imposta code-page per mapping dei simboli.
LCID identificatore di località.
SessionID identificatore di sessione univoco per l’utente.
TimeOut time-out di sessione espresso in minuti.
Metodi
Abandon distrugge l’oggetto Session e rilascia le risorse.
Contents.Remove(Nome) cancella un elemento.
Contents.RemoveAll cancella tutti gli elementi della Collection.
21 Ottobre 2002
Prof. Domenico de Biase
24
Browser object model
Window Tramite il browser è possibile fare riferimento ad un oggetto
predefinito che può essere usato solo dagli script client-side. Questo oggetto è
WINDOW. L’oggetto WINDOW rappresenta il browser stesso con le sue
proprietà, metodi ed eventi. Qui ASP non esiste, si usa HTML + scripting.
Proprietà 1
Name è il nome dell’oggetto finestra – read only.
Parent oggetto window padre (nel caso che la window corrente sia una frame).
Opener oggetto window che ha generato la window corrente.
Self è la window corrente.
Top ritorna l’oggetto window della top level frame.
Location è l’url corrente della pagina. Contiene a sua volta le seguenti proprietà: Esempio:
Href
Protocol
Host
Hostname
Port
Pathname
Search
Hash
21 Ottobre 2002
http://www.wrox.com:80/asp/book.htm?abc
http:
www.wrox.com:80
www.wrox.com
80
/asp/book.htm
?abc
(nothing – would contain any hash specified with #)
Prof. Domenico de Biase
25
Browser object model - Proprietà
Proprietà 2
Status è il testo della status bar del browser.
defaultStatus è come Status.
Document è la pagina corrente visualizzata dal browser. Contiene i metodi
seguenti: write, writeln, open, close, clear. E le proprietà:All, linkColor, vlinkColor,
alinkColor, fgColor, bgColor, Title, Cookie, LastModified, Referrer. Esempi:
Document.Write “L’ora corrente è " & Now & "."
nota che Now è interpretato dal browser  ora locale!
MyVar = Document.All.Item(“sample”)
assegna a MyVar l’oggetto che rappresenta il tag html di nome “sample”.
All è la collection con cui si accede a ciascun tag html della pagina. Si può
accedere tramite indice: all(i) o tramite id: all.item(“id”)
Frames sono le frames della pagina corrente.
History è la history list del browser. Metodi: foreword, back, go.
Navigator contiene le informazioni che riguardano il browser come ad esempio la
versione.
21 Ottobre 2002
Prof. Domenico de Biase
26
Browser object model - Metodi
Metodi 1
Alert visualizza una message box.
Confirm message box con OK e Cancel. Ritorna True se si preme OK.
Prompt message box con input di una stringa.
Esempi:
<HTML>
<HEAD>
<TITLE> Window Dialogs </TITLE>
</HEAD>
<BODY>
<CENTER> <H1> Window Dialogs </H1> <INPUT TYPE="BUTTON" NAME="btnTest" VALUE="Click Me">
<SCRIPT LANGUAGE="VBScript">
Sub btnTest_onClick
Dim retValue retValue = Confirm("Press OK or Cancel")
Alert "Confirm returned " & retValue
retValue = Prompt("Enter a string", "Default String")
Alert “Prompt returned '" & retValue & "'" End Sub
</SCRIPT>
</CENTER>
</BODY>
</HTML>
21 Ottobre 2002
Prof. Domenico de Biase
27
Browser object model - Metodi
Metodi 2
Open apre una finestra con nuovo URL, caption e tipo. Es:
Window.Open "http://www.wrox.com/", "myWindowOne", "toolbar=no, menubar=no, location=no,
directories=no"
Window.Open "http://www.wrox.com/", "myWindowTwo", "width=100, height=100, resizeable=no"
Window.Open "http://www.wrox.com/", "myWindowThree", "menubar=no, toolbar=yes, location=yes"
Close chiude una finestra di browser. Può chiudere anche la sessione!.
<HTML> <HEAD>
<TITLE> Window Open And Close Tester </TITLE> </HEAD> <BODY> <CENTER> <H1> Window.Open And Window.Close
</H1>
<INPUT TYPE="BUTTON" NAME="btnOne" VALUE="Open One">
<INPUT TYPE="BUTTON" NAME="btnDOne" VALUE="Close One"><p>
<INPUT TYPE="BUTTON" NAME="btnCloseMe" VALUE="Close Me">
<SCRIPT LANGUAGE="VBScript">
Dim objNewWindow
Sub btnOne_onClick
Set objNewWindow = Window.Open("http://www.wrox.com/", "myWindowOne", "toolbar=no, menubar=no, location=no,
directories=no")
End Sub
Sub btnDOne_onClick
objNewWindow.Close
End Sub
Sub btnCloseMe_onClick
Window.Close
End Sub
</SCRIPT> </CENTER> </BODY> </HTML>
setTimeout si usa per lanciare una funzione allo scadere di un timeout.
clearTimeout cancella il timeout.
21 Navigate
Ottobre 2002 redirige la finestraProf.
Domenico
Biase
corrente
deldebrowser
su un nuovo URL.
28
Browser object model - Eventi
Eventi
onLoad è chiamato quando la pagina viene caricata.
onUnload è chiamato quando la pagina viene scaricata. Es:
Sub Window_onLoad
Alert “onLoad finestra”
End Sub
Elemento
Proprietà
Nessuno
Metodi
Nessuno
Link
button, reset, submit
form, name, value
click
Checkbox form, name, value, checked, click
onClick
defaultChecked
Radio
form, name, value, checked click, focus
Password form, name, value,
focus, blur, select Nessuno
defaultValue
text, textarea
form, name, value,
focus, blur, select
defaultValue
Select
Hidden
21 Ottobre 2002
name, length, options,
selectedIndex
name, value
focus, blur
Nessuno
Prof. Domenico de Biase
Eventi
onMouseOver, onClick
onClick
onClick
onFocus, onBlur,
onChange,
onSelect
onFocus,
onBlur, onChange
Nessuno
29
Componenti Server
Ad Rotator – per far apparire alternativamente in uno spazio
definito una serie di immagini pubblicitarie con una cadenza prefissata
Browser Capabilities – per determinare le capacità, il
tipo e la versione di ciascun browser che accede al server.
Content Linking – per creare una tabella di contenuti delle
pagine e legarle insieme sequenzialmente come pagine di un libro.
Content Rotator – per automatizzare la rotazione di
content-string HTML in una pagina.
Counters – per gestire ogni tipo di contatori.
Database Access – per accedere ai database con ADO.
File Access Component – per accedere ai file.
21 Ottobre 2002
Prof. Domenico de Biase
30
Componenti Server
Logging Utility – per leggere HTTP activity log del web
server.
MyInfo – per accedere ad informazioni come il nome
dell’amministratore del sito, l’indirizzo ecc….
Page Counter – per contare e visualizzare il numero di volte
che una pagina è stata visitata.
Permission Checker – per controllare i diritti di accesso
di un utente tramite il protocollo PAP di IIS.
Status – stato del server (solo per Macintosh).
Tools – strumenti e utility per aggiungere funzionalità alle pagine in
modo rapido.
21 Ottobre 2002
Prof. Domenico de Biase
31
Scarica

Sviluppare applicazioni web