La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Introduction to.NET and ASP.NET Framework Politecnico di Torino December 4 th, 2007 Mauro Minella

Presentazioni simili


Presentazione sul tema: "Introduction to.NET and ASP.NET Framework Politecnico di Torino December 4 th, 2007 Mauro Minella"— Transcript della presentazione:

1 Introduction to.NET and ASP.NET Framework Politecnico di Torino December 4 th, 2007 Mauro Minella Microsoft Certified Solutions Developer Microsoft Certified Systems Engineer + Internet

2 Agenda.NET Framework: architecture WEB extension: ASP.NET 2.0 Development Tools: Visual Studio 2008 Membership: roles and controls Localization, Master Pages, Skins and Themes AJAX Demos/Examples

3 From HTML to ASP.NET HTML ASP pages CGI apps ISAPI filters ASP.NET

4 .NET and ASP.NET architecture Sistema Operativo (Windows) Unmanaged Applications Windows Managed Applications (Win Forms, Console, Services,...) Base Class Library Common Language Runtime CLRinteroperability, security, garbage collection, versioning,... Class LibraryGUI, collections, threads, networking, reflection, XML,... WEB Managed Applications (WEB Forms / WEB Services) Win32 SDK.NET FrameworkASP.NET WEB Server (IIS) Base Class Library Common Language Runtime WEB FormsWeb GUI (object-oriented, event-based, browser-independent) WEB ServicesDistributed services over RPC (SOAP, HTTP)

5 .NET FRAMEWORK PROGRAMMING Binary compatibility for all languages Isolated code (only to allowed memery access) Codice type-safe (no buffer overrun) Just-in-time compiler C#C++VB... compiler IL code (+ metadata) compiler machine code loader verifier JIT compiler if (a > b) max = a; else max = b; IL_0004: ldloc.0 IL_0005: ldloc.1 IL_0006: ble.s IL_000c IL_0008: ldloc.0 IL_0009: stloc.2 IL_000a: br.s IL_000e IL_000c: ldloc.1 IL_000d: stloc.2 mov ebx,[-4] mov edx,[-8] cmp ebx,edx jle 17 mov ebx,[-4] mov [-12],ebx... C# IL Intel code compiler J#

6 Indipendence from platform and code langauge.NET is a CLI implementation Common Language Infrastructure CLI is an ECMA standard, defined with the C# ECMA-334, ECMA-335 Existing CLI implementations: SSCLI (Microsoft per Windows, FreeBSD and Macintosh) Mono (for Linux) DotGNU Intel OCL (Open CLI Library) …

7 ViewState Keeps the state at Page level Its a name/value dictionary Its a Hidden field of the page Can also be used programmatically ViewState.Add(NomeUtente, Mauro) Can be disabled at page level Be aware: some controls might not work any more!

