150 likes | 291 Views
Introduzione ad ASP.net. Cos’è ASP .net. Evoluzione di ASP Indipendente dal browser. Architettura dei file di ASP .net. Interoperabilità dei linguaggi (VB .net, C#, …) Stesso ambiente di sviluppo Stesse classi e namespaces ASP .net Codice delle pagine compilato
E N D
Cos’è ASP .net • Evoluzione di ASP • Indipendente dal browser
Architettura dei file di ASP .net • Interoperabilità dei linguaggi (VB .net, C#, …) • Stesso ambiente di sviluppo • Stesse classi e namespaces • ASP .net • Codice delle pagine compilato • Uso di linguaggio non di scripting ma VB.net,C#, Jscript .net • Separazione fra HTML e codice
Vantaggi di .net • ADO .net • Accesso ai dati anche in modalità disconnessa • Installazione rapida • Assembly e file auto descrittivi • Assembly pubblici e privati • Sicurezza • Assembly contiene informazioni per la sicurezza e check di codice modificato (algoritmi hash) • Web services
Message Queuing COM+ (Transactions, Partitions, Object Pooling) IIS WMI The .NET Framework VB C++ C# Perl Python … Web Services User Interface ASP.NET ADO.NET: Data and XML .NET Framework Class Library Common Language Runtime Win32
Caratteristiche di C# • Completamente OO, a ereditarietà singola,compreso interfacce, funzioni virtuali e sovraccarico degli operatori • Insieme di tipi standard (Common Type System) • Supporto per la generazione automatica di documentazione • Accesso alla libreria .net e anche a chiamate API • Orientato alla programmazione senza uso di puntatori • Utilizzabile per le pagine asp. net
Namespaces System Collections IO Security Runtime Configuration Net ServiceProcess Diagnostics Reflection Text Globalization Resources Threading
Cosa serve per C# e ASP.net • Necessario il net. Framework, scaricabile dal sito della Microsoft • Ambiente di sviluppo: visual studio .net oppure versioni mirate (Visual Studio Web Developer) • Ciclo di vita di una pagina aspx
ASP .Net • Una pagina ASP.NET è detta "web form" ed il modello di programmazione è un modello basato sui moduli. Si è cercato di giungere ad un modello per far si che, un'applicazione web somigliasse il più possibile ad un'applicazione desktop a finestre. • Un'applicazione ASP.NET quindi consiste in un insieme di web form, ognuno dei quali contiene oggetti.Sono oggetti ospitati ad esempio i pezzi di codice lato client (HTML), i controlli server ed altri oggetti ereditati ad esempio tramite la direttiva Import. • La classe compilata (assembly) viene scritta su disco e sopravvive in caso di reboot della macchina server, cioè non serve ricompilarla.
Asp .NET • Quando un client richiede una pagina con estensione .aspx, sul server, i componenti che appartengono a quella pagina vengono compilati in un'unica unità. Questa unità è una classe che eredita dalla classe Object.Control.TemplateControl.Page. • Per questa classe Page può essere creata un'istanza ogni volta che viene richiesta la pagina aspx. L'oggetto risultante viene utilizzato per elaborare le richieste in arrivo e restituisce i dati al client richiedente. • La classe Page fa poi da contenitore per tutti i componenti appartenenti ad una pagina che sono essi stessi oggetti. • Non è lo scopo di questa guida esaminare dettagliatamente le classi del Framework .NET ma evidenzieremo alcuni aspetti della classe Page
ASP .net • La pagina asp.net extende una classe di base Object.Control.TemplateControl.Page • Viene creata un'istanza ogni volta che viene richiesta la pagina aspx. L'oggetto viene utilizzato per elaborare le richieste in arrivo e restituisce i dati al client richiedente. • La classe Page fa poi da contenitore per tutti i componenti appartenenti ad una pagina che sono essi stessi oggetti. • In visual Web Developer 2010 oltre alla pagina .asp che contiene l’HTML e i controlli per la parte di front-end viene creato anche (come nei window form): • Un file .cs che contiene il codice legato agli eventi • Un file designer.cs che contiene i controlli inseriti nella pagina aspx
Classe Page • Alcune delle proprietà della classe Page: • Application Per ogni applicazione web, vi è un'istanza di questo oggetto che è condivisa da tutti i client che accedono all'applicazione. • Cache Serve per archiviare dei dati che possono rimanere inalterati tra una richiesta di pagina el'altra. • EnableViewState Valore booleano che indica se i comandi server debbano o no mantenere il proprio ViewState • IsPostBack Indica se la pagina è caricata per la prima volta • Request Consente di accedere alle informazioni sulla richiesta HTTP • Response Consente di accedere e modificare la risposta HTTP • Session Riferimento all'oggetto Session che gestisce la sessione corrente • Alcuni metodi della classe Page • DataBind Associa i dati • FindControl Consente di trovare un comando nella pagina • MapPath Recupera il percorso fisico di uno specifico percorso virtuale
Post Back • Prima dell'arrivo di ASP.NET, era usuale l'elaborazione degli input degli utenti, mediante 2 pagine. La prima pagina, era statica e conteneva un tag <form> che inviava (tramite l'attributo action) una serie di campi ad seconda pagina, dinamica, la quale si occupava di elaborare i valori inviati. • Una seconda tecnica era quella di avere il form in una pagina dinamica che inviava informazioni a se stessa. Nel form venivano usati dei campi nascosti (hidden) per passare alcune informazioni relative allo stato della pagina. Grazie a questo meccanismo si poteva capire se la pagina fosse stata richiesta per la prima volta o se avesse effettuato un post su se stessa, per poi agire di conseguenza. Questa tecnica è chiamata post back. Il post back è implementato in ASP.NET in modo invisibile al programmatore attraverso il controllo server etichettato <form runat="server">. <form runat="server"> .... vari controlli ... </form> • Questo equivale a • <form method=post action="nostra_pagina.aspx" runat="server">.... vari controlli ...<input type="hidden" name="isPostBack" value="true"></form> • Il form server side è indispensabile per gestire i controlli server (dall'area di testo alla GridView) si può omettere solo se non si prevede una interazione con la pagina. • L'attributo method predefinito è post e non get come in HTML, ed i valori sono disponibili ogni volta nella collezione Request.Form come in ASP.
Postback • Con la stessa tecnica viene mantenuto lo stato di alcuni controlli grazie alla variabile ViewState. • Il ViewState è una variabile stringa, il cui valore, come si può notare nell'esempio, è codificato e serve per ricostruire lo stato della pagina, in quanto le comunicazioni HTTP client-server sono prive di stato. • Se leggiamo il sorgente di una pagina generata da un web form, notiamo la presenza del ViewState: • ...<body><form name="ctl00" method="post" action="orizzontale_b.aspx" id="ctl00"><div><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTc0MDEwNTM2MWRkrh4HGxooxoD8swfeDRec5C+Aedw=" /></div>... • La postback architecture ci da la possibilità di realizzare pagine HTML contenenti controlli con cui l'utente può interagire. I controlli scatenano eventi ed è compito dello sviluppatore realizzare gli opportuni gestori di eventi per gestire l'interazione.
Eventi principali di una pagina aspx • Quando effettuiamo la richiesta di una web form, vengono sollevati alcuni eventi, fra cui i principali sono: • Page_Init generato quando la pagina viene inizializzata • Page_Load generato quando la pagina viene caricata • Page_Unload generato quando la pagina viene scaricata dalla memoria • La differenza tra il Page_Init ed il Page_Load è che nel Page_Init il ViewState non è stato ancora caricato, per cui i comandi mantengono i valori predefiniti anziché i valori impostati durante il postback. • Per gestire l'evento Page_Load, si ricorre di frequente alla proprietà IsPostBack della classe Page. Se IsPostBack è vera, ci troviamo in un contesto di postback, vale a dire che la pagina è stata caricata una prima volta ed è stata poi inviata al server in seguito al verificarsi di un evento sul client. Se IsPostBack è falsa, la pagina è stata caricata per la prima volta.