|
Tutorial >> Migrare da ASP ad ASP.NET |
Migrare da ASP ad ASP.NET: Introduzione
Questo articolo non è un tutorial su ASP.NET scritto nello stesso stile di quelli
che si trovano in abbondanza in rete, quasi sempre troppo prolissi sui
concetti fondamentali e poveri di esempi pratici.
Spesso abbiamo bisogno di poche righe che ci introducano immediatamente nel
nucleo della materia, lasciandoci così la possibilità di concentrarsi
successivamente sui dettagli implentativi.
A prima vista le operazioni che si devono effettuare per passare da ASP ad
ASP.NET non sono molte né complicate e quello che si ottiene è sbalorditivo.
Sopratutto se, già in ASP, si "pensa" e si scrive codice orientato agli oggetti: OOP
(Object Oriented Programming) e guidato dagli eventi.
Le possibilità offerte dal nuovo framework sono, a dir poco, stupefacenti!
|
|
|
|
MS Visual Studio .NET - Nuovo progetto web vuotoEcco, dunque, l'elenco dei passi operativi per migrare da Classic ASP ad ASP.NET dopo che l'installazione del Framework .Net e Visual Studio .NET (oppure Visual Web Developer Express) è stata completata:
1. Creare una copia della directory (es. /MYSITE) contente il sito in ASP e rinominarla (es. /MYSITE_NET);
2. Creare, tramite IIS o PWS, una directory virtuale che punti ad /MYSITE_NET;
3. Aprire l'ambiente di sviluppo .NET e creare un nuovo progetto Web vuoto (es. /MYSITE_NET/myPrjNet.vbproj) nella directory /MYSITE_NET, dopodiché aggiungere a questo i file .asp del nostro sito (dal box "Soluzioni" click col tasto destro del mouse su myPrjNet.vbp e scegliere "Aggiungi elemento esistente": si aprirà la finestra per selezionare i file; per visualizzare gli ASP selezionare il filtro "File Web") puntata già sulla directory di lavoro. |
|
Avvio dell applicazione .NETImpostiamo, prima di tutto, un file di default (ovvero il primo file che verrà eseguito): lo selezioniamo dal box "Soluzioni", click col tasto destro del mouse "Imposta come Default".
Sia ad esempio /MYSITE_NET/default.asp; a questo punto potremmo già eseguire la nostra applicazione: infatti, se avviamo con CTRL+F5 e se il browser è in modalità "In linea", se non lo fosse, accertarsi che il IIS (Internet Information Server) sia avviato e poi da Explorer -> Menu File -> In Linea. Tutto dovrebbe funzionare come sempre. Sorpresi?
ASP.NET è perfettamente compatibile con ASP e con esso può convivere benissimo, ma se per esperimento proviamo a rinominare un nostro file ASP con l'estensione ASPX le cose cambiano e non di poco...
Prima di fare tutto questo però passiamo ad un'altra meraviglia di questo ambiente di sviluppo: il Debugger. |
|
Il Debugger di Visual Studio .NETProvate ad eseguire l'applicazione (dimenticavo, ogni tanto salvate!) in modalità 'Debug' (F5). Molto probabilmente riceverete un messaggio del tipo: "Per i progetti ASP.NET verificare che esista il file web.config per l'URL specificato e che l'opzione 'debug' sia impostata a TRUE in quel file". Per ovviare a questo piccolo inconveniente procedere con Avvio -> Trova File -> web.config".
Insieme al vostro Framework almeno un esempio di questo file esiste già: non vi resta che farne una copia sulla vostra directory /MYSITE_NET/web.config e riprovare. Aprendo il file (XML) web.config con un editor di testo si scoprono altre cose interessanti, ma lascio al lettore la cura di analizzarlo.
Un altro modo per impostare il debug lato server di un singolo file ASP, ma non dell'intera applicazione, è quello di inserire come prima riga, la seguente direttiva:
< % @ Page Language=’vb’ Debug=’true’ % >
In questa riga di codice compare una delle nuove, fondamentali, direttive di ASP.NET: @Page, descritta nel paragrafo successivo.
Importante: l'esecuzione di applicazioni in modalità di debug causa un sovraccarico della memoria e una riduzione delle prestazioni. Assicurarsi che il debug di un'applicazione sia disattivato prima di distribuirla. |
|
Da ASP ad ASPX (e CodeBehind...)A questo punto possiamo provare a fare l'esperimento precedente; scegliamo un file asp in cui sia definito un form: converrà prima escluderlo dal progetto ([Gestione Soluzioni] -> myform.asp -> click col tasto destro del mouse -> "Escludi dal progetto") poi gli cambiamo l'estensione da .asp a .aspx e, quindi, lo riaggiungiamo al progetto.
Sicuramente otterrete un messaggio del tipo: "Il progetto non contiene un file di classe associato al web-form myform.aspx, crearne uno ora?". Ovviamente la vostra risposta non potrà che essere affermativa.
Il framework, a questo punto, farà due cose:
1. Inserirà la seguente riga all'inizio di myform.aspx:
< % @ Page CodeBehind=”myform.aspx.vb” Language=”vb” Inherits=”myPrjNet.myform” % >
Questa direttiva al compilatore (le pagine ASP.NET non sono interpretate, ma compilate; la descrizione del processo di compilazione però esula dagli scopi di questo articolo, pertanto vi rimando alla documentazione ufficiale fornita dalla casa di Redmond o agli innumerevoli tutorial di cui sopra), che deve essere unica per ciascun file .aspx, informa quest'ultimo su molti parametri di compilazione. |
|
La classe VB.NET e parametri di compilazione2. Il framework genererà un file di classe: myform.aspx.vb
Effettivamente quello che faremo è spostare tutto (o quasi) il codice scritto nella pagina myform.asp originaria nel file myform.aspx.vb, in particolare tutte le Function e Sub definite nel .asp diverranno, dopo aver specificato il corretto modificatore di classe (Public, Protected o Private), i nostri metodi della classe.
Tutte le classi generate in questo modo derivano dalla classe padre system.web.ui.page e possiedono due metodi principali privati: Page_Init() e Page_Load(), il cui significato mi sembra evidente.
Maggiori dettagli sui parametri di tali metodi li lascio scoprire al lettore. Parametri di compilazione, i principali sono:
1. [CodeBehind]: dove trovare il codice, ovvero la classe, che sta "dietro" la pagina .aspx, in questo caso nel file generato dal framework myform.aspx.vb;
2. [Language]: il linguaggio utilizzato: vb, C#, ecc.;
3. [Inherits]: la classe padre da cui eredita attributi e metodi (Public o Protected );
4. [Debug]: se eseguire o meno la pagina in modalità debug: True/False. Questa opzione, come già accennato, non deve essere settata se si utilizza il file web.config per il progetto corrente. |
|
Alcune novità di VB.NETA questo punto, dopo aver spostato tutti gli eventuali metodi nel file myform.aspx.vb (il codice "operativo", cioè quello che richiama i metodi della classe e che effettuano il rendering dei contenuti della pagina .asp rimane nel .aspx), se riproviamo ad eseguire in modalità Debug scopriremo la potenza di quest'ultimo.
Alcuni degli errori di sintassi più comuni nascono dalle novità di VB.NET, alcune delle quali sono:
Tutte le variabili devono essere necessariamente dichiarate ed eventualmente tipizzate (il tipo Variant non esiste più, se non si specifica il tipo di default sarà: Object);
Tutte le chiamate dei Metodi (Response.Write(), myRecordSet.Open(), ecc...) devono necessariamente essere dotate delle parentesi: non è possibile, ad esempio, scrivere:
Response.Write "Hello .NET!"
ma si scriverà:
Response.Write("Hello .NET!")
Le istruzioni Set e Let non sono più necessarie (tutto è ad oggetti!);
Il costrutto: While [...] Wend diventa: While [...] End While. |
|
Variabili di sessione tra asp ed aspxOvviamente non è necessario trasformare tutte le pagine .asp in aspx: infatti, come già detto, i due ambienti possono tranquillamente convivere (almeno in fase di migrazione...).
Se però dichiariamo delle variabili di sessione in una pagina .aspx, questa non sarà visibile alle pagine .asp, pertanto sarà necessario convertire queste ultime in .aspx con il metodo descritto (oppure 'duplicare' le variabili ...sconsigliato..). |
|
Conclusioni: perchè passare ad ASP.NETA questo punto vi chiederete: "Perché passare ad ASP.NET se la mia applicazione ASP funziona già a dovere?". Il motivo principale per cui passare ad ASP.NET è che tutto il cuore di un'applicazione web viene compilata in una DLL, pertanto se dovrete distribuire la vostra applicazione non fornirete i vostri codici sorgenti ma bensì solo le librerie compilate e le pagine ASPX, ASP, HTML... che utilizzano oggetti, con il loro attributi e metodi, definti all'interno delle DLL.
Altre motivazioni che si possono trovare sono numerose:
- Programmazione completamente Object Oriented, e quindi tutti gli innumerevoli vantaggi di quest'ultima:
- Ereditarietà singola e multipla
- Polimorfismo
- Incapsulamento
- Maggiore manutenibilità
- Riutilizzo del codice
- Documentazione del codice automatica da Reverse Enginering
- Per non parlare poi dell'ottimo e, secondo me, bellissimo Debugger
- I controlli server ASP.NET, di cui magari parlerò in articoli successivi.
Link utili:
|
|
Contesto e variabili di Sessione in C# e vb.netCome accedere al valore dello stato di sessione da una propria classe (c# o vb.net business class) ? Risposta: E' necessario adoperare HttpContext.Current per rilevare l'oggetto Context e poi accedere a Context.Session.
[Visual Basic] Imports System Imports System.Web
Public Class MiaClasse Public Sub MioMetodo() ' leggi il contesto della richiesta HTTP Dim _context As HttpContext = HttpContext.Current ' legge l'oggetto intrinseco Session Dim _value As Object = _context.Session("nome-variabile-di-sessione")
End Sub
End Class
[C#] using System; using System.Web;
public class MiaClasse {
public void MioMetodo() { // legge il contesto di elaborazione della richiesta HTTP HttpContext _context = HttpContext.Current;
// legge la variabile di sessione (intrinseca al contesto) object _value = _context.Session["nome-variabile-di-sessione"]; } }
|
|
|
FeedBack >> Migrare da ASP ad ASP.NET |
18/11/2003 - Arthur (New Zeland)> Hi there > Your article (ASP2ASP.NET) are really good. > I have one question though, about session variables. > Here we go, is there any way that I can send a session variables from asp.net to asp vice versa? > Thanks. > Arthur
Hy Arthur! No, you cannot directy send Session Variable from ASP.NET <-> to Classic ASP. You should try to 1) Duplicate Session Variable (with different name) 2) Use hidden field to pass Session variable values from an enviroment to another. By!
|
|
17/04/2003 - Hitesh (India)Hello sir! i am hitesh from india and i read your article ASP2ASP.NET from asp101.com and i should say it was really a very informative topic! I want to learn ASP.NET but i wanted to know whether it is good to learn from certification books. i have no plans of doing a certification at present but in the near future i might think about it. so just to play safe is it ok to practice from certification books, like from books on mcsd,mcp,mcad etc. if yes then which book is good, and if no then does that mean that there is a whole lot of difference between these certification books and the normal asp.net books??? i mean from which of these do u get to know real asp.net which is used or will be used in the industry. please do reply me sir. any other suggestions from u will be a hearty welcome. Hello Hitesh! I think You should using everything you can find on Internet! But a good Asp.Net Book should don't missing in your Library. Bye |
|
05/02/2002 - Michael Smith (Baltimora, USA)ASP2ASP.NET from www.asp101.com: Great Article! |
|
05/03/2002 - Jason Stevens (South Africa)ASP2ASP.NET: Great article....I probably learned more simple truths from your article than all the jargon-related ones on the web....nice and simple.... Can I ask a question? I am a solid ASP programmer that may move into a webmaster position at a small company with an SQL 2000 driven database. Although I want to learn ASP.NET (asp + vb) I am concerned by the technical server/network challenges to be overcome.... I mean what kind of a system - realistically - do you need for .NET?.. Many thanks Jason Hy Jason, to work fine with .NET your server challennes should be: 512 Mb Ram, a 2GHz Processor, Win 2000 Server, bye! |
|
05/12/2002 - Richard Ponton (New York, USA)A tip for ASP2 ASP.NET: One thing that took me a loooooong time to find out (and isn't obvious from the MS documentation) is how to "import" directories recursively. First, you start the blank project, as in your article. Next, From the menu "Project" click on "show all files". Finally, right-click on the folders you want to import and do "include in project". If you are doing this over Web Folders and you have a lot of files, go get a smoke or something because it's going to take a while...:-) Bye! |
|
27/10/2002 - Scott Roberts (USA)Hy Paolo! I really enjoyed your ASP2ASP.NET article! Bye Scoot! |
|
30/09/2004 - Alberto (Effetto.Net)Ciao Alberto! ti consiglio di leggerti (come credo avrai già fatto) il mio articolo. Poi per quanto riguarda la gestione di database tramite ADO.NET cerca i relativi articoli su www.asp101.com
Asp101.com mi sembra veramente fatto bene è sempre aggiornato ti consiglio di iscriverti alla loro newsletter.
Ogni tanto dai uno sguardo al sito "Madre" www.asp.net su cui c'è tutto!! Buon Lavoro > Ciao, vorrei chiederti se mi sai indicare un percorso per poter incominciare a programmare con .net . e' da circa 4 anni che programmo in asp per applicazioni web e sono un po' in difficoltà nel capire .net.
|
|
|
|
|