8 PostBack Tipical usage: code optimiza- tion for accessing hi cost (like DB) resources just once IsPostBack property is true since second time on Page_Load happens when Button Submit Server-side controls with enabled AutoPostBack Can be used to initialize controls protected void Page_Load(..) { if(Page.IsPostBack == false) { // Its the first access // Lets open the DB connection! } }

9 DEMO Lets build our first ASP.NET application! Development Tool: Microsoft Notepad A.aspx page tipically has 3 sections: Page directives: environment setup, controls registration, assemblies load if not in GAC, namespace registration, code language declaration Code section: server side business logic; can be in-lin or separated Page layout: page scheleton, including server side controls, text, HTM tags

10 Lets build our first application (cont.) Create an empty.ASPX file Prepare scheleton Add controls Make controls server-side ASP.NET runtime parses the page and creates instances of.NET framework classes for every control where runat = server Add: Add Click even handler: OnServerClick="MakeItUpper" Chosen Language: C#, VB o C++ code (which is not sent to the client!)

11 Introduction a Visual Studio / VWD Free download from Microsoft website Lets explore the IDE Lets create a Web Site Controls and base features Server-side controls whose output depends on client Diagnostics page life cycle

12 IDE

13 Controls Controlli HTML: Standard HTML...,... Server-side controls Generated HTML depends on browser They are tens!! Lets look at some of them…

14 Validators Server-side controls to validate input They check if the browser supports client-side validation and in this case send JScript to it RequiredFieldValidator ValidatorSummary RangeValidator RegularExpressionValidator CompareValidator CustomValidator (can also be used to send a JS function back)JS function

15 Demo Validators

16 Debugging (Server-side) Enabled within the web.config file

17 Debugging (Javascript) A few more steps: Use browser settings: Tools – Internet Options - Advanced You can run debugger from IE and then set a breakpoint on javascript code Or from Visual Studio attach to process to IE process Not supported on Express versions Trick: debugger; instruciton in the JS codeJS code Remember not to leave in production! server-side vs. client-side: OnServerClick OnClick (you can have both!) Linguaggio vb.net/c#/c++/j#/f#/cobol.net/… javascript syntax Il postback happens only if the function returns TRUE

18 Pagina Life Cycle (hi level view) PreInit: use it to: Check IsPostBack property Create dynamic controls Apply themes and master pages dynamically Read/write user profiles Init: read and initialize control properties Load: read and update control properties PreRender: change page contents UnLoad: fianal closing tasks

19 Tracing Can be enabled in the web.config or on page level pageOutput enables output to page or by using trace In you need to write a trace information: Trace.Write (categoria, messaggio, eccezione); Trace.Warn (categoria, messaggio, eccezione); Trace.Write (messaggio);...

20 Trace example

21 Membership, roles and log-in controls Authentication and Permissions

22 Authentication: scenarios Identify who is accessing our web site Two tipical scenarios: Intranet: can leverage integrated server control access e.g. IIS uses Integrated Authentication Tipically, users are hosted within the Active Directory Users do not need to provide credentials explicitly Internet: can leverage a database to store users and permissions Users must provide username and password

23 Un modello estendibile Membership API Membership Data Other Data Stores Controls Login LoginStatus LoginView Other Membership Providers Other Membership Providers Membership Providers Membership MembershipUser AspNetSqlMembershipProvider SQL Server Other Login Controls Other Login Controls Authentication: an extensibile model

24 Log-in controls Interact with a provider for membership management Login: allows to do a login providing username + pwd LoginView: allows different content for authenticated and not-authenticated users PasswordRecovery: leverage the secret question to regenerate password LoginStatus: to check is the user is logged or not LoginName: provides the current logged user ChangePassword: to change password CreateUserWizard: to save time in writing lot of code!

25 Using Web Site Administration tool (WSA) Parameters are stored in the web.config file Authentication type SMTP server, tracing, debugging, errors,... Users handler Create, Delete, Update... Roles and access rules management Folder by folder Provider configuration to access database Can be used through a 7-steps Wizard

26 WSA: Security section

27 Membership API by code MembershipCreateStatus ms; MembershipUser user=Membership.CreateUser( mauro", Password1!", Colore preferito?", Blu", true,out ms); if (user==null) Label1.Text = "Non è possibile creare un utente"; else Label1.Text = "Utente creato"; if (Membership.ValidateUser(username.Text, password.Text)) FormsAuthentication.RedirectFromLoginPage(username.Text, false); else Label1.Text = "Username e password non corretti";

28 Demo Web Site Creation: Leverage integrated controls Login, LoginName and LoginStatus controls Leverage WSA to create users and groups Leverage IIS Manager to configure WEB server

29 Localizzazione, Temi, Skin e Pagine Master Come creare una grafica del sito omogenea e consistente

30 Localizzazione Usa file di risorse selezionati a run-time da ASP.NET Due cartelle: App_LocalResources: i file contengono risorse per una singola pagina App_GlobalResources: i file possono essere letti da qualsiasi pagina del sito Web Indicazione della localizzazione nelle direttive di pagina -UICulture="auto" Naming convention per la pagina: -linguaggio neutrale: pagina.aspx.resx -linguaggio specifico (es. italiano): pagina.aspx.it.resx Naming convention per le risorse: -meta:resourcekey="ResourceXYZ" nelle proprietà controllo (tag HTML) -Name=ResourceXYZ. e Value=Valore nei file.resx e..resx Impostare nel browser del client lingua e priorità Tipi di risorse: stringhe, immagini, audio, file, icone, altro DEMO

31 Temi (CSS e Skin) Definiscono la grafica della pagina Sono un superset dei CSS (Cascading Style Sheets) Sono disponibili solo in ASP.NET 2.0 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 controlli individuali, pagine o siti

32 Creazione di CSS Si usa un tool integrato nell ambiente, che si attiva dal menu Stili dopo avere aggiunto un file CSS

33 File di Skin - esempio Creo una cartella per ogni stile sotto App_Themes Creo un file per ogni skin nella cartella creata sopra In fondo ad ogni file.skin: file.skin Definisco uno SkinID altrimenti lo skin viene applicato a tutti i controlli di quel tipo, e lo seleziono nelle proprietà Imposto lo skin nella direttiva di pagina StylesheetTheme Seleziono lo SkinID per il controllo DEMO

34 Pagine Master Content Page

35 Pagine master Le pagine master definiscono la struttura e i placeholder ( ) Le pagine figlie referenziano la master e creano il contenuto ( ) Le pagine master sono trasparenti allutente, il quale invoca solo le pagine content Page MasterPage- File=MasterPage.master" %> Page MasterPage- File=MasterPage.master" %> Site.masterdefault.aspxhttp://.../default.aspx

36 La proprietà Page.Master Ottiene un riferimento alla pagina master dalla pagina figlia Usata per avere accesso programmatico al contenuto della pagina master Usare FindControl per weak typing Usere public property nella master page per strong typing

37 Accedere ad un Controllo della Master Page Weak Typing ((Label) Master.FindControl ("Title")).Text = "Orders"; Nella pagina figlia… Nella master page…

38 Accedere ad un Controllo della Master Page Strong Typing Master.TitleText = "Orders";. public string TitleText { get { return Title.Text; } set { Title.Text = value; } } Nella master page… Nella pagina figlia…

39 Demo Master Pages Creazione di un sito ex-novo (vuoto) Aggiunta una pagina master Aggiunta di due pagine content che usano il template della pagina master

40 Sorgenti dati e controlli data-bound Evoluzione delle tecnologie di Data Access da ODBC a ADO.NET ADO.NET: lo stato dellarte per laccesso ai dati con il.NET framework Controlli Data-Bound Dataset: accesso a dati disconnessi

41 Evoluzione di accesso ai dati ODBC (Open Database Connectivity): API uniforme per chiamate SQL a database server differenti OLE DB: COM-based API per sorgenti dati esprimibili in forma tabellare il consumer e il provider comunicano attraverso COM Principale svantaggio: primariamente disegnato per C –ADO: automazione verso OLE DB vantaggio: usufruibile da via automation (VB5/6, VBA,...) svantaggio: ridondanza ed efficienza 2001: ADO.NET: Modalità disconnessa del data binding (oggetto DataSet) Profonda integrazione con XML Integrazione con il resto del.NET framework e con Visual Studio.NET Prestazioni

42 Evoluzione di accesso ai dati ODBC (1993) Primo standard Dati relazionali OLE DB (1997) Potente Difficile ADO (1999) Automation Semplice Ridondanza ADO.NET (2001) Modalità disonnessa Integrazione.NET Prestazioni Backward compatibility

43 OLEDB provider for SQL Server OLEDB provider for Access OLEDB provider for ORACLE OLE DB DLL Win32 Client ADO COM standard interfaces / C++ headers automation ADO.NET provider for SQL Server ADO.NET provider for Access ADO.NET provider for ORACLE ADO.NET.NET Client.NET framework via SQLDataSource ADO.NET provider for OLEDB COM+ Sql Server Oracle Access VB/VBA ADO.NET Modalità disconnessa del data binding (oggetto DataSet) Profonda integrazione con XML Integrazione con il resto del.NET framework e con Visual Studio.NET Prestazioni

44 Controlli DataSource Approccio dichiarativo per ottenere i dati NomeDescrizione SQLDataSource Connects data-binding controls to SQL databases through ADO.NET data providers AccessDataSourceConnects data-binding controls to Access databases XmlDataSourceConnects data-binding controls to XML data ObjectDataSourceConnects data-binding controls to data components SiteMapDataSourceConnects site navigation controls to site map data

45 Provider OLE DB vs. Managed Implementazione interna: i provider.NET managed offrono un subset di interfacce rispetto a OLE DB Integrazione: i provider.NET managed usano tipi di dati del Framework.NET (no COM interop layer) Interazione diretta: i provider.NET managed parlano direttamente con i client, mentre i provider OLE DB sono wrappati da OLE DB Data source per ADO.NET: SQL Server OLE DB ODBC Oracle

46 Caching dei risultati

47 Controlli Data-bound Alcuni controlli hanno la capacità di collegarsi a sorgenti dati e di rappresentarne il contenuto: ListBox, BulletedList, RadioButtonList, CheckBoxList TreeView, Menu, FormView, GridView, DetailsView Datalist, Repeater Molte volte basta un semplice Drag & Drop ! Zero code !

48 ObjectDataSource Permette di creare applicazioni con uno strato in più per laccesso ai dati È possibile inserire della business logic Il codice di accesso ai dati è separato dalla UI Binding bidirezionale SelectMethod, InsertMethod, UpdateMethod, and DeleteMethod Caching dei risultati opzionale Parametri

49 ACCESSO ai dati in modalità disconnessa DataSet Insieme disconnesso di viste associate ad un nome DataTable Rapppresenta una tabella di dati in memoria Data Adapter Ponte fra il data source e loggetto DataSet Serve per le operazioni di creazione del DataSet e aggiornamento del data source

50 DEMO – ADO.NET Creazione di un database SQL Server Express Creazione di un dataset e data adapter con un metodo pubblico Aggiunta controllo ObjectDataSource e associazione al dataset Aggiunta GridView e DetailsView con associazione al dataset Filtro griglia tramite DropDownList Inserimento tramite DetailsView Punti di debolezza indirizzabili con AJAX

51 ASP.NET AJAX Concetti e fondamenti

52 AJAX Che cosè e come funziona Da dove partire AJAX ASP.NET Extensions 1.0 XMLHttpRequest : la base AJAX Control Toolkit AJAX Futures CTP

53 Cosè AJAX? AJAX = Asynchronous JavaScript and XML Una nuova tecnica per lo sviluppo di applicazioni web Risolve molti dei problemi che affliggono le moderne applicazioni web Elimina il flickering delle pagine Usa XmlHttpRequest per recuperare dati dal server in modo asincrono e il JavaScript per aggiornare il contenuto della pagina Nasce con OWA (Outlook Web Access) Tecnologia abilitante per il Web 2.0

54 AJAX: Come funziona? Browser Web Server Il browser invia una richiesta HTTP al server 1 1 Il server restituisce il contenuto. Il browser ne fa il rendereing 2 2 IL browser invia una richiesta asincrona XML-HTTP al server. La UI non si blocca e non ha effetti di flickering 3 3 La richiesta XML-HTTP si conclude. Il JavaScript aggiorna la porzione della pagina interessata 4 4

55

56 XmlHttpRequest Introdotto nel 1999 con Internet Explorer 5 Oggetto ActiveX per le chiamate di callback dal Web server In IE 7 fa parte del modello ad oggetti del browser Successivamente adottato da Firefox, Safari e altri In via di standardizzazione dal W3C Supportatato oggi da circa il 99% dei browser Circa 85%-95% hanno abilitato il JavaScript

57 Instanziare XmlHttpRequest var xhr = null; try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { if (typeof XMLHttpRequest != "undefined") { xhr = new XMLHttpRequest(); }

58 Verifica supporto AJAX per il client xhr.open ('GET', 'AjaxDemo.aspx?mode=ajax', true); xhr.onreadystatechange = checkForCompletion; xhr.send ();... function checkForCompletion() { if (xhr.readyState == 4 && xhr.status == 200) { window.alert(xhr.responseText); }

59 Che cosè Microsoft ASP.NET AJAX ? Un FRAMEWORK per realizzare applicazioni WEB, interattive e dalla ricca interfaccia utente Facilita lo sviluppo di applicazioni AJAX Estende e completa ASP.NET 2.0 Anche se può essere usato con PHP Multi-browser Estendibile

60 Server Side Client Side Microsoft AJAX Library ASP.NET 2.0 AJAX Extensions ASP.NET 2.0 AJAX Futures CTPs ASP.NET AJAX Toolkit Sviluppato con la community Nuove funzionalità Microsoft AJAX: i componenti base Supporto Microsoft standard per le ASP.NET 2.0 AJAX Extension Supporto della comunity per le Futures CTPs ed il Toolkit.

61 AJAX: da dove partire

62 Componenti essenziali di AJAX ASP.NET Contengono: -Template AJAX per VS/WD Controlli lato server -Ajax Library (JavaScript lato client) -Possono essere utilizzate anche con server non MS -Fanno parte di ASP.NET Extensions -Progetto share-source community -Esempi già pronti -SDK per la creazione di nuovi controlli -Richiede ASP.NET Extensions - Estendono la piattaforma core - Richiedono le ASP.NET 2.0 AJAX Extensions Aggiungono funzionalità come - Drag-and-Drop - XML Script - etc

63 Microsoft AJAX Library La parte client di ASP.NET 2.0 AJAX Tipicamente installata in %ProgramFiles%\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v \MicrosoftAjaxLibrary Indipendente dal browser e dalla piattaforma Internet Explorer, Firefox, Mozilla, Safari, etc. Si astrae dalla piattaforma sottostante Un JavaScript arricchito Namespaces, classi, interface, ereditarietà, etc. Un sistema dei tipi File *.js scaricati una sola volta sul client

64 ASP.NET AJAX 2.0 Extensions UpdatePanel È il controllo ASP.NET AJAX più importante Consente di trasformare facilmente una applicazione ASP.NET 2.0 in unapplicazione AJAX Permette di fare il rendering di parte della pagina Converte postbacks in chiamate asincrone Aggiorna parte della pagina web con il risultato Non si scrive JavaScript

65 Passo 1 Aggiungere lo ScriptManager Aggiungere ad una pogina aspx:

Annunci Google