Che cos’è ASP.NET?
ASP.NET è un framework per applicazioni web lato server di Microsoft. Gli sviluppatori utilizzano ASP.NET per creare siti dinamici, applicazioni e servizi per il web. Dopo una fase di sviluppo durata un decennio, il framework oggi è disponibile come ASP.NET Core.
La storia dello sviluppo di ASP.NET
Originariamente sviluppato da Microsoft, ASP.NET oggi fa parte della .NET Foundation. Mentre le prime versioni furono rilasciate come software a pagamento, la versione attuale ASP.NET è un progetto open source.
Quello che conosciamo oggi come ASP.NET è il risultato di un processo di sviluppo durato un decennio. Da qui l’evoluzione da ASP, ad ASP.NET e infine ad ASP.NET Core. Parallelamente ai progressi nel settore della tecnologia web, nel corso degli anni il framework è cambiato in modo drastico. Qui di seguito vi presenteremo la storia dello sviluppo di ASP.NET:
Tecnologia | Ambiente di sviluppo | Versione corrente | Estensione |
---|---|---|---|
ASP | Windows | 3.0 / 2000-02 | .asp |
ASP.NET | Windows | 4.8 / 2019-04 | .aspx/.aspx.cs, .aspx.vb, ecc. |
ASP.NET Core | cross-platform | 5.0 / 2020-11 | .cshtml, .vbhtml, ecc. |
Create la vostra homepage senza conoscenze di programmazione! Con i pacchetti MyWebsite di IONOS sarà semplicissimo.
Active Server Pages (ASP): il primo linguaggio di scripting lato server di Microsoft
Gli “Active Server Pages” (ASP) originari sono stati il primo linguaggio di scripting lato server rilasciati da Microsoft. Grazie agli Active Server Pages, dal 1996, è stato possibile creare siti web dinamici su un server. Gli altri linguaggi di scripting si appoggiano solitamente a Linux come sistema operativo e a un server web open source come Apache. Microsoft ha posto davanti a loro gli Active Server Pages come componente dell’“Internet Information Server” (IIS) per Windows.
Le funzioni base di ASP si possono in qualche modo paragonare a PHP o alle “Java Script Pages” (JSP). Tutti e tre i linguaggi utilizzano file di modello. I file di modello contengono pezzetti di codici eseguibili, incorporati nei contenuti statici HTML. Il codice è scritto con tag speciali per evitare che si confonda con i vicini HTML. I dialetti specifici di Windows disponibili all’epoca e cioè VBScript, JScript e PerlScript furono utilizzati come linguaggi di programmazione.
Per accedere a un URL attraverso il browser (“request”) si esegue un codice sul server. L’esecuzione crea contenuti HTML inseriti in strutture HTML predefinite. Il risultato complessivo è un documento composto da contenuti statici e dinamici di tipo HTML che è inviato come risposta al browser (“response”) e mostrato all’utente. Ciascuna modifica dei contenuti dei siti, per esempio dopo gli input dell’utente, richiede un nuovo ciclo completo di richiesta e risposta e un nuovo caricamento del sito. Di seguito un esempio di codice ASP:
<p>
The server’s current time:
<%
Response.Write Now()
%>
</p>
ASP non era ancora un framework ma era utilizzato piuttosto come una raccolta sparsa di pochi oggetti da cui si creava un sito dinamico:
- Application
- Request
- Response
- Server
- Session
- ASPError
ASP.NET: dalle Active Server Pages al framework
ASP.NET fu presentato intorno al 2003 come successore del classico ASP. Al posto di una raccolta sparsa di oggetti si arrivò a utilizzare il .NET Framework come struttura base. Questo processo astratto richiedeva spesso passaggi come l’autenticazione e l’autorizzazione degli utenti e l’accesso al database. Nel complesso ASP.NET si può paragonare a grandi linee con i framework di Java come “Struts” o “Spring”.
Le funzioni decisive di ASP.NET furono i “Web Forms” che permisero ai programmatori esperti di Windows di programmare siti dinamici. Gli sviluppatori potevano oscurare i meccanismi di funzione del web e continuare ad attingere ai flussi di lavoro e agli ambienti di sviluppo già noti. Furono impiegati in particolare degli strumenti visivi esclusivi di Windows per lo sviluppo rapido di applicazioni (“Rapid Application Development”, RAD).
I Web Forms hanno permesso agli sviluppatori di Windows di entrare rapidamente nel mondo della programmazione web. Allo stesso tempo, però, questo modello ha limitato la misura dei controlli sui siti HTML realizzati. Con ASP.NET MVC si aggiunse presto un modello di sviluppo alternativo che seguiva il modello stabilito “Model View Controller” (MVC) e permetteva una separazione netta degli elementi (“Separation of concerns”). Vicino al framework rivoluzionario “Ruby on Rails”, ASP.NET MVC offrì la funzione dello “Scaffolding” (letteralmente: impalcatura) di un progetto.
Nel frattempo, ASP.NET è stato sostituito dal successivo “ASP.NET Core”. Nell’uso quotidiano, però, i due nomi sono spesso utilizzati come sinonimi.
ASP.NET Core: un nuovo sviluppo su una base open source
Il rilascio di ASP.NET Core ha rappresentato un cambio di rotta nell’organizzazione del framework. Nell’ambito del passaggio progressivo di Microsoft, lo sviluppo di ASP.NET Core è stato affidato alla tutela della .NET Foundation. Il testo fonte del progetto è regolato da una licenza open source.
Sul piano tecnico, ASP.NET Core è una versione ridisegnata di ASP.NET 4.0 che ha messo insieme elementi di ASP.NET generati dalla crescita organica, permettendo lo sviluppo di progetti ASP.NET Core e l’hosting al di fuori degli ecosistemi Windows. Con Windows si utilizza ASP.NET Core su un framework .NET, sugli altri sistemi operativi invece il framework .NET Core.
Di pari passo con gli sviluppi della tecnologia web, ASP.NET Core è compatibile con il cloud. Come servizi di hosting per ASP.NET, oltre ai tradizionali Internet Information Server (IIS) offerti da Windows, si utilizzano anche ambienti aperti di sviluppo server e i container. Il framework supporta codici lato client e i modelli moderni della programmazione reattiva. Così ASP.NET Core si avvicina ai framework JavaScript come React.
Per quali progetti è adatto ASP.NET?
Il framework ASP.NET permette di realizzare i progetti web più disparati tra cui siti e applicazioni web dinamici, come le “Single Pages Apps” (SPA). Originariamente, era possibile applicare servizi basati sul web come API e sistemi di comunicazione in tempo reale. Nel corso degli anni, hanno trovato impiego per i vari scopi diversi modelli che vi mostreremo in seguito offrendovi una panoramica dello sviluppo storico.
Modelli di programmazione con ASP.NET
A partire dal 2000, con i progressi della tecnologia web, sono stati integrati nuovi modelli per lo sviluppo con ASP.NET. Potete immaginarli come se fossero una cassetta degli attrezzi: per diversi progetti sono a disposizione diversi attrezzi. In base alle esigenze è possibile combinare più modelli all’interno di un progetto. Con il rilascio di ASP.NET Core è stato possibile mettere insieme i numerosi modelli di programmazione a crescita organica semplificando la scelta di quelli più adatti.
ASP.NET Web Forms
I classici Web Forms permettono di mettere insieme pagine a partire da elementi predefiniti con un incastro di elementi grafici dove i singoli componenti sono posizionati tramite funzione drag&drop. Gli sviluppatori esperti nella programmazione di Windows hanno apprezzato particolarmente i Web Forms che gli permettevano di utilizzare strumenti già noti per il “Rapid Application Development” (“sviluppo rapido delle applicazioni”, RAD) con la differenza che il prodotto finale non creava un’applicazione di Windows ma un sito dinamico.
Il modello dei Web Forms si poggia sul modello di Microsoft di classe code-behind che comporta una divisione degli elementi:
- I file di modello con l’estensione .aspx definiscono la struttura HTML di un sito e contengono caratteri jolly per i contenuti creati in modo dinamico.
- La vera logica di presentazione dell’applicazione è depositata in un file separato con l’estensione .aspx.cs o .aspx.vb che rappresenta il file di classe code-behind che gli dà il nome.
- Il client richiede il file .aspx disponibile in basso all’URL. Sul server si combinano gli elementi statici e dinamici. Il documento HTML che ne risulta è inviato al client.
- Con gli input dall’utente sulla pagina sono trasmessi i dati allo stesso URL tramite richiesta GET o POST e rielaborato il file di classe code-behind.
Per implementare la logica di presentazione si utilizza un modello orientato agli oggetti: il file di classe code-behind definisce una classe derivata. Solitamente si utilizza il linguaggio di programmazione C# o Visual Basic. È interessante che il file di classe code-behind debba essere precompilato una volta sola permettendo un’esecuzione più rapida e una maggiore resistenza in caso di errori durante l’apertura della pagina.
ASP.NET MVC
Diversamente dall’ASP originario, i Web Forms hanno rappresentato un passo decisivo in direzione della divisione degli elementi. Nell’ASP le parti statiche HTML e i codici si trovavano insieme nello stesso file di classe code-behind mentre i Web Forms sono riusciti a dividere i file di template e i file di classe code-behind. Con la versione ASP.NET MVC ad ASP.NET è stato aggiunto un nuovo modello di programmazione che ha permesso lo sviluppo web secondo il modello Model View Controller (MVC).
Il modello MVC divide tra loro la logica di presentazione (“Model”), il template di rappresentazione (“View”) e gli input dell’utente (“Controller”). Uno dei vantaggi di MVC è la possibilità di verificare meglio i singoli elementi. Inoltre, la divisione degli elementi permette di utilizzare meglio i diversi controller. Invece di inviare tutti gli input dall’utente a un unico URL e caricare il sito daccapo, si utilizza, ad esempio, lo strumento AJAX tramite jQuery che permette di ricaricare nuovamente parti di una pagina. ASP.NET Core MVC ha portato avanti la tradizione di ASP.NET MVC fino ad arrivare alla versione attuale del framework.
ASP.NET Web Pages
ASP.NET Web Forms e ASP.NET MCV sono molto adatti per creare siti complessi. Se avete bisogno di diverse pagine con elementi che si ripetono, vanno bene entrambi i modelli di programmazione. E cosa fare invece se non ci servono? Immaginiamo di dover realizzare un sito semplice composto da una pagina singola o da pochissime pagine. Ci sono un paio di elementi dinamici, ma il focus centrale è rivolto piuttosto a un layout sofisticato invece che a una logica di presentazione complessa e al trattamento degli input dell’utente. Sarebbe uno spreco definire le proprie classi o sforzarsi per realizzare una divisione secondo il modello MVC.
Per i casi in cui la logica di presentazione deve restare in secondo piano rispetto al layout e al design, si prestano bene le ASP.NET Web Pages. In modo simile ai classici ASP o PHP, all’interno di un file troviamo una combinazione di strutture statiche HTML ed elementi dinamici del codice. Qui però si applica una sintassi speciale. Le Web Pages di ASP.NET sono particolarmente adatte per creare pagine di destinazione.
ASP.NET Web API
I modelli di programmazione presentati finora servono tutti a creare contenuti HTML per utenti in carne e ossa. Ma il framework ASP.NET contiene anche modelli che servono a preparare infrastrutture di progetti web. ASP.NET Web API è un modello di programmazione per creare interfacce API REST. Gli accessi agli endpoint avvengono tramite AJAX mentre per la trasmissione dei file si utilizza il formato JSON o XML.
ASP.NET WebHooks
ASP.NET WebHooks è un’implementazione del modello dei WebHooks. I WebHooks permettono di pubblicare e sottoscrivere un abbonamento ai risultati che avvengono in un sistema. Può trattarsi, ad esempio, dell’aggiunta di un file o della ricezione di un pagamento. Un abbonato registra la modifica che dovrà avvenire nel sistema. Per farlo inserisce un URL, cioè il WebHook che contiene il nome. Se appare il risultato registrato, il sistema richiama il WebHook e l’abbonato viene informato sul risultato.
SignalR
SignalR è un framework di comunicazione in tempo reale tra client e server. Il framework si basa sul protocollo standard WebSocket e permette il trasferimento bidirezionale di dati. I browser che non leggono i WebSocket vengono supportati da meccanismi di fallback. SignalR si utilizza spesso per realizzare servizi di chat tramite browser o software di videoconferenze.
Nuovi modelli di programmazione di ASP.NET Core
ASP.NET Core è il successore di ASP.NET. Il framework ASP.NET Core è stato riscritto daccapo ma presenta un’alta compatibilità con il suo predecessore. Quelli che prima erano elementi separati con ASP.NET sono stati riuniti nella versione Core. Per di più alcuni elementi sono stati risviluppati ma hanno mantenuto il loro vecchio nome. Per questo motivo il framework SignalR esiste sia nella versione ASP.NET sia in quella di ASP.NETCore. Qui di seguito vi mostreremo gli ultimi sviluppi più importanti di ASP.NET Core.
ASP.NET Core MVC: il modello di API View Controller Sites
Con ASP.NET Core MVC sono state riunite le funzioni di ASP.NET MVC e ASP.NET Web API. Questo ha permesso di sviluppare applicazioni web dinamiche con interfaccia utente modulare sulla base di API usando come struttura generale il framework .NET Core. Con MVC si possono applicare modelli delle versioni .NET API e viceversa.
Razor Pages: un nuovo sviluppo di ASP.NET Web Pages
Le Razor Pages fanno parte di una nicchia simile a quella delle ASP.NET Web Pages e si rivelano utili quando il modello Model-View-Controller potrebbe creare inutili overhead. Se, ad esempio, volessimo creare una pagina di destinazione, potremmo farlo come Razor Page in modo semplicissimo. La sintassi di Razor si applica spesso per creare template di siti. Come linguaggi di programmazione, invece, si usano C# e Visual Basic come per tutto l’universo di .NET.
Guardiamo un esempio di Razor Page. Si nota subito che al posto dei linguaggi soliti del template con i tag di apertura e chiusura del codice si utilizza il carattere @.
@page
@model HelloWorldModel
@if (Name != null) {
<p>Hello dear @Name</p>
}
<form method="post">
<p>
<label asp-for="Name"></label>
<input class="form-control" asp-for="Name" />
</p>
<input type="submit" value="Say Hello" />
</form>
Programmazione reattiva con Blazor: “.NET in the browser”
Il framework Blazor si poggia sulla sintassi di Razor di cui abbiamo già parlato; in realtà Blazor sta proprio per “Browser + Razor”. Come suggerisce il nome stesso, Blazor si concentra sul browser come runtime system. Con Razor Pages avviene il trattamento dell’interazione dell’utente sul server. Blazor permette la programmazione reattiva, grazie alla quale i singoli elementi delle pagine nel browser reagiscono in modo dinamico alle modifiche. Per questi aspetti Blazor si mostra in qualche modo simile a React, Angular e Vue.
Di seguito vi mostriamo un semplice esempio di programmazione con Blazor. Associamo il valore di un box di ricerca alla variabile Name. Qui si applica la sintassi di Razor:
@page "/"
<h1>A Blazor example</h1>
<p>Welcome to Blazor, @Name.</p>
<input bind="@Name" type="text" class="form-control" placeholder="Name" />
Oltre alla programmazione reattiva, Blazor presenta un altro aspetto molto interessante: con Webassembly si possono compilare i linguaggi di .NET per l’esecuzione nel browser. Blazor viene spesso definito anche un modello di “.NET in the browser”. Il suo grande vantaggio è non dover scrivere JavaScript per il codice lato client. Lo sviluppo è invece in C# o Visual Basic; il codice può accedere agli elementi noti del framework .NET.
Quali sono i vantaggi e gli svantaggi di ASP.NET?
ASP.NET e. ASP.NET Core mettono a disposizione un ambiente ben avviato per lo sviluppo di progetti web più disparati. Ne fanno parte linguaggi di programmazione, editor di codici e IDE nonché strumenti di sviluppo e un ecosistema fiorente di pacchetti disponibili gratuitamente. Oggi possono essere utilizzati anche metodi moderni come la programmazione reattiva, WebSockets e WebAssembly. Tradizionalmente, il più grande vantaggio nell’utilizzo di ASP.NET risiedeva nel suo stretto legame con Microsoft e il vendor lock-in collegato. Con la progressiva trasformazione in progetto open source, quest’aspetto è andato via via diminuendo.
Quali sono i vantaggi di ASP.NET?
Gli sviluppatori con esperienza nella programmazione negli ecosistemi di Microsoft sfruttano al meglio i vantaggi di ASP.NET perché riescono ad accedere facilmente ai linguaggi, agli strumenti e ai flussi di lavoro già noti. Come sottostruttura di ASP.NET si applica l’affidabile framework .NET. Per questo motivo sono disponibili gli elementi compatibili a un grande numero di casi d’uso. Un grande vantaggio è sicuramente il poter realizzare applicazioni complesse in modo rapido ed efficiente.
Il framework .NET ha una struttura modulare e ha come runtime system il “Common Language Runtime” (CLR). Questo permette di utilizzare diversi linguaggi di programmazione, a patto che siano compatibili con la “Common Language Infrastructure” (CLI). Oltre ai soliti linguaggi orientati agli oggetti C# e Visual Basic, anche il nuovissimo linguaggio funzionale F# fa parte delle CLI sviluppate da Windows. Blazor e WebAssebly permettono di eseguire i linguaggi CLI come codice lato client sul browser.
Originariamente ASP.NET era un software a pagamento sotto il controllo di Microsoft. Oggi invece rappresenta un progetto open source sotto la tutela della .NET Foundation. Nell’ambito di questo processo sono stati implementati il gestore di pacchetti NuGet e il relativo repository di pacchetti gratuito. Similmente a NPM o RubyGerms, gli sviluppatori di ASP.NET hanno a disposizione un ecosistema di pacchetti gratuiti.
Quali sono gli svantaggi di ASP.NET?
Il grande vantaggio di ASP.NET, e cioè l’utilizzo dell’ecosistema specifico di Microsoft, rappresenta al tempo stesso anche il suo grande svantaggio perché lo sviluppo web, di solito, si basa per la maggior parte su piattaforme, linguaggi e formati gratuiti e aperti. Gli sviluppatori che si cimentano per la prima volta nell’universo .NET, si trovano davanti a una varietà confusionaria di versioni e modelli di programmi.
Chi in passato voleva sviluppare con il framework ASP.NET, poteva farlo soltanto con Windows. Da qualche anno Microsoft si è aperta verso gli standard più utilizzati e le licenze open source. Con la comparsa di ASP.NET Core, lo sviluppo è diventato possibile su tutte le tre grandi famiglie di sistemi operativi cioè Windows, macOS e Linux. Inoltre, è possibile mantenere l’ambiente di sviluppo in un container Docker.
La versione classica di ASP.NET permetteva invece l’hosting solo sui servizi server di Microsoft Internet Information Server (IIS). Questo rappresentava un grandissimo svantaggio rispetto agli altri framework per applicazioni web che funzionano quasi tutti su Linux. L’hosting di ASP.NET richiede requisiti particolari e non è disponibile su tutti i provider. Grazie a “Mono”, un’implementazione gratuita di .NET, però, fu reso possibile utilizzare gli altri server web. Il vero punto di svolta è stato la comparsa di .NET Core e di “Open Web Interface for .NET” (OWIN). OWIN disaccoppiò un’applicazione di ASP.NET dal relativo server web, abbattendo in questo modo il più grande scoglio sull’utilizzo di ASP.NET.
Quali sono i requisiti necessari per l’hosting di ASP.NET?
Il framework ASP.NET è molto particolare per quel che riguarda l’hosting. Normalmente i framework per applicazioni web basati sui linguaggi PHP, Java, Python o JavaScript operano con i server di Linux. Soltanto che in passato, per l’hosting di applicazioni di ASP.NET era richiesto Windows come sistema operativo del server. In seguito, si è aggiunto il server web di Microsoft chiamato Internet Information Services (IIS).
Per l’hosting di un’applicazione di ASP.NET sui server di Windows bisognava selezionare i server dedicati Windows. In questo modello di hosting i provider forniscono manutenzione costante dei server, rilasciando software di aggiornamento e semplificando notevolmente l’hosting di applicazioni di ASP.NET Core che possono essere ospitate dall’IIS e da numerosi altri server. Inoltre, è disponibile il server web integrato Kestrel che funziona su Windows, Linux e macOS. I server web più amati come Nginx e Apache possono essere configurati insieme come Reverse Proxy e utilizzati con Kestrel. Per gli utenti di Windows è disponibile anche HTTP.sys, un’alternativa a Kestrel.
Utilizzate l’hosting Windows con ASP.NET di IONOS.