...

Applicazioni_ASPNet

by user

on
Category: Documents
10

views

Report

Comments

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
Fly UP