ASP vs. ASP.NET
Andrea Saltarello
Software Architect - Managed Designs S.r.l.
[email protected]
http://blogs.ugidotnet.org/pape
Sponsor
UPGRADE
• ASP Vs. ASP .NET
• Debug.Assert ((VB.NET <> VB6) And
(VB.NET<>VBScript))
• <% …%>
• COM o non COM, questo è il dilemma…
• Demo Ugrade
ASP .NET: vantaggi
• Il codice eseguito:
– E’ compilato: performance e scalabilità tipicamente
superiori
– Può utilizzare tutte le classi del Framework .NET
• È un ambiente più produttivo (validators, databinding,
security, …)
– Può usare sessioni cookieless e scalabili in una web
farm
– E’ tipizzato
– E’ tipizzato
– E’ tipizzato 
ASP 2 ASP .NET - Focus
• L'installazione di ASP .NET non impedisce
il funzionamento delle applicazioni ASP
esistenti
• Le applicazioni ASP e ASP .NET:
– possono essere eseguite side-by-side (usano
estensioni di file differenti)
– non condividono Session e Application
• Anche se è possibile farlo scrivendo tanto codice
– Sono comunque possibili strategie di
migrazione parziale
ASP e ASP .NET: analogie
• Gli oggetti Request e Response sono ancora
supportati
• Gli include sono sopportati per compatibilità
all’indietro…
– …Ma gli User Control sono gratis, quindi usiamoli 
• Supportano codice applicativo frammisto ad
HTML
• La direttiva Language è ancora supportata (in
realtà viene sottointeso Page)
• VB .NET sa “imitare” (fin troppo) bene VBScript
ASP .NET: differenze da ASP
• Le pagine ASP .NET supportano un solo linguaggio
• Le pagine ASP .NET supportano più di una direttiva
• è necessario dichiarare le funzioni nelle pagine ASP.NET
in blocchi <script runat=server>
<%
Sub DoSomething()
Response.Write “Ciao a tutti !!!"
End Sub
DoSomething
%>
<script language="VB" runat=server>
Sub DoSomething()
Response.Write (“Ciao a tutti !!!")
End Sub
</script>
<%
DoSomething()
%>
ASP .NET: differenze da ASP
• ASP.NET non supporta le funzioni di
rendering di pagina
<% Sub RenderSomething() %>
<font color="red"> Sono le ore: <%=Now
%> </font>
<% End Sub %>
<%
RenderSomething
RenderSomething
%>
<script language="VB" runat=server>
Sub RenderSomething()
Response.Write("<font color=“”red””> ")
Response.Write(“Sono le ore: " & Now)
Response.Write(“</font>")
End Sub
</script>
<%
RenderSomething()
RenderSomething()
%>
ASP .NET: differenze da ASP
• Option Explicit è impostato per default
• è necessario dichiarare le variabili aventi scope
page-level in blocchi <script runat=server>
• le "pagine" ASP .NET si chiamano Web Form 
• Molti dei settaggi di IIS per le applicazioni
ASP.NET vengono ignorati
– La configurazione sta in ASP.NET
• Web.config
• Machine.config
ASP .NET: da VBScript a VB
.NET
• Eliminazione di Set e Let
• Eliminazione delle proprietà predefinite non indicizzate
• Le parentesi sono necessarie per chiamare
procedure/funzioni (in VB2002 anche se non hanno
parametri)
• per default, gli argomenti sono passati ByVal
• Possiamo avvalerci della tipizzazione
• Mai + complessi di inferiorità: VB.NET e C# sono simili 
– CLI
– CLS
Web Forms 101
• Le “pagine” ASP .NET si chiamano Web Forms, perché
contengono:
• <form runat=“server”>
• …
• </form>
• Può esistere un solo web form per pagina
• Non è possibile specificare una ACTION custom
• Un web form può contenere:
– HTML
– Codice server-side
– Server Controls
Server Controls 101
•
•
•
•
•
Oggetti programmabili
Attributo runat=“server”
Mantengono lo stato delle info
Generano HTML per il client
Espongono
– Proprietà
– Metodi
• Scatenano eventi
Stateful controls 101
• 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
Server Controls 101 (Reloaded)
• <asp:TextBox runat=“server” id=“txtName”
Text=“default”></asp:TextBox>
• Modello ad oggetti consistente e strongly-typed
– txtName.Text = “Andrea”
– txtName.BackColor = Color.Red
• Rendering differente per browser
– Esempio: Label
• Funzionalità differenti per browser
– Esempio: Validation Control
Migriamo? 
• Un esempio vale più di mille parole…
Back to the future:
ASP.NET 2.0
Master Pages
Permettono di definire centralmente il layout
di differenti web form
Contenute in file .master
Definite mediante la direttiva Master
Usano due nuovi server control:
• asp:ContentPlaceHolder
• asp:Content
Master Pages 101
<%@ Master %>
Header
Navigation
<asp:ContentPlaceHolder Id=“MainContent” />
Footer
<%@ Page MasterPageFile=“~/mySiteMaster.master” %>
<asp:Content ContentPlaceHolderId=“MainContent” />
Nested Master Page
• Le Master Page:
• Possono essere annidate: anche la direttiva Master
dispone di un attributo MasterPageFile (la versione
beta1 di VWD non ne supporta il design)
• Sono sensibili all’adaptive rendering
<%@ page language="C#"
MasterPageFile="~/Mysite.master"
IE:MasterPageFile=“~/IE.master”
Palm:MasterPageFile=“~/palm.master”
Mozilla:MasterPageFile=“~/Mozilla.master” %>
Nested Master Pages
Una pagina contenuta da un master:
• Può accedere al contenuto del proprio master
mediante la proprietà Master della classe
Page
• Può sostituire il proprio master
Master Page: Configurazione
• Per pagina:
<%@ page language="C#"
MasterPageFile="~/Mysite.master" %>
• Per sito/sezione:
<configuration>
<system.web>
<pages masterPageFile="MySite.Master" />
</system.web>
</configuration>
Themes
Themes 101
Permettono di applicare uno stile comune
(skin) ai server control di una applicazione
o di una sua parte
• Skin = Attributi dei controlli
– Sono contenute in file .skin
• Theme = Insieme di una o più skin
– Contenute nel folder Themes
– Possono essere globali e locali
Themes Unleashed
I file .skin contengono i default settings da
applicare ai server controls:
<asp:Button runat="server" BorderStyle="Solid"
BorderColor="#000066" BorderWidth="10pt"
ForeColor="#000066" BackColor="#EEEEEE" />
Themes != CSS (Themes do it better ):
• possiamo impostare anche proprietà non visuali:
<asp:GridView runat="server" BackColor="#CCCCCC"
BorderWidth="1pt" BorderColor="#CCCCCC" GridLines="None"
AllowPaging="True" />
• Supportano adaptive rendering
• Possono essere (dis)abilitati programmaticamente
Proprietà EnableTheming di Page/Control
Themes: deploy
Tutti i file di un singolo Tema sono contenuti
in un folder
Il deploy di un Tema può essere:
• Globale. Si trovano in:
%SystemRoot%\Microsoft.NET\Framework\vX.X.XXXX\ASP.NETClientFiles
\Themes
• Locale. Si trovano in un subfolder della root
chiamato Themes
Global Themes
ASP.NETClientFiles
Theme name =
Subdirectory name
Themes
SKIN
BasicBlue
SmokeAndGlass
SKIN
SKIN
SKIN
Local Themes
vroot
Theme name =
Subdirectory name
Themes
ShockingPink
AutumnLeaves
SKIN
SKIN
SKIN
SKIN
Applicare un Tema
• Per pagina:
<%@ page Theme=“MyTheme" %>
• Per sito/sezione:
<configuration>
<system.web>
<pages theme=“MyTheme" />
</system.web>
</configuration>
Navigation
Site Navigation 101
ASP .NET 2.0 offre alcuni server control
built-in per la realizzazione della mappa di
navigazione del sito, ad es:
– <asp:SiteMapPath />
– <asp:Menu />
I controlli non contengono direttamente la
definizione della mappa, ma la recuperano
da appositi provider
Navigation: Map Provider
I provider sono classi derivate di
SiteMapProvider
XmlSiteMapProvider è il provider che
permette di definire la mappa di
navigazione in un file xml (web.sitemap)
web.sitemap
E’ un file XML, situato nella root del sito
L’elemento root è <siteMap />, senza
attributi
Contiene vari elementi <siteMapNode />,
dotati degli attributi:
Title: il testo associato alla voce del menu
Description: la descrizione della voce del menu
Url: lo URL della risorsa associata
AOI: ASP.NET Oriented
Interop 
ASP .NET vs. COM
• Il CLR consente agli oggetti .NET di interagire senza
(particolari) difficoltà con i componenti COM tradizionali.
• Un componente può essere istanziato:
– in late binding mediante Server.CreateObject(ProgId)
– in early binding creando un assembly di interoperabilità usando
tblimp.exe o VS .NET
– Mediante il tag <object>
• L’uso di componenti non free-threaded richiede
l’inserimento dell’attributo aspcompat=“true” nella
direttiva Page
– Es: Tutti quelli fatti in VB “Prehistoric Edition” 
COMe complicare le cose 
• Le applicazioni ASP “serie” non accedono al db,
perché:
– Ci hanno insegnato a implementarle con architettura
multi-tier
– Ci hanno detto di incapsulare l’accesso ai dati e le
regole di business in componenti COM
• …e ora?
• Possiamo migrare in 2 fasi:
– Pagine ASP  Web Form ASP .NET
– Server COM  Assembly .NET
Links
http://www.ugidotnet.org
http://forum.ugidotnet.org
http://mobile.ugidotnet.org
Scarica

ASP vs. ASP.NET