Asp net (versione 1 e 2)

79
Ing. Felice Pescatore [email protected] Microsoft ASP.NET ACTIVE SERVER PAGE .NET

description

ASP.NET 2005

Transcript of Asp net (versione 1 e 2)

Diapositiva 1

Ing. Felice Pescatore

[email protected]

Microsoft ASP.NET

ACTIVE SERVER PAGE .NET

1

ADO.NET: Compendi Consigliati

msdn2.microsoft.com/it-it/library/default.aspx

www.ugidotnet.org

www.aspitalia.com

www.dotnet2themax.it

Autori:

Francesco Balena

Dino Esposito

Marco Bellinaso

David Sheppa

ASP.NET: introduzione

ASP.NET una tecnologia lato server per lo sviluppo di WebApplication basate sul Framework .NET di cui parte integrante.

HTML

ASP.NET

ASP

Active Server Page.Net

Introduzione

4

ASP.NET: Richiami, i Protocolli

TCP/IP

Protocollo utilizzato per tutte le comunicazioni su Internet;

Protocollo a due livelli: TCP e IP

Hypertext Transfer Protocol (HTTP)

Protocollo per lo scambio di file

Utilizzato dai browser per accedere alle risorse

Si basa su TCP/IP

E Stateless

Client

Server

Richiesta HTTP

default.htm

IIS/Apache

Risposta HTTP

Ogni richiesta a se stante

Non esistono informazioni di stato in HTTP

Per ogni richiesta dobbiamo preoccuparci di inviare il contenuto

Ad esempio riempire i campi di un form con le informazioni digitate dallutente

Es. ripresentare le informazioni digitate

ASP.NET: richiami, HTTP

ASP.NET: richiami, Linguaggi di markup

Hypertext Markup Language (HTML)

Creazione di pagine Web

Si basa su tag che il browser interpreta per visualizzare il contenuto

Dynamic HTML

Client-side

Consente di manipolare la pagina sul client

Extensible Markup Language (XML)

Definizione entit generiche

Utilizzato per lo scambio di dati

Ciao Ciao


Testo

Tag HTML:

Contenuti in un file di testo

Memorizzati su un Server

Richiesti via Http dal browser

Interpretati sul client

Client

Server

Richiesta HTTP

ASP

engine

default.asp

IIS

JScript

VB Script

Esecuzione

ADO

Recupero risultati

Risposta HTTP

http://www.dcc.com/equipment/catalog_type.asp? ProductType=rock+shoes

ASP.NET: richiami, Classi ASP

8

Invio dati al server:

Le informazioni vengono inviate a NomePagina sotto forma di stringhe

GET

txtNome=xxxx&txtCognome=yyyy

POST

Come header HTTP

Response Object, Consente di gestire la risposta Http

Request Object, Consente di gestire la richiesta Http

ASP.NET: richiami, Classi ASP

Modello di programmazione semplice

Utilizzo di normali editor HTML

Possibilit di modificare i sorgenti in ogni momento

Produzione di qualunque contenuto in risposta

Nessuna forzatura per lo sviluppatore

Utilizzo di nuove tecnologie HTML 4 / CSS

Apertura verso altre tecnologie XML / XSLT

ASP.NET: richiami, Classi ASP - Vantaggi

Solo codice script: Povert di linguaggi, Utilizzo limitato di librerie, Lentezza in esecuzione (relativa)

Sorgenti non protetti dallinfrastruttura

Overlap fra codice e HTML

Debug e gestione errori

Non abbiamo oggetti, solo stringhe

Scrivere codice per qualsiasi cosa: Mantenere lo stato dei campi, Validazione client e server differenti, Output differente IE / NS / Device

Nessuna interazione con il SO

IIS/W2K per settaggi applicativi

ASP.NET: richiami, Classi ASP - Vantaggi

