Comments
Description
Transcript
Applicazioni_ASPNet
ASP.NET con Visual Studio.NET Giuseppe Dimauro MSDN Regional Director [email protected] Code Architects s.r.l. Agenda Web Forms Applicazioni ASP.NET Sicurezza in applicazioni Web Configurazione e ottimizzazione Web Forms Cos’è una Web Form ? Modello del codice Ciclo di vita Eventi Server Side Controlli Server Validazione Web Forms Modello del codice Code Behind Forte disaccoppiamento tra la logica applicativa e quella di presentazione Object Oriented Event Driven Web Forms ASP.NET Page Life Cycle Simile ad applicazioni Win32 Gli eventi vengono scatenati quando la pagina viene creata Form_Initialize() Form_Load() Form_Activate() Form_Unload() ~ ~ ~ ~ Page_Init() Page_Load() Page_PreRender() Page_Unload() Web Forms Eventi Server Side Runat=“server” <form runat=“server”> <input type=button id=button1 OnServerClick=“Button1_Click” runat=“server” /> Button1_Click(Sender as Object, e as EventArgs) Button1.Text = “Save” Web Forms Server Controls Più di 40 controlli Built In Compatibiltà da HTML 3.2 in sù Gli eventi vengono propagati e gestiti sul server Controlli basilari textbox, checkbox, radio, button Controlli avanzati AdRotator, Calendar, DataGrid, Validator Web Forms Controlli semplici - basilari <asp:textbox id=text1 runat=server/> text1.text = “Hello World” <asp:checkbox id=check1 runat=server/> check1.checked=True <asp:button id=button1 runat=server/> button1_onClick() <asp:DropDownList id=DropDownList1 runat=server> DropDownList1.SelectedItem.Text = “Hello” Web Forms Controlli Server avanzati DataGrid Defined by <asp:datagrid /> Ordinamento delle colonne Editing in-line Tabelle HTML DataBinding Paging Web Forms Controlli Server avanzati Validazione Required Validator Control Range Validator Control Compare Validator Control Regular Expression Validator Custom Validator Control Esempio: <asp:RequiredFieldValidator ControlToValidate="txtName" ErrorMessage="Please Enter Your Name" runat="server" /> Agenda Web Forms Applicazioni ASP.NET Sicurezza in applicazioni Web Configurazione e ottimizzazione Applicazioni ASP.NET confronto con ASP tradizionale (global.asa) Application_OnStart Application_OnEnd Session_OnStart Session_OnEnd Applicazioni ASP.NET Eventi in Global.ASAX Prima richiesta Application_Start Prima richiesta per ogni utente Session_Start Ogni richiesta Application_BeginRequest Application_Authenticate Application_EndRequest Errori Application_Error Log out utenti / Time out Sessioni Session_End Web Server Shutdown Application_End Applicazioni ASP.NET Utilizzo degli eventi in Global.ASAX Application_BeginRequest Gestione di risorse virtuali Testo da includere ad ogni avvio di pagina Application_EndRequest Testo da aggiungere alla fine di ogni pagina Application_Error Invio di mail di alert Logging di errori Messaggi di errore personalizzati ASP.NET Applications Utilizzo degli eventi in Global.ASAX Session_End Logging di fine sessione. Application_End Logging di fine applicazione. Application_Start Caricamento di informazioni specifiche del sito ASP.NET Applications Salvare lo stato Applicativo Variabili globalmente visibili nell’applicazione Application(“NomeAzienda”) Lock e unlock di variabili applicative … Application.lock Application(“GlobalCounter”) = NewValue Application.unlock Applicazioni ASP.NET Stato per Sessione Variabili con visibiltà di sessione Visibili da qualsiasi pagina del sito Session(“UserID”) = 5 UserID = Session(“UserID”) Applicazioni ASP.NET ASP vs. ASP .NET State ASP Session State Solo “Server Affinity” Dipendenza da cookies Nessuna ”Fault Tolerance” ASP .NET Session State Supporto per Web Garden e Server Farm Funziona anche senza cookie Fault tolerance Applicazioni ASP.NET Configurazione del “Session State” Le informazioni di configurazione sono memorizzate in Web.Config <sessionState Inproc=“true” mode=“sqlserver” cookieless=“false” timeout=“20” sqlconnectionstring=“data source=127.0.0.1;user id=sa;password=“” stateConnectionString="tcpip=127.0.0.1:4 2424" /> </sessionState> Applicazioni ASP.NET Configurazione del “Session State” Mode InProc – Variabili di sessione convenzionali. Memorizzate nello spazio di indirizzamento del web server. Stateserver – Le informazioni di sessione sono archiviate su di un server esterno in memoria. SQLServer – Le informazioni di sessione sono salvate in un database SQL. Cookieless Determina se le sessioni possono essere “Cookieless” Valori possono essere true oppure false TimeOut Permette di impostare il timeout di default del sito web Agenda Web Forms Applicazioni ASP.NET Sicurezza in applicazioni Web Configurazione e ottimizzazione Sicurezza in applicazioni Web Concetti di security implementati Autenticazione Autorizzazione Impersonificazione Sicurezza in applicazioni Web Autenticazione Windows Basic Digest Integrated Passport Form Sicurezza in applicazioni Web Windows Authentication Impostabile tramite applet amministrativa di Internet Information Service (IIS) Sicurezza in applicazioni Web Windows Authentication Configurabile in ASP.NET attraverso il file Web.config <security> <authentication mode="Windows" /> </security> Sicurezza in applicazioni Web Windows Authentication Da codice risulta essere particolarmente semplice accedere alla identità dell’utente web Dim UserName As String UserName = User.Identity.Name Gruppi di utenti NT vengono rimappati automaticamente su ruoli ASP.NET If User.IsInRole(“Administrators”) Then… Sicurezza in applicazioni Web Form Authentication Il sito web gestisce autonomamente la sicurezza, non IIS IIS viene configurato per permettere accesso anonimo Web.Config è impostato in modo tale da forzare l’autenticazione attraverso form web applicative <authentication mode="Forms"> <forms loginUrl="Registration.aspx"> </forms> </authentication> <authorization> <deny users="?" /> </authorization> Ogni utente non autenticato verrà rediretto su “Registration.aspx” Sicurezza in applicazioni Web Form Authentication La form deve richiedere le informazioni: User ID e Password L’autenticazione avviene via codice: FormAuthentication.RedirectFromLoginPage(UserName, False) RedirectFromLoginPage Contrassegna un utente come autenticato Riporta il controllo sulla pagina web precedentemente intercettata Se l’utente o un link url ha richiesto esplicitamente la pagina di login il controllo passa a Default.aspx Permette la persistenza delle informazioni di autenticazione in un cookie Sicurezza in applicazioni Web Form Authentication - Dichiarativa Per siti molto semplice è possibile codificare lo User ID e la password direttamente nel file Web.config <credentials passwordFormat="clear"> <user name="MSDN" password="online" /> <user name="Guest" password="guest" /> </credentials> Sicurezza in applicazioni Web Form Authentication - Applicativa Autenticazione da codice applicativo SQL = “Select * From Users ” & _ “Where UserID = ‘” & UserName & “’” If UserFoundInDataBase then FormAuthentication.RedirectFromLoginPage(UserNam e,false) Else lblLoginError.Text = “User Not Found or Invalid Password” end if Sicurezza in applicazioni Web Ruoli Jane John Page RD RD Content Jill Jamie Jenny Admins Admin Content Sicurezza in applicazioni Web Ruoli Sviluppo di applicazioni basate su ruoli Accesso a pagine Contenuto delle paigine personalizzabile in dipendenza del ruolo Dopo il deployment è possibile assegnare gli utenti ai ruoli Sicurezza in applicazioni Web Ruoli Assegnazione dei ruoli da applicazione Sub Application_AuthenticateRequest(ByVal Sender As Object, ByVal e As EventArgs) If request.IsAuthenticated = True Then sql = “select role from roles where userid=‘“ & UserID & “’” ‘ Get Roles from Result Set context.User = New GenericPrincipal(user, roles) End If End Sub Sicurezza in applicazioni Web Ruoli Visualizzazione dei contenuti di una pagina web in dipendenza dei ruoli applicativi If User.IsInRole(“HumanRes”) Then cmdEditSalary.Visible = true End If Sicurezza in applicazioni Web Impersonificazione Windows Authentication Web.config <identity> <impersonation enable="true" name="username" password="password" /> </identity> Agenda Web Forms Applicazioni ASP.NET Sicurezza in applicazioni Web Configurazione e ottimizzazione Configurazione e ottimizzazione Web.Config File di configurazione del sito Fa parte del sito Mantiene buona parte delle informazioni di configurazione del sito web Manutenzione e deployment semplice Le modifiche hanno effetto immediato Configurazione e ottimizzazione Architettura di configurazione gerarchica Le impostazioni di configurazione di Web.Config sono ereditate gerarchicamente Configurazione della macchina (machine settings): (Winnt\Microsoft .NET\Version\) Web Application Root Directory Sotto directory Configurazione e ottimizzazione Architettura di configurazione gerarchica Le impostazioni possono essere indirizzate ad una particolare directory applicativa utilizzando il tag <location> <configuration> <location path=“/admin”> <system.web> <security> <authorization> <allow roles=“Admins”> </authorization> </security> </system.web> </location> </configuration> Configurazione e ottimizzazione Opzioni di configurazione personalizzabili Alcuni esempi: AppSettings CustomErrors Trace Settings Authentication Session Settings Browser Capabilities Configurazione e ottimizzazione Personalizzazione delle impostazioni Impostazioni custom in Config.Web <configuration> <appSettings> <add key="DSN" value="server=localhost… </appSettings> </configuration> Accesso da codice DSN = ConfigurationSettings.AppSettings("DSN") Configurazione e ottimizzazione Personalizzazione delle impostazioni Redirezione di pagine di errore: <customErrors mode="On"> <error statusCode="404" redirect="errorpage404.aspx" /> </customErrors> <customErrors mode=“RemoteOnly"> <error statusCode="404" redirect="errorpage404.aspx" /> </customErrors> Configurazione e ottimizzazione Personalizzazione delle impostazioni Tracing <trace enabled=“true" requestLimit="10" pageOutput=“true" traceMode="SortByTime" /> Configurazione e ottimizzazione Personalizzazione delle impostazioni Opzioni di trace Enabled Le informazioni di trace verranno arichiviate e saranno raggiungibili attraverso: http://site/trace.axd RequestLimit PageOutput Impostazione del limite di occupazione del trace Abilita il trace direttamente sulla pagina web. TraceMode Opzioni di ordinamento delle informazioni di trace. Le informazioni di trace possono essere ordinate per tempo o categoria. Configurazione e ottimizzazione Personalizzazione delle impostazioni Scrittura nel del file di log Trace.Write(“Page_Load”,”Entering Event”) Trace.Warn(“GetCustomer”,”Invalid Argument”) Configurazione e ottimizzazione Page Output Caching Pagine molto statiche Aumento delle performance molto elevato <%@ OutputCache Duration= "500" %> Configurazione e ottimizzazione Fragment Caching Porzioni dinamiche di una pagina Solo alcune parti della pagina sono statiche: Barra di menu Elenchi presi da database Possono essere raggrupati in uno “User Control” con caching attivato <%@ OutputCache Duration=“60" %> Configurazione e ottimizzazione API per gestire la cache Gestione della cache da Application Program Interface Cache.Insert( _ Key, _ Value, _ CacheDependency, _ AbsoluteExpiration, _ SlidingExpiration, _ Priority, _ PriorityDecay, _ Callback) Configurazione e ottimizzazione API per gestire la cache Key Chiave di lookup del valore di cache Value Entità applicativa da salvare – ricercare dalla cache CacheDependency La entità in cache può scadere (expire) in dipendenza di un file, una directory oppure quando un elemento in cache viene modificato. Configurazione e ottimizzazione API per gestire la cache AbsoluteExpiration Istante preciso in cui l’elemnto in cache scade. SlidingExpiration Intervallo di tempo di inattività dopo di che l’elemento in cache scade. Priority Priorità associata ad un elemento in cache. Scadono prima elementi con priorità inferiore. PriorityDecay “Fine tuning” per accelerare o decelerare la scadenza di un elemento. Configuration e ottimizzazione Tracing Tracing Informazioni temporali Informazioni riguardo alla gerarchia di controlli web “renderizzati” durante una sessione di “post-back”. L’ammontare in termini occupazione di “viewstate” utilzzato. Dimensioni in termini di HTML per ogni controllo visibile sulla pagina. Configuration and Monitoring Tracing Abilitare il tracing su una pagina specifica <%@ Page trace=true Language="vb" AutoEventWireup="false" Codebehind="Write_Trace_Info.aspx.vb" Inherits="Opt_Monitor.Write_Trace_Info"%> Comandi di trace inseriti direttamente nel codice Trace.Write(“Custom Trace”, “Begin Load DataSet”) Abbiamo visto … Web Forms Applicazioni ASP.NET Sicurezza in applicazioni Web Configurazione e Monitoraggio Risorse … Sito MSDN msdn.microsoft.com Siti relativi ad ASP.NET msdn.microsoft.com/library/dotnet/cpguide/cpconaspwebforms.h tm msdn.microsoft.com/library/dotnet/cpguide/cpconaspnetapplicati ons.htm msdn.microsoft.com/library/dotnet/cpguide/cpconaspstatemanag ement.htm msdn.microsoft.com/library/dotnet/cpguide/cpconoptimizingaspa pplications.htm msdn.microsoft.com/library/dotnet/cpguide/cpconsecuringaspnet webapplications.htm msdn.microsoft.com/library/dotnet/cpguide/cpconaspcachingfeat ures.htm msdn.microsoft.com/library/dotnet/cpguide/cpconaspnetconfigur ationconcepts.htm