2.03k likes | 2.25k Views
BENVENUTI. Cenni di licensing. Individuale: 1 sviluppatore, 1 licenza (eccetto per MSDN Library) Indivisibile nei suoi componenti Installazioni illimitate ma accesso singolo Prodotti per Test & sviluppo, non utilizzabili in produzione . Eccezioni: Office in MSDN Universal Downgrade
E N D
Individuale: 1 sviluppatore, 1 licenza (eccetto per MSDN Library) • Indivisibilenei suoi componenti • Installazioni illimitate ma accesso singolo • Prodotti per Test & sviluppo, non utilizzabili in produzione. • Eccezioni: • Office in MSDN Universal • Downgrade • Si, ma senza utilizzo contemporaneo. • MSDN è la soluzione! • Perpetua (anche all’interno dei contratti di licensing)
Per tutti gli strumenti di sviluppo la Software Assurance è MSDN
Special Edition • Windows Server™ 2003 Standard Edition * • SQL Server™ 2000 Developer Edition* • Add-on Visual Studio Tools per Office • MS Learning E-books and Certification Exam Vouchers • Tre corsi multimediali di programmazione Microsoft .NET Framework (su ASP.NET, VB.NET e C++) • Diminuito il prezzo della versione full da 1.347€ a 992€ • Nuova opzione di aggiornamento: versione Upgrade per i possessori • dei tool standard della famiglia VS.NET 2002 e 2003.
Diverse versioni: Library, Operating System, Professional, Enterprise, Universal • Documentazione Tecnica • Beta e Service Pack • Ultime versioni dei prodotti • Diritto di accesso al sito MSDN Subscribers Download • Interventi di supporto tecnico telefonico gratuiti: • MSDN Operating Systems 2 incidents • MSDN Professional 2 incidents • MSDN Enterprise3 incidents • MSDN Universal 4 incidents Ricordarsi di attivare la licenza via Web dal sito MSDN!
KIT MSDN Universal…e diventi MCP! 5.143 € 3.182 € • Corso MOC 2310 • Voucher esame 1.550€ • Libro MOC Programming Microsoft ASP.NET MSDN Universal3.353€ 3.182€ Omaggio -10% Omaggio • KIT MSDN Professional 1.511 € 1.332 € MSDN Professional1.481€ 1.332€ Introducing Microsoft ASP.NET 2.0 -10% Omaggio
Hai una licenza Visual Studio .NET? E’ il momento di passare a MSDN: paghi solo la Software Assurance!
Per tutte le informazioni sui nostri eventi e webcast visitate registratevi direttamente alla Newsletter MSDN Flash. www.microsoft.com/italy/msdn/
Faccio parte di www.DevLeap.com • Gruppo di consulenti che • Erogano corsi e conferenze • Scrivono libri • Alcuni saranno in omaggio oggi • Scrivono software • Fanno consulenza progettuale e implementativa • Sito pubblico • Articoli tecnici • Cap 1 ASP.NET Full Contact disponibile al download • Blog per seguire la tecnologia
ASP.NET è una tecnologia nuova per fare cose vecchie • ASP.NET è parte del framework .NET • Ambiente object oriented • Nuovi linguaggi…oggi usiamo C#...non preoccupatevi • Nuovo modo di scrivere le cose • ADO.NET per l’accesso ai dati • ASP.NET in quanto tale • Cambia il modo di scrivere pagine web • Cambia il modo di pensare le pagine web • Oggi trattiamo ASP.NET • Non dimenticatevi che il framework .NET esiste ! • Il buon programmatore ASP.NET conosce il framework
Richiesta HTTP Risposta HTTP Server Client IIS/Apache default.htm
Browser ActiveX Controls VBScript DHTML JavaScript Java Applets CSS 2.0 XML Internet Explorer 5.x 6.x Internet Explorer 4.x Netscape Navigator 4.x Netscape Navigator 3.x Microsoft WebTV
http://www.dcc.com/equipment/catalog_type.asp? ProductType=rock+shoes Richiesta HTTP JScript Risposta HTTP Esecuzione VB / C# Server Client IIS Active Server Pages engine ADO.NET default.aspx Recupero risultati
Time • For i = 1 to X • Response • Next
<FORM action=“NomeRisorsa”> <INPUT TYPE=“Text” NAME=“txtNome”> <INPUT TYPE=“Text” NAME=“txtCognome”> <INPUT TYPE=“Submit”> • </FORM> • Le informazioni vengono inviate a “NomeRisorsa” sotto forma di stringhe • txtNome=xxxx&txtCognome=yyyy • Nel QueryString
Contiene le info del QueryString <% first=Request.QueryString("txtfname")%> <% first=Request.QueryString(“txtfname”) last =Request.QueryString(“txtlname”) Response.Write(“Welcome” & first & last)%> Demo 05
<FORM action=“NomeRisorsa” METHOD=“POST”> <INPUT TYPE=“Text” NAME=“txtNome”> <INPUT TYPE=“Text” NAME=“txtCognome”> <INPUT TYPE=“Submit”> • </FORM> • Le informazioni vengono inviate a “NomeRisorsa” sotto forma di stringhe • txtNome=xxxx&txtCognome=yyyy • Nel form (non si vedono nel Querystring)
Contiene le info del Form <% first=Request.Form("txtNome")%> <% first=Request.Form(“txtNome”) last =Request.Form(“txtCognome”) Response.Write(“Ciao” & first & last)%> Demo 06
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
Ripresentare le informazioni digitate • <INPUT • TYPE=“TEXT” • NAME=“txtNome” VALUE=<%=Request.QueryString(“txtNome”)%> • > Demo 07
<FORM action=“NomeRisorsa” METHOD=“POST” runat”server”> <INPUT TYPE=“Text” ID=“txtNome” runat=“server”> <INPUT TYPE=“Text” ID=“txtCognome” runat=“server”> <INPUT TYPE=“Submit”> • </FORM> • I controlli mantengono lo stato
Recupero valori digitati in automatico • Poi aggiungiamo il codice per contare
Oggetti programmabili • Attributo runat=“server” • Mantengono lo stato delle info • Generano HTML per il client • Espongono • Proprietà • Metodi • Scatenano eventi
<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")
<input • type=“Submit” • value=“Premi”runat=“server” • onServerClick=“EseguiOperazioni”> • onClick verrebbe inviato al client • In generale ogni attributo non utilizzato server-side o sconosciuto viene inviato al client
Definizione evento • Gestione evento • Notare • Occhio ai Convert • .NET è tipizzato • Il Web è “stringato” • Occhio alla Response • Esecuzione non sequenziale • Vedere il Source • Usare ad esempio <div runat=server>
I controlli server mantengono le proprietà impostate fra round-trip • Tramite un campo hidden • __VIEWSTATE • Pro • Meno plumbing • Meno roundtrip verso i dati • Contro • __VIEWSTATE occupa banda • E’ disabilitabile
ViewState • View Source • Modifica attributo al click • Azzera: Cambia colore pulsante • Disable su Controllo • Non tiene il bgcolor • Disable su Pagina • Non tiene il bgcolor • Comunque txtConta ha sepre il valore • Perchè ?
HTML Control • Sintassi HTML • Mappati 1:1 con controlli HTML • Namespace System.Web.UI.HtmlControls • Web Controls • Sintassi diversa • Tutti gli HTML Control • Più controlli avanzati • Maggiori funzionalità
<asp:TextBox runat=“server” id=“txtName” Text=“default”></asp:TextBox> • Modello ad oggetti consistente e strongly-typed • txtName.Text = “Roberto” • txtName.BackColor = Color.Red • Rendering differente per browser • Esempio: Label • Funzionalità differenti per browser • Esempio: Validation Control
<asp:TextBox ... • Strongly-typed • BackColor=“red” • <asp:ListBox ... • Mantenere lo stato significa anche riposizionare la combo-box • Si possono aggiungere elementi • Reflector (listbox.rendercontents)
Per chi arriva da ASP 3.0, PHP o altri ambienti di scripting server-side • Più vicino a VB 6.0 • Label per i testi “fissi” • TextBox e compagni per l’input
List Control • Iterativi su una base di dati • DropDownList, ListBox, RadioButtonList, CheckBoxList • Repeater, DataList, DataGrid • Validation Control • Ci arriviamo fra poco… • Controlli complessi (Rich Control) • Calendar, AdRotator, Xml • Mobile Control: per device e telefonini • Internet Explorer Control
Anche la pagina è un oggetto • La classe deriva da System.Web.UI.Page • Si possono costruire variabili membro • HTML diventa parte del metodo Render • Il codice di rendering diventa parte del metodo Render • WebForm e Controlli Server-side sono costruiti sulla classe Page
Code-behindfile Parsing Generazione ASPX File ASPX Engine Page Class ClassFilesuDisco Request Request CreazioneIstanza Response Response Istanza, Esecuzione e Rendering
A livello di pagina • @Page controlla la compilazione • Molti attributi • @Assembly per referenziare un assembly esterno • Come /r nei compilatori VBC.exe e CSC.exe • @Import per importare un namespace • Imports di VB.NET • using di C#;
ElencoCorsi.aspx <%@Page Language=“VB” Explicit=“True” %> <%@Assembly name=“GestioneCorsi” %> <%@Import namespace=“Corsi” %> ---codice--- Codice VB (uno solo per pagina) Dichiarazione variabili obbligatoria (abilitare sempre) Referenzia l’AssemblyGestioneCorsi.dll Queste direttive corrispondono a Vbc.exe /optionexplicit+ /r:GestioneCorsi.dll ElencoCorsi_aspx
Page Events • Page_Init • Page_Load • Page_Unload • La routine di evento riceve gli argomenti .NET
Evento Load • Riempire una ListBox • Occhio al POST • Aggiunge sempre elementi • Perchè la listbox mantiene il suo stato
If Request.ServerVariables(“HTTP_METHOD”) diventa • If Page.IsPostBack • Proprietà della classe Page • True se POST • False se GET
Evento Load • Riempire una ListBox solo in Get • I controlli mantengono lo stato
ASP.NET gestisce client-side validazioni e server-side • Client-side Validation • Dependent on browser version • FeedBack immediato • Riduce i round-trip • Server-side Validation • Riesegue le validazioni • Controllo su fonte dati UserInserimento MsgErrore Valido? No Client Si Server Valido? No Si Web ApplicationProcessing
Controllo Obbligatorietà Campo • Gestione errore client-side • Non necessita di post • Risparmia round-trip • Gestione errore server-side • Il controllo viene rieffettuato • Evita problemi • Con browser che non supportano Javascript • Con i malintenzionati • Non ferma l’esecuzione Server-side...giustamente • Demo 17 Page.IsValid
Con i Server Control (<asp:) automatico in base alle capacità del browser • ClientTarget="DownLevel“ • ClientTarget=“UpLevel“ • I controlli diventano span • sytle=“color:red ; visibility:hidden” • Usa Javascript sul client
Uno solo per pagina • @Page CodeBehind=“Codice.vb/cs” Inherits=“Classe” • Nel file Codice.vb/cs • Definire Classe protected • Derivare da System.Web.UI.Page • Poi il codice da usare con la pagina • Eventi • Funzioni Demo 18