Basato sul Framework.Net e Linguaggio potente (VB, C#)

Compilazione:

Automatica

E modifiche del codice sempre ammesse

Web Form e Controlli

Propriet, Metodi, Eventi

Le pagine sono classi

Debug e gestione errori completa

Web.config per settaggi applicativi

Web Service integrati

Separazione fra codice e HTML (Code Behind)

ASP.NET: levoluzione

Active Server Page.Net

Architettura

13

ASP.NET: dotNet Framework

OPERATING SYSTEM

Unmanaged Application

Common Language Runtime

Base Class Library

Managed Application

Common Language Runtime: interoperabilit, sicurezza, garbage collection,

versioning, .

Base Class Library: GUI, collection, threads, networking, reflection, XML,

ASP.NET: dotNet Framework

ASP.NET

Web Form: Web GUI (object oriented, event based, browser indipendent

Web Services: serivizi distribuiti su RPC (SOAP, HTTP)

OPERATING SYSTEM

Unmanaged Application

Common Language Runtime

Base Class Library

Managed Application

Web Application

Web Form Web Services

ASP.NET

Common Language Runtime

Web Server (IIS)

ASP.NET: 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 nellambito di una directory virtuale su di un web applicationserver

Applicazioni Distribuite

Internet

presentation

middle tier

data tier

Web Services

Db

Web Form

(sample.aspx)

ASP.NET: tutto comincia con una richiesta...

La richiesta per simple.aspx arriva al Web Server:

IIS accetta ed autentica la richiesta;

IIS individua il modulo ISAPI che gestisce la risorsa;

Il modulo riceve lincartamento relativo alla richiesta, ovvero i dettagli;

Richieste per le risorse ASP.NET passano al modulo ISAPI aspnet_isapi.dll

Sul modulo sono mappate varie estensioni tipiche di applicazioni ASP.NET: aspx, asmx, ashx, axd

Altre estensioni (asax, ascx, config) sono bloccate.

ASP.NET: la nostra prima applicazione ASP.NET

Cominciamo subito a creare la nostra prima applicazione.

Useremo ovviamente Visual Studio in versione (2005 o 2008).

Tenete presente che in teoria possibile realizzare unapplicazione ASP.NET anche con il classico notepad.

Il primo passo quello di creare una nuovo Web Site, scegliendo la relativa opzione da Visual Studio, scegliere il linguaggio preferito (che pu differire di pagina in pagina) ed impostare il tipo di hosting:

File System

Http

Ftp

ASP.NET: la nostra prima applicazione ASP.NET

Creato la Web Application la ritroveremo nel Solution Explorer con una struttura similare alle seguente:

gi da questo semplice progetto vediamo alcuni elementi caratterizzanti:

Special Folder (in questo caso APP_DATA) sono cartelle speciali gestite la fremwork;

Web.config il file di configurazione principale dellapplicazione

WebForm and Code-behind page, ovvero le pagine di design e le pagine con il codice

ASP.NET: Configurazione (1)

Lintero funzionamento di una Web Application Asp.net configurabile attraverso uno o pi file web.config:

scritto in XML, editabile con qualsiasi editor di testo;

il file mantenuto nello stesso direttorio dellapplicazione;

i cambiamenti sono individuati automaticamente senza bisogno di riavvio.

La configurazione avviene attraverso una struttura gerarchica: praticamente possibile specificare una particolare configurazione per gli elementi contenuti in ogni directory.

esempio di web.config

ASP.NET: Configurazione (2)

Root (web.config)

machine.config

Sub Dir (web.config)

Ogni web application eredita la configurazione di base contenuta nel file machine.confing contenuta nel path di installazione del framework stesso

(%windir%\Microsoft.NET\Framework\Version).

Il file machine.config contiene:

un insieme standard di handler di sezioni di configurazione(configuration section);

gestione del browser capabilities, messaggi di errore, ecc.

ASP.NET: la nostra prima applicazione ASP.NET

Se proviamo ad aprire la pagina Default2.aspx (in source mode) vedremo qualcosa di simile:

Untitled Page

Dov finito il codice

ASP.NET: la nostra prima applicazione ASP.NET

Il Codice in una Web Application ASP.NET pu essere:

code inline: i frammenti di codice del linguaggio di

programmazione scelto sono iniettati nel template HTML

della pagina unitamente ai nuovi tag (stile Classic ASP, PHP);

code behind: codice e template HTML, arricchito con nuovi tag, risiedono in file distinti.

Ovviamente preferibile utilizzare il modello code behind che permette una netta separzione tra layout e codice applicativo consentendo anche la separazione dei compiti nel team di sviluppo (designer e sviluppatori). Nonostante ci con la versione 2 di ASP.NET, Microsoft ha introdotto la possibilit di utilizzare il code inline che risulta utili in contesti in cui necessario realizzare velocemente pagini poco complesse.

Le classi di code behind hanno lo stesso nome della pagina con aggiunta dellestensione relativa al linguaggio (es: default.aspx.cs, default.aspx.vb) .

.cs

.aspx

ASP.NET: Layout delle directory di una web application

(DLL)

(File .cs, .vb, ecc)

Code Inline

Code Behind

24

Root Directory

Bin

file .aspx

Root Directory

Bin

file .aspx (solo template)

Src

ASP.NET: esempio di pagina con code inline

ASP.NET Page -CodeInline





void VisualizzaTesto(object sender,EventArgse) {

Testo.Text=CasellaTesto.Text.Trim().Length==0 ?"Non hai inserito alcun carattere." :"I caratteri che hai inserito sono: "+CasellaTesto.Text;}

voidPage_Load(object source,EventArgse) {

Etichetta.Text="Inserisci dei caratteri:";

InviaTesto.Text="Invia >>";

}

ASP.NET: esempio di pagina con code behind (1)

>";

}

}

