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