Gentili utenti vi informiamo che il team di MyTech si è spostato sul canale Hitech & Scienza di Panorama.it

      non hai uno username? regìstrati   /   recupera la password

apple / google / microsoft
unmapped

Introduzione alla tecnologia Asp.NET

Scritto da Marco Poponi

Prosegue il corso sull’ambiente di sviluppo Microsoft. Sono di scena questo mese le potenzialità di .NET Remoting per la creazione di un’infrastruttura distribuita.
Quando Microsoft introdusse la tecnologia Active Server Pages, Asp, nel 1996 gli sviluppatori Web si trovarono davanti uno strumento potente e semplice per lo sviluppo di applicazioni Web. L’utilizzo di isole di codice eseguibile in mezzo al codice Html permetteva di scindere le responsabilità tra la parte di grafica-design e quella più propriamente inerente la soluzione applicativa. Questo in un mondo dominato da soluzioni, come Cgi e estensioni Isapi, dove il codice business era generalmente inscindibile da quello strutturale della pagina Html.

Ben presto però la mole di applicazioni web crebbe, e con questa la complessità delle applicazioni stesse. Inoltre nel tempo anche la tipologia delle applicazioni web è andata cambiando: è esperienza comune degli sviluppatori sentirsi chiedere di “portare l’applicazione X sul web”.

Molte soluzioni si sono affiancate perciò alle Asp: da J2EE alle pagine .php, a volte più sull’onda di una moda, a volte proprio per caratteristiche non eccellenti della tecnologia Asp: principalmente la mancanza di una libreria di funzioni e di oggetti sofisticata a cui fare riferimento, e un modello di programmazione non proprio naturale.

In questo articolo verrà fatta una breve panoramica sulla tecnologia evolutiva delle pagine Asp, Asp.NET, e verranno mostrati semplici esempi di programmazione.

Microsoft .NET ha introdotto una tecnologia radicalmente nuova per lo sviluppo di applicazioni web, Asp.NET, che ha tutte le carte in regola per rispondere con successo alle necessità sempre più spinte degli sviluppatori web. Anche senza conoscere quali siano le peculiarità della tecnologia Asp.NET, si intuisce come tutto si basi sulle smisurate fondamenta del Framework .NET, risolvendo il problema della libreria di base cui far riferimento. In particolare il .NET framework permette di utilizzare un insieme di classi di libreria fondamentali per le moderne applicazioni, in particolare le pagine Asp.NET potranno avvalersi di servizi come accesso ai dati (integrato e ottimizzato per soluzioni specifiche, come quelle basate su SQL Server); supporto per XML; Directory Services, Regular Expressions, supporto per MSMQ.

Inoltre la base class library permette l’accesso ad esempio a classi che gestiscono in maniera nativa collezioni (namespace System.Collections); multithreading (namespace System.Threading); I/O (namespace System.IO), tutta una serie di servizi di scrittura su file e stream sono forniti allo sviluppatore web; Reflection (namespace System.Reflection), per il caricamento e la gestione di assembly; sicurezza (namespace System.Security), servizi di crittografia, ma soprattutto di identificazione, autenticazione, policies. Spicca la semplicità con cui vengono gestiti gli utenti di dominio, e il supporto nativo per Microsoft Passport.

Un problema delle pagine Asp era che lo sviluppatore si trovava legato ai linguaggi di scripting propri della tecnologia, VBScript e JScript: da .NET le pagine Asp.NET ereditano anche la possibilità di essere scritte in uno qualunque dei linguaggi “managed”, ovvero C#, VB.NET, J# e qualunque linguaggio verrà ad avere un’implementazione per la CLR (Common Language Runtime). Questo porta ovvi vantaggi. Il codice è compilato, non interpretato.

La prima volta che una pagina aspx viene richiesta è compilata in un assembly identificato univocamente e messo in una cartella di cache, quindi tutte le susseguenti richieste saranno ottimizzate, anche se IIS (Internet Information Server) viene riavviato. Si ottiene un forte controllo sui tipi, eliminando possibili malfunzionamenti dovuti a errori di conversione o di istanza. Si dispone di una maggiore semplicità di installazione. Applicazioni Asp di livello professionale sono in genere composte da decine o centinaia di pagine, DLL ActiveX, DLL di libreria, fogli di stile ecc. Le DLL debbono essere registrate, e ri-registrate dopo modifiche alle interfacce.