ASPX.CS page

Il Code Behind non unappendice della pagina ma la classe da cui viene ereditata la pagina

ASP.NET: ereditariet

System.Web.UI.Page

Public Class CodiceInherits S.W.U.Page

@Page Inherits=Codice

.dll

.VB

.aspx

public Event EventHandler Load

public bool IsPostBack {get;}

public HttpRequest {get;}

public HttpResponse {get;}

Public txtName as S.W.U.TextBox

Sub Page_Load(x,y)

Response.Write x

End Sub

La classe contiene le interfacce della classe base + txtName

La pagina eredita la Classe CodiceQuindi le nuove propriet, eventie metodi rispetto a Page

ASP.NET: sintassi (1)

Direttive:

Blocchi di codice dichiarativo:

[ lines of code ]

Blocchi di codice:

ControlliHTML:

ASP.NET: sintassi controlli server (web control) (2)

Controlli dati server:

Propriet lato server:

Subpropery:

Controllo gestione lato server eventi:

Identificatori di oggetti server-side

Include server-side

Commentiserver-side

ASP.NET: elementi di una pagina

Ogni pagina ASP.NET ha tipicamente le seguenti sezioni:

Page directives (@Page, @Register, @Assembly, @Import): impostazione dellambiente, registrazione controlli, caricamento assembly non ancora nella GAC, registrazione namespace, indicazione del linguaggio utilizzato;

Code section: gestori dei controlli server side della pagina; pu essere inline o separato

Script lato client, ad esempio javascritp;

Page layout: lo scheletro della pagina

Controlli (runat=server)

Controlli HTML, stessa API dei tag HTML;

Controlli Web, stessa funzionalit, API astratta;

Literals (puro testo);

Espressioni (, data binding).

ASP.NET: elementi di una pagina (2)

Vediamo un esempio di uso delle direttive

---codice---

Referenzia lAssemblyGestioneCorsi.dll

Codice VB (uno solo per pagina)

Dichiarazione variabili obbligatoria (abilitare sempre)

Queste direttive corrispondono a

Vbc.exe /optionexplicit+ /r:GestioneCorsi.dll ElencoCorsi_aspx

ASP.NET: tanti tipi di file ma tutto testo

ASP.NET prevede una serie di estensioni per identificare file con funzionalit diverse:

.aspx: file asp.net standar;

.ascx: file di controlli custom;

.asmx: web services;

.cs, vb: file di codice code-behind;

machine.config: file di configurazione del framework:

web.config: file di configurazione;

global.aspx:

Tutti questi file sono semplici file di testo, editabili con il notepad!

ASP.NET: vediamo un esempio pi concreto (1)

