Title: Introduction to 'NET and ASP'NET Framework
1Introduction to .NET and ASP.NET Framework
- Politecnico di Torino
- December 4th , 2007
Mauro Minella mauro.minella_at_microsoft.com
http//blogs.msdn.com/mauromi Microsoft
Certified Solutions Developer Microsoft Certified
Systems Engineer Internet
2Agenda
- .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
3From 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 gt 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 ebx,-4 mov -12,ebx ...
verifier
JIT compiler
machine code
6Indipendence 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)
7ViewState
- 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
- lt_at_ Page ... EnableViewState"false"gt
- Be aware some controls might not work any more!
8PostBack
- 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!
9DEMOLets 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
10Lets 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 lt _at_Page Language"C"gt
- C, VB o C code (which is not sent to the
client!)
11Introduction a Visual Studio / VWD
- Free download from Microsoft website
http//www.microsoft.com/italy/msdn/prodotti/vs200
5/editions/download/wdd.mspx - 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
12IDE
13Controls
- Controlli HTML
- Standard HTML
- lta gt..., ltlabelgt...
- Server-side controls
- Generated HTML depends on browser
- They are tens!! Lets look at some of them
14Validators
- 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)
15Demo
16Debugging (Server-side)
- Enabled within the web.config file
17Debugging (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!)
- ltscript runat"server"gt ? ltscript
language"javascript" type"text/javascript"gt - Linguaggio vb.net/c/c/j/f/cobol.net/ ?
javascript syntax - Il postback happens only if the function returns
TRUE
18Pagina 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
19Tracing
- Can be enabled in the web.config or on page level
- pageOutput enables output to page or by using
trace
lttrace enabled"true" pageOutput"false" /gt
lt_at_ Page Language"C" ... Trace"true"gt
- In you need to write a trace information
Trace.Write (categoria, messaggio, eccezione)
Trace.Warn (categoria, messaggio,
eccezione) Trace.Write (messaggio) ...
20Trace example
21Membership, rolesand log-in controls
- Authentication and Permissions
22Authentication 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
23Un modello estendibile
Authentication an extensibile model
Controls
Login
LoginStatus
LoginView
Other Login Controls
Membership API
Membership
MembershipUser
Membership Providers
Other Membership Providers
AspNetSqlMembershipProvider
Membership Data
Other Data Stores
SQL Server
24Log-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!
25Using 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
26WSA Security section
27Membership API by code
MembershipCreateStatus msMembershipUser
userMembership.CreateUser( mauro",
Password1!", mauro.minella_at_microsoft.com",
Colore preferito?", Blu", true,out
ms) if (usernull) Label1.Text "Non è
possibile creare un utente"else Label1.Text
"Utente creato"
if (Membership.ValidateUser(username.Text,
password.Text)) FormsAuthentication.RedirectFrom
LoginPage(username.Text, false)else
Label1.Text "Username e password non corretti"
28Demo
- 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
29Localizzazione, Temi, Skin e Pagine Master
- Come creare una grafica del sito
- omogenea e consistente
30Localizzazione
- 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
- metaresourcekey"ResourceXYZ" nelle proprietà
controllo (tag HTML) - NameResourceXYZ.ltProprietàgt e ValueValore nei
file ltpagegt.resx e ltpagegt.ltlanguagegt.resx - Impostare nel browser del client lingua e
priorità - Tipi di risorse stringhe, immagini, audio, file,
icone, altro - DEMO
31Temi (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
32Creazione di CSS
- Si usa un tool integrato nell ambiente, che si
attiva dal menu Stili dopo avere aggiunto un
file CSS
33File 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 ltasplabel
runat"server" backColor "Green"
SkinID"lblTitolo"/gt - 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
34Pagine Master
Content Page
35Pagine master
- Le pagine master definiscono la struttura e i
placeholder (ltaspContentPlaceHoldergt) - Le pagine figlie referenziano la master e
creano il contenuto (ltaspContentgt) - Le pagine master sono trasparenti allutente, il
quale invoca solo le pagine content
Site.master
default.aspx
http//.../default.aspx
lt_at_ Master gt ltaspContentPlaceHolder
ID"Main" RunAt"server" /gt
lt_at_ Page MasterPage- FileMasterPage.master"
gt ltaspContent ContentPlaceHolderID "Main"
RunAt"server" /gt lt/aspContentgt
36La 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
37Accedere ad un Controllo della Master PageWeak
Typing
Nella master page
ltaspLabel ID"Title" RunAt"server" /gt
Nella pagina figlia
((Label) Master.FindControl ("Title")).Text
"Orders"
38Accedere ad un Controllo della Master PageStrong
Typing
Nella master page
ltaspLabel ID"Title" RunAt"server" /gt . .
. ltscript language"C" runat"server"gt public
string TitleText get return Title.Text
set Title.Text value lt/scriptgt
Nella pagina figlia
Master.TitleText "Orders"
39Demo 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
40Sorgenti 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
41Evoluzione di accesso ai dati
- 1993 - ODBC (Open Database Connectivity) API
uniforme per chiamate SQL a database server
differenti - 1997 - 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
42Evoluzione di accesso ai dati
43COM standard interfaces / C headers
OLE DB
Win32 Client
.NET Client
VB/VBA
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
.NET framework via SQLDataSource
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
44Controlli 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
45Provider 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
46Caching dei risultati
ltaspSqlDataSource ID"Countries" RunAt"server"
ConnectionString"serverlocalhostdatabasenorth
wind..." SelectCommand"select distinct
country from customers order by country"
EnableCaching"true" CacheDuration"60"
/gt ltaspDropDownList ID"MyDropDownList"
DataSourceID"Countries" DataTextField"country"
AutoPostBack"true" RunAt"server" /gt
47Controlli 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 !
48ObjectDataSource
- 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
49ACCESSO 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
50DEMO 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
51ASP.NET AJAXConcetti e fondamenti
52AJAX
- Che cosè e come funziona
- Da dove partire
- AJAX ASP.NET Extensions 1.0
- XMLHttpRequest la base
- AJAX Control Toolkit
- AJAX Futures CTP
53Cosè 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
54AJAX Come funziona?
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(No Transcript)
56XmlHttpRequest
- 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
- http//www.w3.org/TR/XMLHttpRequest/
- Supportatato oggi da circa il 99 dei browser
- Circa 85-95 hanno abilitato il JavaScript
57Instanziare 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()
58Verifica supporto AJAX per il client
xhr.open ('GET', 'AjaxDemo.aspx?modeajax',
true) xhr.onreadystatechange
checkForCompletion xhr.send () ... function
checkForCompletion() if (xhr.readyState
4 xhr.status 200)
window.alert(xhr.responseText)
59Che 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
60Microsoft 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
Nuove funzionalità
Server Side
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.
61AJAX da dove partire
62Componenti 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
63Microsoft AJAX Library
- La parte client di ASP.NET 2.0 AJAX
- Tipicamente installata in ProgramFiles\Microsof
t ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025\M
icrosoftAjaxLibrary - 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
64ASP.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
65Passo 1Aggiungere lo ScriptManager
Aggiungere ad una pogina aspx
ltaspScriptManager ID"MyScriptManager"
Runat"server" /gt
Lo ScriptManager genera
ltscript src"/.../WebResource.axd?diQ15p6LHcT2T5
QE..." type"text/javascript"gtlt/scriptgt
Riferimento allo script .js da scaricare
66Passo 2Usare un UpdatePanel
ltaspScriptManager ID"..." Runat"server"
EnablePartialRendering"true" /gt . .
. ltaspUpdatePanel ID"..." Runat"server"gt
ltTriggersgt lt! Se necessario definire dei
trigger--gt lt/Triggersgt ltContentTemplategt
lt! Il contenuto va qui --gt lt/ContentTemplategt lt
/aspUpdatePanelgt
67Update PanelEstendiamo la piattaforma ASP.NET
68ASP.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
69Da dove partire - 1
70Da dove partire - 2
71Da dove partire - 3
72AJAX Control ToolkitEstendiamo la piattaforma
ASP.NET
73ASP.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
74Quindi ...
- 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 luso 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
75Link utili
- About Native XMLHTTP
- http//msdn.microsoft.com/library/default.asp?url
/workshop/author/dhtml/overview/aboutxmlhttp.asp - Sito ufficiale ASP.NET AJAX
- http//ajax.asp.net
- Blogs
- http//weblogs.asp.net/scottgu
- http//www.nikhilk.net
76QA
mauro.minella_at_microsoft.com