In .NET tutto questo è semplificato dal cosiddetto XCOPY deployment. Non c’è virtualmente bisogno di registrare componenti managed, e installare un’applicazione vuol dire fare, appunto, un XCOPY dei file dell’applicazione direttamente nella directory del server.

Altra caratteristica che le pagine Asp.NET forniscono è l’indipendenza dal browser: il sacro Graal degli sviluppatori Web è sempre stato quello di produrre codice che fosse indipendente dal browser, pur fornendo il massimo delle prestazioni. Asp.NET allevia questo problema generando automaticamente codice differente a seconda del browser dell’utente. Nonostante questa indipendenza, è bene notare che allo sviluppatore viene comunque mostrato il tipo di browser dell’utente, insieme con le sue capacità (HttpRequest.Browser). Con Asp.NET sono introdotte anche novità nella filosofia di progettazione e di realizzazione di applicazioni che non solo permettono di aumentare drasticamente la produttività, ma cambiano l’approccio alla programmazione Web, rendendolo più uniforme con la programmazione di applicazioni ad eventi e introducendo fra gli altri i concetti di Web Forms, Eventi, Controlli Web e Code Behind. Soffermiamoci su questi punti.

Una definizione per le Web Forms potrebbe essere semplicemente quella di pagine web costruite con Controlli sul server e Gestori di Eventi. Per lo sviluppatore Visual Basic o MFC questi concetti sono naturali, per lo sviluppatore Asp possono risultare del tutto inaspettati. In realtà ciò di cui si dispone è proprio la progettazione della pagina web come si farebbe per una Form (una finestra in gergo VB): aggiungendo alla pagina controlli, ovvero entità logiche di processo autocontenute ed esponenti metodi, proprietà, e gestori di evento.

Nell’ambito Asp.NET i controlli incapsuleranno sia tutta la logica concernente le loro funzioni business, quali per esempio calcoli ed estrazioni di dati da recordset, sia le funzioni di rendering, ovvero tutta la logica che produrrà l’Html inviato al client. Tali controlli verranno eseguiti sul server, e risponderanno ad eventi generati dal client: essi saranno pezzi di Html e codice .NET che potranno essere usati, scritti e riusati dallo sviluppatore. Addirittura potranno essere scritti “ereditando” le funzionalità (in senso OOP) da altri controlli, o da parti del Framework.

Lo sviluppatore di pagine Asp.NET può avvalersi dell’interfaccia di Visual Studio.NET, nettamente superiore rispetto a quella di Visual InterDev: si faccia riferimento alla figura 1 per un esempio di questa costruzione visuale delle pagine Asp.NET, tramite il designer e la toolbox, finestra in cui scegliere i controlli da trascinare sull’area della pagina.

• Come questa tecnologia migliora la realizzazione di pagine dinamiche? Facciamo un esempio. Dovendo mostrare una lista di records in Asp, senza avvalersi di tecnologie quali XML-XSLT, quello che si faceva era pressappoco questo, avendo in Rs un Recordset ADO debitamente popolato:

Dim Fld
If not Rs.EOF then
Response.Write “<table border=1
cellspacing=1 cellpadding=1>”
Response.Write “<tr>”
For each Fld in Rs.Fields
Response.Write “<td><B>”
&Fld.Name& “</B></td>”
Nex
Response.Write “</tr>”

While Not Rs.EOF
Response.Write “<TR>”
For each Fld in Rs.Fields
Response.Write “<td>”
& Fld.Value & “</td>”
Next
Response.Write “</TR>”
Wend
Response.Write “</TABLE>”
End if


Ovvero si creava una tabella Html e ciclicamente la si popolava con i campi estratti dal RecordSet. Vediamo come un risultato analogo (anzi qualitativamente superiore) si possa ottenere con un il controllo DataGrid (sì avete letto bene, Datagrid) di Asp.NET, sempre omettendo il codice di estrazione dei dati:

