La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Introduction to .NET and ASP.NET Framework

Presentazioni simili


Presentazione sul tema: "Introduction to .NET and ASP.NET Framework"— Transcript della presentazione:

1 Introduction to .NET and ASP.NET Framework
Politecnico di Torino December 4th , 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 Demo’s/Examples

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

4 .NET and ASP.NET architecture
Win32 SDK .NET Framework ASP.NET Unmanaged Applications Windows Managed Applications (Win Forms, Console, Services, ...) WEB Managed Applications (WEB Forms / WEB Services) Base Class Library Base Class Library Common Language Runtime Common Language Runtime WEB Server (IIS) Sistema Operativo (Windows) CLR interoperability, security, garbage collection, versioning, ... Class Library GUI, collections, threads, networking, reflection, XML, ... WEB Forms Web GUI (object-oriented, event-based, browser-independent) WEB Services Distributed 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# if (a > b) max = a; else max = b; C# C++ VB J# ... IL 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 compiler compiler compiler compiler compiler IL code (+ metadata) loader Intel code mov ebx,[-4] mov edx,[-8] cmp ebx,edx jle 17 mov [-12],ebx ... verifier JIT compiler machine code

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
It’s a name/value dictionary It’s a Hidden field of the page Can also be used programmatically ViewState.Add(“NomeUtente”, “Mauro”) Can be disabled at page level Page ... EnableViewState="false"%> 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) // It’s the first access // Let’s open the DB connection! } }

9 DEMO Let’s 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 Let’s 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: Click even handler: OnServerClick="MakeItUpper" Chosen Language: Language="C#"%> C#, VB o C++ code (which is not sent to the client!)

11 Introduction a Visual Studio / VWD
Free download from Microsoft website Let’s explore the IDE Let’s 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: Server-side controls Standard HTML
<a >..., <label>... Server-side controls Generated HTML depends on browser They are tens!! Let’s look at some of them…

14 Validators RequiredFieldValidator ValidatorSummary RangeValidator
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)

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 code Remember not to leave in production! server-side vs. client-side: OnServerClick  OnClick (you can have both!) <script runat="server">  <script language="javascript" type="text/javascript"> 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 In you need to write a trace information:
Can be enabled in the web.config or on page level pageOutput enables output to page or by using trace <trace enabled="true" pageOutput="false" /> Page Language="C#" ... Trace="true"%> 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
Authentication: an extensibile model Un modello estendibile Controls Login LoginStatus LoginView Other Login Controls Membership API Membership MembershipUser Membership Providers AspNetSqlMembershipProvider Other Membership Providers Membership Data SQL Server Other Data Stores

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.<Proprietà> e Value=Valore nei file <page>.resx e <page>.<language>.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: <asp:label runat="server" backColor= "Green" SkinID="lblTitolo"/> 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 (<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 Site.master default.aspx Master %> <asp:ContentPlaceHolder ID="Main" RunAt="server" /> Page MasterPage- File=“MasterPage.master" %> <asp:Content ContentPlaceHolderID= "Main" RunAt="server" /> </asp:Content>

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
Nella master page… <asp:Label ID="Title" RunAt="server" /> Nella pagina figlia… ((Label) Master.FindControl ("Title")).Text = "Orders";

38 Accedere ad un Controllo della Master Page Strong Typing
Nella master page… <asp:Label ID="Title" RunAt="server" /> . <script language="C#" runat="server"> public string TitleText { get { return Title.Text; } set { Title.Text = value; } } </script> Nella pagina figlia… Master.TitleText = "Orders";

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 dell’arte per l’accesso 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++ 1999 –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 COM standard interfaces / C++ headers
OLE DB Win32 Client VB/VBA .NET Client DLL OLEDB provider for SQL Server 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 COM+ automation ADO via SQLDataSource .NET framework DLL OLEDB provider for ORACLE ADO.NET ADO.NET provider for SQL Server DLL OLEDB provider for Access ADO.NET provider for ORACLE ADO.NET provider for Access Sql Server ADO.NET provider for OLEDB Oracle Access

44 Controlli DataSource Approccio dichiarativo per ottenere i dati Nome
Descrizione SQLDataSource Connects data-binding controls to SQL databases through ADO.NET data providers AccessDataSource Connects data-binding controls to Access databases XmlDataSource Connects data-binding controls to XML data ObjectDataSource Connects data-binding controls to data components SiteMapDataSource Connects 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 <asp:SqlDataSource ID="Countries" RunAt="server" ConnectionString="server=localhost;database=northwind;..." SelectCommand="select distinct country from customers order by country" EnableCaching="true" CacheDuration="60" /> <asp:DropDownList ID="MyDropDownList" DataSourceID="Countries" DataTextField="country" AutoPostBack="true" RunAt="server" />

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 l’accesso 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 l’oggetto 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 Browser Web Server Il server restituisce il contenuto. Il browser ne fa il rendereing 2 IL browser invia una richiesta asincrona XML-HTTP al server. La UI non si blocca e non ha effetti di flickering 3 La richiesta XML-HTTP si conclude. Il JavaScript aggiorna la porzione della pagina interessata 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) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); 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 ?
3/27/2017 1:45 PM 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 © 2006 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

