Asp net (versione 1 e 2)

2,704 views
2,572 views

Published on

ASP.NET 2005

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,704
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Asp net (versione 1 e 2)

  1. 1. Microsoft ASP.NET ACTIVE SERVER PAGE .NETIng. Felice Pescatorefelice.pescatore@poste.it
  2. 2. ADO.NET: Compendi Consigliati Autori: • msdn2.microsoft.com/it-it/library/default.aspx •Francesco Balena • www.ugidotnet.org •Dino Esposito • www.aspitalia.com •Marco Bellinaso • www.dotnet2themax.it •David Sheppa
  3. 3. ASP.NET: introduzione ASP.NET è una tecnologia lato server per lo sviluppo di WebApplication basate sul Framework .NET di cui è parte integrante. ASP.NET ASP HTML
  4. 4. Active Server Page.Net Introduzione
  5. 5. 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 IIS/Apache Richiesta HTTP default.htm Risposta HTTP
  6. 6. ASP.NET: richiami, 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 dall’utente  Es. ripresentare le informazioni digitate <INPUT TYPE=“TEXT” NAME=“txtNome” VALUE=<%=Request.QueryString(“txtNome”)%> >
  7. 7. 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 <p>Ciao Ciao</p> <br> <font color=red>Testo</font> Tag HTML: •Contenuti in un file di testo •Memorizzati su un Server •Richiesti via Http dal browser •Interpretati sul client
  8. 8. ASP.NET: richiami, Classi ASP Client Server http://www.dcc.com/equipment/catalog_type.asp? IIS ProductType=rock+shoes Richiesta HTTP ASP engine Risposta HTTP Esecuzione JScript VB Script ADO default.asp Recupero risultati
  9. 9. ASP.NET: richiami, Classi ASP • Invio dati al server: <FORM action=“NomePagina” method=“XXX”> <INPUT TYPE=“Text” NAME=“txtNome”> <INPUT TYPE=“Text” NAME=“txtCognome”> <INPUT TYPE=“Submit”> </FORM> • 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 <% Response.Write(“Ciao”)%> • Request Object, Consente di gestire la richiesta Http <% nome=Request.QueryString(“txtNome”) cognome =Request.QueryString(“txtCognome”) Response.Write(“Ciao” & nome & cognome)%>
  10. 10. ASP.NET: richiami, Classi ASP - Vantaggi  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
  11. 11. ASP.NET: richiami, Classi ASP - Vantaggi  Solo codice script: Povertà di linguaggi, Utilizzo limitato di librerie, Lentezza in esecuzione (relativa)  Sorgenti non protetti dall’infrastruttura  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
  12. 12. ASP.NET: l’evoluzione• 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)
  13. 13. Active Server Page.Net Architettura
  14. 14. ASP.NET: dotNet Framework Managed Application Unmanaged Base Class Library Application Common Language Runtime OPERATING SYSTEM Common Language Runtime: interoperabilità, sicurezza, garbage collection, versioning, …. Base Class Library: GUI, collection, threads, networking, reflection, XML, …
  15. 15. ASP.NET: dotNet Framework Managed Application Web Application Unmanaged Web Form – Web Services Base Class Library Application ASP.NET Common Language Runtime Common Language Runtime Web Server (IIS) OPERATING SYSTEMASP.NET Web Form: Web GUI (object – oriented, event – based, browser indipendent Web Services: serivizi distribuiti su RPC (SOAP, HTTP)
  16. 16. 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 nell’ambito di una directory virtuale su di un web applicationserver” presentation middle tier data tier Internet Web Services Db Web Form (sample.aspx) Applicazioni Distribuite
  17. 17. 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 l’incartamento 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.
  18. 18. 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 un’applicazione 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
  19. 19. 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 dell’applicazione • WebForm and Code-behind page, ovvero le pagine di design e le pagine con il codice
  20. 20. ASP.NET: Configurazione (1) L’intero 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 dell’applicazione; • 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. <configuration> <configsections> <add names=“httpmodules“type=“System.Web.Config.HttpModulesConfigHandler“/> <add names=“sessionstate“ type=“...“/> </configsections> <httpmodules> <!---http module subelementsgo here --> </httpmodules> <sessionstate> <!---sessionstatesubelementsgo here --> </sessionstate> </configuration> esempio di web.config
  21. 21. ASP.NET: Configurazione (2) Ogni web application eredita la configurazione di base contenuta nel file machine.confing contenuta nel path di installazione del framework stesso (%windir%Microsoft.NETFrameworkVersion). machine.config Root (web.config) Sub Dir (web.config) Il file machine.config contiene: • un insieme standard di handler di sezioni di configurazione(configuration section); • gestione del browser capabilities, messaggi di errore, ecc.
  22. 22. ASP.NET: la nostra prima applicazione ASP.NET Se proviamo ad aprire la pagina Default2.aspx (in source mode) vedremo qualcosa di simile: <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html> Dov’è finito il codice
  23. 23. ASP.NET: la nostra prima applicazione ASP.NET Il Codice in una Web Application ASP.NET può essere: .cs 1. code inline: i frammenti di codice del linguaggio di .aspx programmazione scelto sono “iniettati” nel template HTML della pagina unitamente ai nuovi tag (stile Classic ASP, PHP); 1. 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 dell’estensione relativa al linguaggio (es: default.aspx.cs, default.aspx.vb) .
  24. 24. ASP.NET: Layout delle directory di una web application Code Inline Code Behind (DLL…) (File .cs, .vb, ecc)
  25. 25. ASP.NET: esempio di pagina con code inline <html> <head> <title>ASP.NET Page -CodeInline</title> </head> <form runat="server"> <body> <ASP:Label id="Etichetta"runat="server" /> <ASP:TextBox id="CasellaTesto"runat="server"Columns="30" /> <br><br> <ASP:Button id="InviaTesto"runat="server"OnClick="VisualizzaTesto" /> <br><br> <ASP:Label id="Testo"runat="server" /> </body> </form> <html> <SCRIPT LANGUAGE="C#" RUNAT="server"> 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 >>"; } </SCRIPT>
  26. 26. ASP.NET: esempio di pagina con code behind (1) <%@ PageInherits="Esempio.aspx.cs" Src=“esempio" %> <html> <head> <title>ASP.NET Page -Code Behind</title> </head> <form runat="server"> <body> <ASP:Label id="Etichetta"runat="server" /> <ASP:TextBox id="CasellaTesto"runat="server"Columns="30" /> <br><br> <ASP:Button id="InviaTesto"runat="server"OnClick="VisualizzaTesto" /> <br><br> <ASP:Label id="Testo"runat="server" /> </body> </form> <html> ASPX page La parte di layout è identica alla precedente.
  27. 27. ASP.NET: esempio di pagina con code behind (2) usingSystem; usingSystem.Web.UI; usingSystem.Web.UI.WebControls; public class Esempio : Page { protected LabelEtichetta, Testo; protected TextBox CasellaTesto; protected Button InviaTesto; protected 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; } protected voidPage_Load(object source,EventArgse) { Etichetta.Text="Inserisci dei caratteri:"; InviaTesto.Text="Invia >>"; ASPX.CS page } }
  28. 28. ASP.NET: ereditarietà Il Code Behind non è un’appendice della pagina ma la classe da cui viene ereditata la pagina public Event EventHandler Load System.Web.UI.Page public bool IsPostBack {get;} .dll public HttpRequest {get;} public HttpResponse {get;} Public txtName as S.W.U.TextBox .VB Public Class Codice Sub Page_Load(x,y) Inherits S.W.U.Page Response.Write “x” End Sub La classe contiene le interfacce della classe base + txtName .aspx <asp:TextBox Id=“txtName” /> @Page Inherits=“Codice” La pagina eredita la Classe Codice Quindi le nuove proprietà, eventi e metodi rispetto a Page
  29. 29. ASP.NET: sintassi (1) Direttive: <%@Page language=“VB“%> Blocchi di codice dichiarativo: <script runat=“server“ [language = ...]> [ lines of code ] </script> Blocchi di codice: <% [ inline code or expression ] %> ControlliHTML: <HTMLtagrunat=“server“ [attribute = ...]> </HTMLtag>
  30. 30. ASP.NET: sintassi controlli server (web control) (2) Controlli dati server: <ASP:TextBoxid=“MyTb1“ runat=“server“> Proprietà lato server: <ASP:TextBoxmaxlength=“80“ runat=“server“> Subpropery: <ASP:Label font-size=“14“ runat=“server“> Controllo gestione lato server eventi: <ASP:Button OnClick=“MyClick“ runat=“server“> Identificatori di oggetti server-side <object id=“id“ runat=“server“ identifier=“idName“> Include server-side <!--#include pathtype= filename--> Commentiserver-side <%--comment block--%>
  31. 31. ASP.NET: elementi di una pagina Ogni pagina ASP.NET ha tipicamente le seguenti sezioni: • Page directives (@Page, @Register, @Assembly, @Import…): impostazione dell’ambiente, 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).
  32. 32. ASP.NET: elementi di una pagina (2) Vediamo un esempio di uso delle direttive <%@Page Language=“VB” Explicit=“True” %> Codice VB (uno solo per pagina) Dichiarazione variabili obbligatoria <%@Assembly name=“GestioneCorsi” %> (abilitare sempre) <%@Import namespace=“Corsi” %> Referenzia l’Assembly GestioneCorsi.dll ---codice--- Queste direttive corrispondono a Vbc.exe /optionexplicit+ /r:GestioneCorsi.dll ElencoCorsi_aspx
  33. 33. 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!
  34. 34. ASP.NET: vediamo un esempio più concreto (1) <html> <script language=“VB“ runat=server> Sub SubmitBtn_Click(SenderAs Object, E As EventArgs) Message.Text = “Hi “ & Name.TextEnd Sub </script> <body> <form action=“thisfile.aspx“ method=post runat=server> <h3> Name: <asp:textbox id=“Name“ runat=server/> <asp:button type=submit text=“LookUp“OnClick=“SubmitBtn_Click“ runat=server/> <p> <asp:label id=“Message“ runat=server/> </p> </form> </body> </html> in questo caso, vista la semplicità, usiamo codice inline
  35. 35. ASP.NET: vediamo un esempio più concreto (2)
  36. 36. ASP.NET: il modello di esecuzione Client Server IIS ASP.NET RUNTIME Parse .aspx file Generate page class Instantiate controls Response
  37. 37. ASP.NET: processo di compilazione (1) ASPX Generazione Code- Parsing (2) (3) behind Engine file Request (1) ASPX Class File Creazione File Istanza (2b) su Request (1b) Disco Response (5) Page Response (3b) Class Istanza, Ese cuzione e Rendering (4)
  38. 38. 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 • L’assembly 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 come di consueto per la MyApp.dll piattaforma dotNet (e non Pic1.jpg solo) ogni assembly ASSEMBLY 2 contiene un file manifest Shared name metadata MyApp.dll che descrive: lista dei file dell’assembly, informazioni metadata sui tipi, nomi, …
  39. 39. ASP.NET: gestione della richiesta dal Server (1) HTTP Request ASP.NET non usa ISAPI/ASP .ASPX ISAPI extension redirige le richieste sul worker .ASMX process .ASHX .DISCO .SOAP ISAPI ASP.NET Extension ASP.DLL ASPNET_ISAPI.DLL Pipeline Manager Named Pipe INETINFO.exe INETINFO.exe ASPNET_WP.EXE Worker Process
  40. 40. ASP.NET: gestione della richiesta dal Server (2) Application Application Web Garden Pool 1 Pool 2 WWW INETINFO Service W3WP.exe W3WP.exe W3WP.exe ASP.NET ISAPI ISAPI ASP.NET ISAPI Process Mgr Config Mgr CLR Application Extensions CLR Application Domain (ASP, etc.) Domain metabase CLR Application CLR Application Domain ISAPI Filters Domain HTTP.sys Architettura interna di IIS 6
  41. 41. ASP.NET: gestione della richiesta dal Server (3)  Le richieste sono processate nella pipeline all’interno del Worker Thread  La pipeline contiene classi HttpRuntime  I Moduli sono “interceptor” opzionali  HttpContext è la classe accessibile nella pipeline ASP.NET worker thread 1 HttpRuntime HTTP Handler Modulo 1 Modulo 2 Class Pagina1.aspx ASP.NET worker thread 2 HttpRuntime HTTP Handler Modulo 1 Modulo 2 Class Pagina2.aspx ASPNET_WP.EXE
  42. 42. ASP.NET: gestione della richiesta dal Server (4) Proprietà della classe HTTPContex Tipo Nome Identificatore Descrizione HttpContext Current Contesto corrente HttpRequest Request Richiesta Http HttpResponse Response Risposta Http HttpServerUtility Server URL Cracking HttpSessionState Session Sessione per client HttpApplicationState Application Property Bag applicativa HttpApplication ApplicationInstance Contesto Applicativo IHttpHandler Handler Handler della chiamata IDictionary Items Property Bag per richiesta Exception Error Primo errore incontrato IPrincipal User Security ID del chiamante
  43. 43. 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 l’esecuzione) a cui corrispondono una serie di eventi gestibili per personalizzarne il funzionamento: • PreInit (si verifica prima dell’inizialiazzazione): 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
  44. 44. ASP.NET: eventi, server round trip (1) event Web Client message Server Parse Message Event chiama un appropriato event handler Event Handler response Control Events Page_Load 1. Change Events Textbox1_ChangedGli eventi si verificanosul browser (lato client) 2. Action Events Button1_Clickma vengono Page_Unloadgestiti lato servercon l’invio di messaggi
  45. 45. 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 L’interazione avviene tramite un round-trip, i.e., una richiesta POST inviata al server. Quest’ultimo, dopo aver elaborato
  46. 46. ASP.NET: Debugging: lato Server e lato Client, Tracing Il Debugging la Server viene abilitato nel file <system.web> di configurazione web.confg inserendo la … seguente istruzione: <compilation debug=“true” /> …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, è l’utilizzo dell’istruzione “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 l’output sulla pagina o richiamando trace.axd <trace enabled="true" pageOutput="false" /> <%@ Page Language="C#" ... Trace="true"%>
  47. 47. Active Server Page.Net HTML & WEB Controls
  48. 48. 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(<a>), HtmlTable(<table>) 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:textbox>)
  49. 49. ASP.NET: controlli lato Server, HtmlControl
  50. 50. ASP.NET: controlli lato Server, WebControl
  51. 51. ASP.NET: HTML Control vs. Web Control <input type=“text” value=“default” runat=“server” id=“txtName” > • 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") <asp:TextBox runat=“server” id=“txtName” Text=“default”></asp:TextBox> • 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
  52. 52. 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 all’ora un’applicazione 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 l’oggetto System.Web.UI.StateBag, che permette di codificare in un campo nascosto (__VIEWSTATE) lo stato corrente della pagina. Esempio: <html> <head> <title>ASP.NET Page -Code Behind</title> </head> <form name="_ctl0"method="post" action="esempio2.aspx"id="_ctl0"> <input type="hidden"name="__VIEWSTATE“ value="dDw0NTEzMTYzODY7dDw7bDxpPDE+Oz47bDx0PDtsPGk8MT47aTw1PjtpPDc+Oz47b Dx0PHA8cDxsPFRleHQ7PjtsPEluc2VyaXNjaSBkZWkgY2FyYXR0ZXJpOjs+Pjs+Ozs+O3Q8cD xwPGw8VGV4dDs+O2w8SW52aWEgXD5cPjs+Pjs+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w8SS BjYXJhdHRlcmkgY2hlIGhhaSBpbnNlcml0byBzb25vOiBzZHNkOz4+Oz47Oz47Pj47Pj47PvzsJ FVQPE7eYg9Hq1xLtjUAVgxW" /> Il ViewState è utilizzabile anche programmaticamente ViewState.Add(“NomeUtente”, “Mauro”) e disattivato a livello di pagina <%@ Page ... EnableViewState="false"%>. In tal caso, però, ad ogni iterazione i controlli perderanno il proprio stato
  53. 53. ASP.NET: Postback Il Postback è un evento che scatta la seconda volta che si arriva su una pagina. Il Postback si verifica in seguito ad una POST HTTP: • Submit di un bottone • Controlli server-side possono avere la proprietà AutoPostBack abilitata, utile per popolare altri controlli o disabilitarli L’uso più comune di questo evento è l’ottimizzare del codice eseguito nella pagina. Ad esempio: accedo una sola volta alle risorse costose (database). protected void Page_Load(..) { if (Page.IsPostBack == false) • Creazione di un sito web { • Posizionamento dei controlli // E’ il primo accesso alla pagina • View State // Accesso al database • Code-behind } • Post-back }
  54. 54. ASP.NET: i Validatori I Validatori sono controlli per la validazione dei controlli lato server in grado automaticamente di rilevare se il browser supporta la validazione lato client. Tra di essi si annoverano: • RequiredFieldValidator • CustomValidator (richiamo funzione JavaScript) • ValidatorSummary (message box) • RangeValidator • RegularExpressionValidator • CompareValidator Demo
  55. 55. ASP.NET: Data Control Grazie ai DataControl (ed il sottosistema Ado.Net 2) è possibile lavorare in modo versatile con dati provenienti da qualsiasi fonte dati e scrivendo una quantità di codice minimale. Tra di essi si annoverano: • GridView • DataList • DetailsView • ListView • Repeater Demo
  56. 56. ASP.NET: Navigation I Navigation Control permettono di realizzare velocemente varie tipologie di menù per navigare nelle varie pagine del sito ed evidenziare la posizione di navigatore attuale. Per utilizzarli è necessario creare il file sitemap.xml che si collega automaticamente ad essi. Tra di essi si annoverano: • SiteMapPath • Menu • TreeView Demo
  57. 57. ASP.NET: le Web Part Attraverso le Web Part è possibile creare pagine web contenenti aree modificabili dall’utente, come ad esempio accade per la pagina personalizzata di Google o di Live:Controlli fondamentali sono: • WebPartManager, deve essere presente in ogni pagina che utilizza le Web Part; • WebPartZone, identifica l’area in cui è possibile spostare un Controllo (anche User Control) • CatalogZone, indispensabile per il ripristino delle WebPart chiuse o l’apertura di nuove Demo
  58. 58. ASP.NET: Controlli per la gestione degli Utenti (1) Con la versione 2 di ASP.NET fanno la loro comparsa una nutrita serie di componenti server dedicati alla gestione degli Utenti. Prima di vederli all’opera attraverso una demo è necessario affrontare l’argomento Memebership e Role Management. ASP.NET prevede due possibilità di autenticazione: •Da Internet •Da una rete LAN (Local Area Network) Nel prosieguo ci riferiremo sempre all’autenticazione da Interent in quanto quella da rete Lan si basa sulle funzinalità di autenticazione proprie di Windows. La nuova release di ASP.NET ha introdotto inoltre: •Servizio delle appartenenze per la gestione degli utenti e delle credenziali utente; •Servizio di gestione dei ruoli per lapplicazione della protezione basata sui ruoli. Demo
  59. 59. ASP.NET: Controlli per la gestione degli Utenti (2), Strumento diAmministrazione Sito Web Per la configurazione di tutti gli aspetti relativi alla sicurezza della nostra applicazione Web, Visual Studio introduce lo Strumento Amministrazione sito Web. Si tratta di una pratica Web Application Visual Studio che permette di gestire in modo guidato gran parte delle impostazioni di sicureazza della nostra applicazione. Se non specificato diversamente tutti i dati relativi agli utenti, ai ruoli ai profili e alle altre impostazioni vengono salvate in un SQLServer DB dal nome: ASPNETDB contenuto nella solita directory App_Data. Per ogni nuova impostazione di sicurezza relativa ad una sottoarea viene creato un apposito file web.confing. E’ utile notare come sia il DB che i file di Configurazione non sono direttamente visibili nel Solution Explorer di VS. Demo
  60. 60. ASP.NET: Profili ASP.NET offre la gestione automatizzata dei Profili Utenti, sia per gli Utenti registrati sia per quelli anonimi (che poi è possibile salvare nel caso in cui l’utente si registri). I Profili permettono di salvare in modo automatizzato le impostazioni dell’utente, in modo da fornire aspetti personalizzati della Web Application. Per abilitare un profilo è necessario aggiungere un codice simile al seguente al file web.config della root. <profile> <properties> <add name="FirstName" allowAnonymous="true" /> <add name="LastName" allowAnonymous="true" /> <add name="FirstVisit" type="System.DateTime" allowAnonymous="true" /> </properties> </profile> Sarà poi possibile accedere al valore (lettura/modifica) dalla web form attraverso la sintassi: Profile.Oggetto Demo
  61. 61. Active Server Page.Net Master Page & Temi
  62. 62. ASP.NET: Master Page (1)
  63. 63. ASP.NET: Master Page (2) • Le pagine master definiscono la struttura e dei place holder (<asp:ContentPlaceHolder>) • Le pagine “figlie” referenziano la master e creano il contenuto (<asp:Content>) • Le pagine master sono trasparenti all’utente, il quale invoca solo le pagine content
  64. 64. ASP.NET: Master Page (3) • La proprietà Page.Master permette di ottenere un riferimento alla pagina Master dalla pagina Figlia. • Page.Mater è usata per avere accesso programmatico al contenuto della pagina Master: •Usare FindControl per weak typing; •Usare public property nella master Page per strong typing. Usiamo FindControl: Controllo dichiarato nella <asp:Label ID="Title" RunAt="server" /> pagina master Accesso dalla pagina figlia ((Label) Master.FindControl ("Title")).Text = "Orders";
  65. 65. ASP.NET: Master Page (4) Usiamo una proprietà Strong Typed: <asp:Label ID="Title" RunAt="server" /> nella Pagina Master . . . <script language="C#" runat="server"> public string TitleText Master.TitleText = "Orders"; { get { return Title.Text; } set { Title.Text = value; } } </script> Master.TitleText = "Orders"; nella Pagina Figlia
  66. 66. ASP.NET: demo Master Page • Creazione di un sito ex-novo • Aggiunta una pagina master • Aggiunta di una pagina che usa il template della pagina master • Controllo della pagina master dalla pagina content con weak typing
  67. 67. ASP.NET: Temi (CSS e Skin) I Temi definiscono la grafica della pagina, disponibili a partire dalla versione 2.0 di ASP.Net, e: • Sono un superset dei CSS (Cascading Style Sheets) • Assegnano un insieme di stili e attributi visuali agli elementi personalizzabili del sito • Sono strettamente legati ai temi di XP: impostare un tema è rapido e facile come impostare una proprietà • Si applicano a controlli individuali, a pagine o siti I Temi si dividono, a seconda del proprio scope, in: • Temi Locali: sono nella directory App_Themes • Temi Globali: sono visti da tutte le applicazioni web della macchina e si trovano sotto la cartella App_Themes del framewok; e possono includere: • File CSS: definizioni di stili da applicare agli elementi di un file HTML (richiedono HTML 3.2>); • Skin: set di proprietà e template che si possono applicare a uno o più controlli server side; • Immagini; • Template.
  68. 68. ASP.NET: Temi: creazione di CSS Si usa un tool integrato nell’ ambiente, che si attiva dal menu “Stili” dopo avere aggiunto un file CSS.
  69. 69. ASP.NET: Temi: file di Skin I File di Skin definiscono la grafica dei Controlli Server. Per applicarli a tutti i controlli dello stesso tipo in una pagina: • Creo una cartella per ogni skin sotto App_Themes; • Imposto lo skin nella direttiva di pagina StylesheetTheme; Se, invece, si desidera applicare lo Skin solo ad uno specifico controllo definisco nel file di Skin uno SkinID < asp:label runat="server" backColor="Yellow" SkinId="lblTitolo" /> che poi lo applico al controllo inserito nella pagina.
  70. 70. Active Server Page.Net Deployment
  71. 71. ASP.NET: Deployment di una web applicationSpesso sottovalutato il Deployment di un’applicazione è una fase fondamentale.Questo perché è il primo approccio con il nostro applicativo è proprio la fase di Setup che serisulta ostica e complicata facilmente porta il committente a desistere dall’impresa edarchiviare direttamente il nostro applicativo.Nel caso di una Web Application ASP.Net abbiamo principalmente quattro modalità di deploy: 1. XCOPY Deployment 2. Copy Web Site 3. Publish Web Site 4. SETUP ProjectsOgnuna delle tre tecniche ha diversi vantaggi dipendentidall’ambito di utilizzo del nostro prodotto e da chideve effettuare il setup della nostra applicazione.
  72. 72. ASP.NET: XCopy DeploymentLa tecnica più semplice per effettuare il Deploy è quella di copiare i file della vostra webapplication sul server di rilascio ed impostare una Virtual Directory.Il settaggio della Virtual Directory è richiesto anche da altre tecniche di deploy e vieneeffettuata attraverso la Internet Information Manager Microsoft Management Consol (MMC)accessibile dal Pannello di Controllo.Normalmente la copia dell’intera struttura di directory viene effettuato attraverso il copiandoXCopy, da qui il nome della tecnica stessa. Non effettua compilazione
  73. 73. ASP.NET: Copy Web SiteCopy Web Site è una nuova tecnica di deployment introdotta con ASP.Net 2 e Visual Studio2005 accessibile dal menu Website -> Copy Web Site... Menu option.Rispetto alla “tecnica” xcopy questa permette di scegliere agevolmente la destinazionescegliendo tra: • Folder Locale; • Directory Virtuale di IIS • Sito accessibile in FTP; • Sito accessibile in HTTP: Non effettua compilazione
  74. 74. ASP.NET: Deployment con compilazioneLe due tecniche viste precedentemente non prevedono la Compilazione della web application.Questo comporta fondamentalmente due problematiche: • Deploy del codice sorgente in chiaro; • Mancanza di verifica degli errori rilevabili dal compilatore; • Relativa lentezza alla prima esecuzione dell’applicazione;Per compilare una web application possiamo utilizzare 2 tecniche: 1. Precompilare il tutto attraverso il comando aspnet_compiler, con un’istruzione simile alla seguente: aspnet_compiler -p "C:MyDevelopmentWebSite1" -v / C:Staging 2. Usare Visual Studio 2005, selezionando Publish Web Site dal menu Build Compilazione
  75. 75. ASP.NET: Web Application Setup Project (1)Se si desidera realizzare un vera e propria procedura guidata per l’installazione della webapplication, è possibile ricorre al template Web Setup Project aggiungendolo alla vostraSolution. Scenario tipico di utilizzo è l’installazione su più nodi di un Web Server Cluster.Per fare ciò:1. Selezionate: • File, New Project (nuovo progetto) • Setup and Deployment • Web Setup Project2. A questo punto Visual Studio vi mostrerà la seguente finestra: Compilazione
  76. 76. ASP.NET: Web Application Setup Project (2)3. Aggiungiamo la web application al progetto: • Cliccate con il tasto destro nella Solution Explorer • Scegliete Add.. e poi Project Outputa questo punto si aprirà la seguente finestra in cui specificareil progetto di origine:
  77. 77. ASP.NET: Web Application Setup Project (3)4. Impostiamo le proprietà del progetto premendo F4 una volta selezionato nella Solution Explorer Property Purpose Author, Description, Manufacturer, Use all of these properties to identify / describe your ManufacturerUrl, ProductName, Subject, application and yourself. Title, and Version Here you can specify the icon to be displayed beside AddRemoveProgramsIcon your application in Windows Control Panels Add Remove Programs. Specify here whether or not a check is to be DetectNewerInstalledVersion performed to determine the existence of a new version already installed of your web application. Specify here whether you need an older version of RemovePreviousVersions your web application to be removed if a newer version is being installed. Some web applications requires the Internet Information Service to be stopped and then RestartWWWService restarted after the deployment of the application. Use this property to control such behavior.
  78. 78. ASP.NET: Web Application Setup Project (4)5. Eseguire la compilazione del Setup Project per ottenere il packaging MSI da distribuire.A questo punto siamo pronti a distribuire la nostra web application con un Setup che somiglia in tutto e per tutto a Setup di una classica Windows Application: Tra l’altro il Setup aggiunge anche l’opzione di Add/Remove nel pannello di Controllo di Windows.
  79. 79. ASP.NET: ConclusioniQuanto visto finora rappresenta una sintesi delle caratteristiche delframework ASP.NET 2.Lungi dal trattare tutti gli argomenti e soprattutto dal trattarli in modocompleto ed approfondito (servirebbe un corso universitario!), quantoesposto ha l’obiettivo di rendere un’idea generale dell’infrastruttura web diMicrosoft in modo da permettere al Developer di effettuare scelte mirate edare le basi per tutti gli approfondimenti necessari.

×