<script language=”C#” runat=”server”>
(…) codice per estrarre i dati da
SQLServer in un command

MiaDataGrid.DataSource=MioCommand.Ex
ecuteReader();
MiaDataGrid.DataBind();
</script>


• E’ chiara la maggiore semplicità, chiarezza e compattezza del codice, che porta ad una produttività di livello superiore. Nelle figure che corredano l’articolo si può vedere come è possibile, a design time, assegnare delle proprietà complesse e avanzate al nostro controllo DataGrid: dall’aspetto della tabella generata (figura 2) a caratteristiche più complesse e utili, come il tipo di paginazione (figura 3). Lo sviluppatore non dovrà più reinventare ogni volta la ruota, riscrivendo il codice che permetta la divisione su varie pagine dei risultati, basterà assegnare un valore ad una proprietà.

Anche gli altri controlli espongono proprietà, che possono essere decise a design time in maniera del tutto analoga a come vengono definite per i controlli Windows: in figura 4 si vede come possano essere impostate le proprietà per una TextBox. Questa azione di definizione della pagina nel designer, porterà alla generazione, da parte dell’IDE di Visual Studio .NET del seguente codice (per quanto riguarda la TextBox):

<asp:TextBox id=”TitoloDisco” style=”Z
-INDEX: 101; LEFT: 192px; POSITION:
absolute; TOP: 24px” runat=”server”
Width=”168px” BorderColor=”Goldenrod”
BorderStyle=”Dotted” BorderWidth=”1px”
BackColor=”#C0FFC0” MaxLength=”45”
Font-Names=”Arial”>
</asp:TextBox>


chiaramente, quello che verrà generato dall’applicazione a run-time, e inviato al browser, sarà qualcosa del tipo:

<input name=”TitoloDisco” type=”text”
maxlength=”45” id=”TitoloDisco”
style=”background-color:#C0FFC0;border-
color:Goldenrod;border-width:1px;border-
style:Dotted;font-family:Arial;width:168px;Z-
INDEX: 101; LEFT: 192px; POSITION: absolute;
TOP: 24px” />

Ovvero un normalissimo elemento Html. In figura 5 si può vedere la pagina html prodotta dalla pagina aspx (questa è la desinenza standard delle pagine Asp.NET) costruita in figura 4. Generalmente quello che si fa in Asp, una volta scritto un pezzo di codice riutilizzabile, è utilizzare la cosiddetta “ereditarietà del notepad”, ovvero il famigerato copia e incolla. Con Asp.NET tutto questo non sarà (quasi) più necessario. Basterà riusare i controlli sviluppati.

Addirittura, come già anticipato, se scontento di alcuni comportamenti della DataGrid fornita da Microsoft, lo sviluppatore potrà ereditare (nel vero senso della parola questa volta), la sua DataGrid da quella originale.

Quali sono i tipi di controlli che possono venire usati in Asp.NET? Generalmente si individuano le seguenti categorie di controlli:

Html Server Controls: in pratica l’equivalente degli elementi Html.

Web Server Controls: controlli forniti dal Framework, utilizzabili direttamente. Fra questi controlli ce ne sono alcuni, come lo stesso DataGrid, che possono essere collegati (DataBinding) a sorgenti di dati. I Web server controls forniti dalla FCL (Framework Class Library) possono essere divisi in varie class.

User controls: controlli realizzati dall’utente, risiedono in pagine con estensione ascx, e sono fondamentalmente pezzi di codice Html e .NET che possono essere facilmente riutilizzati. Sono utili per richiamare con semplicità parti di applicazione, come ad esempio un menu di navigazione, presenti in più pagine. Possono avere proprietà ed eventi come i Web Controls.

Custom Controls: Disegnati dall’utente, sono veri e propri controlli, con interfacce simili a quelle fornite dalla FCL. Non sono più pezzi di Html, l’utente entra nel merito del processo di rendering, di gestione e creazione del PostBack e del ViewState. Possono essere costituiti da controlli compositi, e ereditare da classi del FrameWork.

Commenti   (Inserisci un commento)

Ancora nessun commento.

Effettua il login