60 Microsoft AJAX: i componenti base
ASP.NET 2.0 AJAX Futures CTPs ASP.NET AJAX Toolkit ASP.NET 2.0 AJAX Extensions Sviluppato con la community Server Side Nuove funzionalità Client Side Microsoft AJAX Library 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 2005 Controlli lato server Ajax Library (JavaScript lato client) 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 1.0 - Aggiungono funzionalità come - Drag-and-Drop - XML Script - etc Possono essere utilizzate anche con server non MS Fanno parte di ASP.NET Extensions

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 un’applicazione 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: <asp:ScriptManager ID="MyScriptManager" Runat="server" /> Lo ScriptManager genera: <script src="/.../WebResource.axd?d=iQ15p6LHcT2T5QE..." type="text/javascript"></script> Riferimento allo script .js da scaricare

66 Passo 2 Usare un UpdatePanel
<asp:ScriptManager ID="..." Runat="server" EnablePartialRendering="true" /> . <asp:UpdatePanel ID="..." Runat="server"> <Triggers> <!– Se necessario definire dei trigger--> </Triggers> <ContentTemplate> <!– Il contenuto va qui --> </ContentTemplate> </asp:UpdatePanel>

67 Update Panel Estendiamo la piattaforma ASP.NET

68 ASP.NET AJAX Control Toolkit
Aggiunge nuovi controlli server ad ASP.NET AJAX Template per la realizzazione di nuovi Extender Sviluppato in collaborazione con la community, in Shared Source

69 Da dove partire - 1

70 Da dove partire - 2

71 Da dove partire - 3

72 AJAX Control Toolkit Estendiamo la piattaforma ASP.NET

73 ASP.NET AJAX Futures CTPs
Estende la piattaforma core Richiede le ASP.NET 2.0 AJAX Extensions 1.0 Aggiunge funzionalità Drag-and-Drop XML Script etc

74 Quindi ... AJAX = Asynchronous JavaScript and XML
Applicazioni web più ricche ed interattive ASP.NET AJAX = Framework per lo sviluppo con AJAX Microsoft AJAX Library (client-side framework) ASP.NET 2.0 AJAX Extensions (server-side framework) ASP.NET AJAX è… Ottimizzato per l’uso su internet Supporta numerosi browser Compatibile con PHP, ColdFusion ed altre piattaforme Per lo sviluppo di applicazioni web nei prossimi anni Estende ed arrichisce la piattaforma Web da ASP.NET 2.0 a ASP.NET 2.0 AJAX Extensions

75 Link utili About Native XMLHTTP Sito ufficiale ASP.NET AJAX Blogs:
html/overview/aboutxmlhttp.asp Sito ufficiale ASP.NET AJAX Blogs:

76 Q&A


Scaricare ppt "Introduction to .NET and ASP.NET Framework"

Presentazioni simili


Annunci Google