Sub SubmitBtn_Click(SenderAs Object, E As EventArgs)

Message.Text = Hi & Name.TextEnd Sub

Name:

in questo caso, vista la semplicit, usiamo codice inline

ASP.NET: vediamo un esempio pi concreto (2)

ASP.NET: il modello di esecuzione

IIS

ASP.NET RUNTIME

Parse .aspx file

Generate page class

Instantiate controls

Client

Server

Response

36

ASP.NET: processo di compilazione (1)

ASPX

File

Request (1)

ASPX

Engine

Parsing (2)

ClassFilesuDisco

Generazione (3)

Page

Class

Istanza, Esecuzione e Rendering (4)

Response (5)

Request (1b)

CreazioneIstanza (2b)

Response (3b)

Code-behindfile

37

ASP.NET: processo di compilazione (2)

Supporto per la compilazione del sorgente just-in-time e tutti gli elementi relativi vengono compilati in un assembly (single o multiple file)

Auto compilazione per .aspx .ascx .asmx .ashx

Lassembly generato viene memorizzato in una directory dietro le quinte

Reference automatica agli assembly comuni

Gli altri assembly sono referenziabili con direttive nella pagina

Shadow-copying per DLL (sovrascrivibili)

ASSEMBLY 1

MyApp.dll

Pic1.jpg

metadata

ASSEMBLY 2

MyApp.dll

metadata

Shared name

come di consueto per la piattaforma dotNet (e non solo) ogni assembly contiene un file manifest che descrive: lista dei file dellassembly, informazioni sui tipi, nomi,

38

ASP.NET: gestione della richiesta dal Server (1)

INETINFO.exe

ISAPI Extension Manager

ASPNET_WP.EXEWorker Process

HTTP Request.ASPX

.ASMX

.ASHX

.DISCO

.SOAP

ASP.DLL

ASP.NET Pipeline

INETINFO.exe

ISAPI Extension Manager

ASPNET_ISAPI.DLL

ASP.NET non usa ISAPI/ASP

ISAPI extension redirige le richieste sul worker process

NamedPipe

39

ASP.NET: gestione della richiesta dal Server (2)

WWW Service

Config Mgr

Process Mgr

HTTP.sys

Web Garden

W3WP.exe

ISAPI

Extensions

(ASP, etc.)

ISAPI Filters

Application Pool 2

W3WP.exe

ASP.NET ISAPI

CLR Application Domain

CLR Application Domain

W3WP.exe

ASP.NET ISAPI

CLR Application Domain

CLR Application Domain

Application Pool 1

metabase

INETINFO

Architettura interna di IIS 6

40

Le richieste sono processate nella pipeline allinterno del Worker Thread

La pipeline contiene classi HttpRuntime

I Moduli sono interceptor opzionali

HttpContext la classe accessibile nella pipeline

ASPNET_WP.EXE

HttpRuntimeClass

Modulo 1

Modulo 2

HTTP HandlerPagina1.aspx

HttpRuntimeClass

Modulo 1

Modulo 2

HTTP HandlerPagina2.aspx

ASP.NET worker thread 1

ASP.NET worker thread 2

ASP.NET: gestione della richiesta dal Server (3)

Propriet della classe HTTPContex

ASP.NET: gestione della richiesta dal Server (4)

TipoNome IdentificatoreDescrizioneHttpContextCurrentContesto correnteHttpRequestRequestRichiesta HttpHttpResponseResponseRisposta HttpHttpServerUtilityServerURL CrackingHttpSessionStateSessionSessione per clientHttpApplicationStateApplicationProperty Bag applicativaHttpApplicationApplicationInstanceContesto ApplicativoIHttpHandlerHandlerHandler della chiamataIDictionaryItemsProperty Bag per richiestaExceptionErrorPrimo errore incontratoIPrincipalUserSecurity ID del chiamante

ASP.NET: ciclo di vita di una pagina (intro)

Una pagina aspx ha un proprio ciclo di vita (stati in cui si trova la pagina durante lesecuzione) a cui corrispondono una serie di eventi gestibili per personalizzarne il funzionamento:

