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