Un client utilizzando ASP.NET

Una delle funzionalità più importanti di .NET è la capacità di eseguire lo stesso codice tanto in applicazioni ASP.NET quanto in applicazioni client autonome. È tuttavia necessario tenere conto di alcune differenze, elencate di seguito. A differenza di quanto accadeva negli esempi precedenti, la risposta di una pagina ASP.NET a una richiesta HTTP è prodotta generalmente in codice HTML e la compilazione della pagina stessa avviene in modo dinamico. Le pagine ASP.NET vengono analizzate individualmente e ne viene verificata la sintassi. Infine, viene prodotta, tramite compilazione e chiamata, una classe di runtime .NET. L'oggetto compilato viene memorizzato nella cache; in questo modo alle richieste seguenti non verrà più eseguita la procedura di compilazione e l'esecuzione risulterà notevolmente più veloce.

Nella maggior parte delle pagine ASP esistenti è utilizzato il motore di scripting Microsoft JScript oppure Microsoft Visual Basic Scripting Edition (VBScript). Una versione di JScript compatibile con .NET è fornita con .NET Framework e l'aggiornamento del codice VBScript a Visual Basic risulta un processo assolutamente naturale. Nel codice riportato di seguito viene illustrata la pagina utilizzando il linguaggio Visual C#, ma la stessa pagina avrebbe potuto essere scritta in Visual Basic o JScript:

Listato 11. Client in ASP.NET (ClientASP.aspx)

<%@ Page Language="C#" Description="ASP.NET Component Test" %>
<%@ Import Namespace="CompCS"%>
<%@ Import Namespace="CompVC"%>
<%@ Import Namespace="CompVB"%>

<html>
<script language="C#" runat=server>
void Page_Load(Object sender, EventArgs EvArgs) {
   String Out = "";
   Int32 Count = 0;

   // Iterate through the component's strings, and concatenate them.
   Out = Out + "Strings from C# StringComponent<br>";
   CompCS.StringComponent myCSStringComp = new 
   CompCS.StringComponent();
   for (int index = 0; index < myCSStringComp.Count; index++) {
     Out = Out + myCSStringComp.GetString(index) + "<br>";
   }
   Out = Out + "<br>";

   // Iterate throught component's strings, and concatenate them.
   Out = Out + "Strings from Visual C++ StringComponent<br>";
   CompVC.StringComponent myVCStringComp = new 
   CompVC.StringComponent();
   for (int index = 0; index < myVCStringComp.Count; index++) {
      Out = Out + myVCStringComp.GetString(index) + "<br>";
   }
   Out = Out + "<br>";

   // Iterate over component's strings and concatenate.
   Out = Out + "Strings from Visual Basic StringComponent<br>";
   CompVB.StringComponent myVBStringComp = new 
   CompVB.StringComponent();
   for (int index = 0; index < myVBStringComp.Count; index++) {
      Out = Out + myVBStringComp.GetString(index) + "<br>";
   }

   Message.InnerHtml = Out;
}
</script>
<body>
   <span id="Message" runat=server/>
</body>
</html>

Questo codice è fondamentalmente uguale a quello utilizzato negli esempi di client autonomi, ad eccezione del fatto che viene creata una stringa, denominata out, e che tale stringa viene assegnata a una proprietà di un controllo server HTML.

**Nota   **Nel codice sarebbe stato possibile utilizzare Response.Write per scrivere la stringa direttamente nel flusso di output HTML.

Come linguaggio, nella pagina viene specificato Visual C# ma sarebbe stato possibile specificare Visual Basic o addirittura JScript:

<%@ Page Language="C#" Description="ASP.NET Component Test"

L'importazione di librerie in ASP.NET è leggermente diversa:

<%@ Import Namespace="CompVB"%>
<%@ Import Namespace="CompCS"%>
<%@ Import Namespace="CompVC"%>

Nelle righe precedenti il codice di script viene indicato con <%...%> e vengono specificati gli spazi dei nomi da importare. Come accennato in precedenza, gli assembly devono essere archiviati nella sottodirectory \Bin del punto iniziale dell'applicazione.

Un'altra raffinatezza di questa pagina è rappresentata dalla seguente riga:

<script language="C#" runat="server">

Questa riga specifica che il codice deve essere eseguito sul server e che il testo del codice non deve essere reinviato al client come parte del flusso HTML.

La libreria Web Form riconosce in particolare i metodi seguenti:

  • Page_Init
  • Page_Load
  • Page_DataBind
  • Page_PreRender
  • Page_Dispose
  • Page_Error

Questi metodi sono automaticamente connessi ai gestori eventi relativi agli eventi standard delle pagine. Il gestore eventi utilizzato più comunemente è quello relativo a Load. Questo gestore contiene la maggior parte del codice per il programma di esempio:

void Page_Load(Object sender, EventArgs EvArgs) {...}

Il resto del codice è molto semplice. Le stringhe vengono concatenate in una stringa più lunga, denominata out, che viene aggiunta al codice HTML con la seguente istruzione:

Message.innerHTML = Out

L'esecuzione del test di questa pagina richiede alcuni passaggi. Innanzitutto, è necessario che sul computer utilizzato per il test sia installato il seguente software:

  • Internet Information Services (IIS)
  • Common Language Runtime
  • ClientASP.aspx
  • I componenti compilati CompVC.dll, CompCS.dll e CompVB.dll

L'installazione di .NET Framework SDK su un computer in cui è già installato IIS consente l'utilizzo di ASP.NET sul computer. Se si installa IIS dopo l'installazione di SDK, è necessario reinstallare SDK.

In secondo luogo, è necessario configurare tramite Gestione Servizi Internet una directory virtuale che punti alla directory in cui si trova ClientASP.aspx. Per creare una directory virtuale utilizzando lo snap-in di IIS, utilizzare la seguente procedura:

  1. Selezionare il sito Web o FTP al quale si desidera aggiungere una directory.
  2. Fare clic sul pulsante Azione, posizionare il puntatore su Nuovo, quindi selezionare Directory virtuale.
  3. Utilizzare la creazione guidata Nuova directory virtuale per completare l'operazione.

Se si utilizza il file system NTFS, per creare una directory virtuale è anche possibile fare clic con il pulsante destro del mouse su una directory in Esplora risorse, quindi su Condivisione, quindi sulla scheda Condivisione Web. Per ulteriori informazioni, vedere l'argomento "Creating Virtual Directories" nella documentazione relativa a IIS, che si trova all'indirizzo http://localhost/iisHelp/ del computer sul quale è installato IIS (informazioni in lingua inglese).

In alternativa, è possibile creare la nuova directory virtuale eseguendo il file VBScript denominato CreateVRoot.vbs che si trova nella directory CompTest.

Infine, i componenti compilati devono trovarsi nella sottodirectory \Bin all'interno del punto di inizio per la directory virtuale dell'applicazione.

Se tutto è configurato correttamente, quando viene eseguito il file con l'URL http://localhost/NetSDK/PlatformIntroduction/ClientASP.aspx viene visualizzata un'istanza di Internet Explorer simile alla seguente:

Vedere anche

Riepilogo dell'esercitazione di sviluppo | Appendice A: strumenti per l'esplorazione degli spazi dei nomi