PreInit (si verifica prima dellinizialiazzazione): serve per

usare la propriet IsPostBack

creare controlli dinamici

applicare temi e pagine master dinamicamente

leggere e scrivere profili utente

Init (la pagina inizializzata): leggere e inizializzare le propriet dei controlli

Load: leggere e aggiornare le propriet dei controlli

PreRender: apportare modifiche ai contenuti della pagina

UnLoad (la pagina scaricata dalla memoria): operazioni di chiusura finale

43

ASP.NET: eventi, server round trip (1)

Gli eventi si verificano

sul browser (lato client)

ma vengono

gestiti lato server

con linvio di messaggi

Server

Web Client

Parse Message

Event

Event Handler

response

chiama un appropriato event handler

event

message

Page_Load

Page_Unload

Textbox1_Changed

Button1_Click

Control Events

1. Change Events

2. Action Events

44

ASP.NET: gli eventi, server round trip (2)

Con i controlli messi a disposizione da ASP.NET si possono costruire interfacce web che si comportano in modo simile alle interfacce utente delle comuni applicazioni stand-alone.

Ogni interazione con il browser (e.g., pressione di un pulsante, selezione di una voce da un menu a tendina) corrisponde ad un evento gestibile sul server .server

Linterazione avviene tramite un round-trip, i.e., una richiesta POST inviata al server. Questultimo, dopo aver elaborato

45

ASP.NET: Debugging: lato Server e lato Client, Tracing

Il Debugging la Server viene abilitato nel file di configurazione web.confg inserendo la seguente istruzione:

Il Debugging lato client pi complicato da impostare:

Abilitare il browser

Quindi o si fa partire il debugger da IE e poi si mette il breakpoint sul javascript;

o da Visual Studio ci si attacca al processo IE (funzionalit non supportata nella versione Express);

Un metodo molto efficace, infine, lutilizzo dellistruzione debugger; nel codice Javascrip. Attenzione per a non lasciarla in produzione!

Il Tracing si pu abilitare a livello di Applicazion (web.config) e di Pagina.

Attraverso la propriet pageOutput si abilita loutput sulla pagina o richiamando trace.axd

46

Active Server Page.Net

HTML & WEB Controls

ASP.NET: Controlli lato Server

I controlli lato server sono molteplici e normalmente vengono

raggruppati logicamente in famiglie.

I controlli sono contenuti nel namespace: System.Web.UI.Control e

di due tipi:

HTML Control (namespace System.web.ui.control.HTMLControl)

Si mappanodirettamente in elementiHTML

Attributi HTML

Esempi: HtmlAnchor(), HtmlTable()

Web Controls (namespace System.web.ui.control.WebControl)

Controlli astratti: non c mapping uno a uno con i controlli

HTML server

Modello oggetti tipizzati

Identificazione automatica del browser

Esempio: TextBox()

ASP.NET: controlli lato Server, HtmlControl

ASP.NET: controlli lato Server, WebControl

ASP.NET: HTML Control vs. Web Control

Mappano i tag HTML 1:1

Lavorano bene con gli Editor attuali

Ma il modello ad oggetti non strongly-typed

Ad esempio

txtName.Value = Roberto

txtName.SetAttribute("bgcolor", "red")

Modello ad oggetti consistente e strongly-typed

txtName.Text = Roberto

txtName.BackColor = Color.Red

Miglior supporto per VS.NET Designer

Rendering differente per browser

Esempio: Label

Funzionalit differenti per browser

Esempio: Validation Control

ASP.NET: lo stato dei controlli server

In precedenza facendo un richiamo sui protocolli abbiamo sottolineato come il protocollo HTTP sia stateless ovvero senza stato.

Come fa allora unapplicazione asp.net a mantenere traccia dello stato dei suoi controlli server?

Ebbene il sistema si chiama VIEWSTATE, per ricostruire in modo trasparente il contesto della richiesta, .NET mette a disposizione loggetto System.Web.UI.StateBag, che permette di codificare in un campo nascosto (__VIEWSTATE) lo stato corrente della pagina. Esempio:

ASP.NET Page -Code Behind