ASP.NET - Progetto Linguaggi Web 1.0 ita
Transcript
ASP.NET - Progetto Linguaggi Web 1.0 ita
ASP.NET ASP.NET • Evoluzione, più flessibile, delle Active Server Pages (ASP) • Sono pagine web attive che espongono risorse del server • Elaborazione server-side di Web forms • Indipendenti dal linguaggio • Indipendenti dal browser • Essenzialmente Web service con interfaccia (i WS permettono di creare applicazioni web distribuite). Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 2 1 ASP.NET: archiettura Sono una piattaforma di sviluppo per vere applicazioni web Modello architetturale Web Client Applicazioni ASP.NET IIS .NET Framework Sistema operativo 3 Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna Architettura del framework .NET .NET Framework ASP.NET Web Forms Windows Forms Web Services Services Framework Base Data Debug ... Common Language Runtime System Services Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 4 2 ASP.NET: struttura • Gestione separata del layout e della logica applicativa • Utilizzano i servizi del framework .NET • Il codice è compilato la prima volta che la pagina viene richiesta • Gestione dello stato • Si utilizzano veri linguaggi di programmazione, integrazione multilinguaggio • Possibile aggiornare i file anche se il server è in funzione 5 Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna Web Form Application Parte visuale, due modalità di accesso Design view HTML view Codice dell’interfaccia separato MyWebForm.asp.cs MyWebForm.aspx Class MyWebForm Welcome! MyWebForm Welcome! Name: Name: Password: Password: OK OK Visual Component I due file assieme costituiscono MyWebForm Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 6 3 Modello degli eventi Gli eventi accadono sul client, ma sono gestiti sul server event Web Client event Server message parsing del messaggio Chiama un appropriato event handler event handler response Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 7 Event Handler di un controllo Molti eventi sono causati da azioni dell’utente nel browser Il codice per gestire l’evento deve essere eseguito nel server Quando si complete l’esecuzione del codice di gestione evento, il risultato è una pagina web che viene rispedita al browser private void Button1_Click(object sender,System.EventArgs e) { //(………) } Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 8 4 Esempio ASP.NET Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 9 Web Form: esempio thisfile.cs: Protected void SubmitBtn_Click(Object SubmitBtn_Click(Object S, EventArgs E) Message.Text=“Hi Message.Text=“Hi “ & Name.Text End Sub thisfile.aspx: <%@ Page Language=“C#“ Codebehind=“thisfile.cs“ ... %> <body> <form action=“thisfile.aspx“ method=post runat=server> <h3> Name: <asp:textbox <asp:textbox id=“Name“ runat=“server“ /> <asp:button type=submit text=“LookUp“ id=“LookUp“ OnClick=“SubmitBtn_Click OnClick=“SubmitBtn_Click“ SubmitBtn_Click“ runat=“server“ /> <br> <asp:label id=“Message id=“Message“ Message“ runat=“server“ /> </form> </body> </html> Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 10 5 .aspx: Esecuzione Client Server IIS Request .aspx file ASP.NET Runtime Parse .aspx file Generate page class Instantiate controls Response Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 11 Eventi: esempi Esempi • System.Web.UI.WebControls Classe Button, public instance event Click • System.Web.UI Classe Page, public instance event Load Eventi in C# id=btnNext runat=“ runat=“server =“server“ server“ ASP.NET <asp:ImageButton id= imageurl=“...“ imageurl=“...“ onclick=“ onclick=“btnNext_Click =“btnNext_Click“/> btnNext_Click“/> C# protected void btnNext_Click btnNext_Click( (Object S, ImageClickEventArgs E) { [ ... do something ... ] } Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 12 6 Realizzazione di Web Form Application Controlli File, Solution Explorer Web Form Proprietà 13 Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna Ciclo di vita di una Web Form Application Il ciclo di vita di una ASP.NET Web Form itera cinque fasi principali: Page_Init Page_Unload Gestione eventi Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna Page_Load Validazione 14 7 Modello di applicazioni web Unmanaged Code HTTP Request Host (IIS, Internet Explorer) HTTP Runtime HTTP Module HTTP Module Request Handler ... Managed Code Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 15 HTTP Runtime Managed code • Gira all’interno di un processo host non gestito Vasta utilizzabilità • Gestione asincrona delle richieste • Multithreading Sostituisce le ISAPI (Internet Server Application Programming Interface, evoluzione di CGI) Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 16 8 Web Application ASP.NET definisce una Web application come “la somma di tutti i file, pagine, handler, moduli e eseguibili che possono essere invocati o eseguiti nell’ambito di una directory virtuale su di un web application server” Applicazioni distribuite Presentation Web Form Middle Tier Database Internet Web Service Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 17 Accesso ai dati remoti Principi fondamentali • Utilizzo di un modello disconnesso • Lettura dei dati più frequente dell’aggiornamento • Minimizzazione delle richieste di risorse al server • Accesso ai dati attraverso processi remoti Sorgenti dati per pagine Web Form • Database, ADO.NET • XML •… Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 18 9 Gerarchia delle classi System.Object System.Web.UI.Control WebControl System.Web.UI. WebControls ListControl Table ListBox Button CheckBoxList TextBox ... ... 19 Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna Logica applicativa e Layout .cs .aspx Eliminata la fusione di HTML e codice • Migliore manutenibilità dell’applicazione Separazione completa del layout dalla logica applicativa • Niente codice all’interno dei file HTML • File specifici per disegnatori e per programmatori • Volendo si può ancora mischiare HTML e script Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 20 10 Linguaggi supportati Visual Basic (ma VBScript è unmanaged) JScript C# C++, con managed extensions del C++ Altri: J#, Cobol, Smalltalk, ... che seguono la Common Language Specification (CLS) 21 Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna ASP.NET Molti file con estensioni differenti • File ASP.NET standard: .aspx o .ascx • Web Services: .asmx • File con codice: .cs, .vb, ... • Configurazione: Config.web • Web applications: Global.asax Sono tutti file di testo Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 22 11 Sintassi Direttive • <%@ Page language=“VB“%> Blocchi di codice dichiarativo • <script runat=“server“ [language = ...]> [ lines of code ] </script> Blocchi di codice • <% [ inline code or expression ] %> Controlli HTML • <HTMLtag runat=“server“ [attribute = ...]> </HTMLtag> 23 Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna Sintassi Sintassi di controlli personalizzati • Controlli lato server • <ASP:TextBox id=“MyTb1“ runat=“server“> • Proprietà lato server • <ASP:TextBox maxlength=“80“ runat=“server“> • Subproperty • <ASP:Label font-size=“14“ runat=“server“> • Controllo gestione lato server di eventi • <ASP:Button OnClick=“MyClick“ runat=“server“> Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 24 12 ASP.NET Gestione dello stato HTTP è stateless ASP.NET fornisce una gestione dello stato sia a livello applicazione che a livello sessione private void Page_Load(object sender,System.EventArgs e) { Session["Demo"]="ABCDEF"; } private void Page_Load(object sender,System.EventArgs e) WebForm1.aspx.cs, inizializza WebForm2.aspx.cs utilizza { textBox1.Text = (string)Session["Demo"]; } Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 25 Gestione dello stato Stato dell’applicazione • Una applicazione consiste di • File, pagine, moduli e codice eseguibile • Un direttorio virtuale e dei suoi sottodirettori • Variabili di stato dell’applicazione • Informazione globale • Regole implementative • Utilizzo di risorse di sistema • “Lock” e “unlock” dell’informazoine globale • Attenzione alle variabili globali in ambienti multithread • Perdita dello stato quando l’host viene “distrutto” • Nessuna condivisione dello stato fra Web forms Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 26 13 Gestione dello stato Stato della sessione • Cos’è una sessione? •Limitata a una applicazione logica •Contesto in cui un utente comunica con un server • Funzionalità •Richiesta di identificazione e classificazione •Memorizzazione di dati fra richieste multiple •Eventi sessione •Rilascio di dati della sessione Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 27 Sicurezza Motivazioni della sicurezza • Prevenire l’accesso a certe aree del Web server • Memorizzare dati sensibili dell’utente Configurazione della sicurezza • tag <security> nel file Config.web Autenticazione, Autorizzazione, Impersonificazione Code Access Security • Sei proprio il codice che mi hai detto di essere? • Protezione del server da codice „cattivo“ Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 28 14 Sicurezza Authentication • None • Windows • Forms • Passport Authorization Impersonation Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 29 Sicurezza Autenticazione • Valida le ceredenziali dell’utente • Fornisce un’identità autenticata • Tipi di autenticazione •Windows, integrata con IIS 5.0 •Passport, servizio centralizzato di MS •Cookie, attaccati alla richiesta Autorizzazione • Determina se una richiesta è permessa • Autorizzazioni a livello file e URL Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 30 15 Sicurezza Impersonificazione • IIS autentica l’utente • Si passa un token all’applicazione ASP.NET • ASP.NET impersona il token ricevuto • Viene permesso l’accesso in accordo con la configurazione NTFS Code Access Security • Caratteristica del framework .NET • Verifica l’identità del codice e da dove viene • Specifica quali operazioni il codice è abilitato a fare Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 31 Configurazione di ASP.NET File Web.CONFIG <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.web> <compilation defaultLanguage="c#" debug="true"/> <identity impersonate="true" userName="DOMAIN\User" password="123dfget252"/> <authentication mode="Forms"> <forms name="AdvWorks“ loginUrl="logon.aspx"/> </authentication> <authorization> <deny users="?"/> </authorization> Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 32 16 Configurazione Concetti e architetture • File di configurazione: web.config • Scritto in XML, leggibile e scrivibile a mano • Il file è mantenuto nello stesso direttorio dell’applicazione • I cambiamenti sono individuati automaticamente • Architettura a configurazione gerarchica • Vengono definiti il direttorio corrente e tutte le sue sottodirectory Root Dir web.config Sub Dir1 Sub Dir2 Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 33 Configurazione Possibili configurazioni di default e personalizzate •Il file config.web di default è in %windir%\Microsoft.NET\Framework\Version • Contiene un insieme standard di handler di sezioni di configurazione (configuration section) • Gestione del browser capabilities, messaggi di errore, ecc. •Configurazione personalizzata • Possibile estendere l’insieme degli handler • Implementa l’interfaccia: System.Web.Configuration.IConfigurationSectionHandler •Problemi con • Direttori virtuali • File che non sono ASP.NET Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 34 17 Configurazione Esempio di web.config <configuration> <configsections> <add names=“httpmodules“ type=“System.Web.Config. HttpModulesConfigHandler“/> <add names=“sessionstate“ type=“...“/> </configsections> <httpmodules> <!--- http module subelements go here --> </httpmodules> <sessionstate> <!--- sessionstate subelements go here --> </sessionstate> </configuration> Progrmmazione GIS - Vittorio Maniezzo - Università di Bologna 35 18