ASP. net
software
Logo
Logo
GenereIntegrated development environment
SviluppatoreMicrosoft Corporation
Data prima versionegennaio 2003
Ultima versione4.7.1 (17 ottobre 2017)
Sistema operativoMicrosoft Windows
LicenzaApache License 2.0
(licenza libera)
Sito webdotnet.microsoft.com/en-us/apps/aspnet

ASP.NET è un progetto open source[1][2] che comprende un insieme di tecnologie di sviluppo di software per il web, commercializzate da Microsoft. Utilizzando queste tecnologie, gli sviluppatori possono realizzare applicazioni web e servizi web (web service).

È stato rilasciato per la prima volta nel gennaio 2002[3] con la versione 1.0 del .NET Framework ed è il successore della tecnologia Active Server Pages (ASP) di Microsoft. ASP.NET è costruito sul Common Language Runtime (CLR), permettendo ai programmatori di scrivere codice ASP.NET usando qualsiasi linguaggio .NET supportato. Il framework di estensione ASP.NET SOAP permette ai componenti ASP.NET di elaborare messaggi SOAP.

Il successore di ASP.NET è ASP.NET Core. È una reimplementazione di ASP.NET come framework per applicazioni web modulare, insieme ad altri framework come Entity Framework. Il nuovo framework usa il nuovo progetto open-source .NET Compiler Platform (nome in codice "Roslyn") ed è multipiattaforma. ASP.NET MVC, ASP.NET Web API, e ASP.NET Web Pages (una piattaforma che usa solo pagine Razor) si sono fusi in un MVC 6 unificato[4].

Principi su cui si basa ASP.NET

[modifica | modifica wikitesto]

Sebbene il nome ASP.NET derivi da ASP (Active Server Pages) (la vecchia tecnologia per lo sviluppo web di Microsoft), esistono sostanziali differenze fra le due. Infatti ASP.NET si basa, come tutte le applicazioni della famiglia Microsoft .NET, sul CLR (Common Language Runtime).

Gli sviluppatori possono scrivere codice utilizzando uno qualsiasi dei linguaggi di alto livello supportati dal framework (libreria di classi) .NET, come ad esempio Visual Basic .Net (proprietario Microsoft), C# (pronunciato C sharp, linguaggio soggetto a una specifica di standardizzazione), J# (J sharp, derivato da Java) ma anche molti altri linguaggi open source e non, come Perl e Python; questo è possibile poiché il CLR è stato standardizzato presso ECMA. Le applicazioni ASP.NET sono significativamente più veloci e performanti rispetto a quelle realizzate utilizzando altre tecnologie di scripting, in quanto l'intero codice del sito web è pre-compilato in pochi file dll (spesso in un unico file) gestiti da un server web.

ASP.NET si propone di semplificare la migrazione degli sviluppatori dalle applicazioni Windows alle applicazioni web mettendoli in grado di generare pagine composte da tanti controlli widget, del tutto simili a quelli usati dall'interfaccia utente di Windows.

Un controllo web, come ad esempio un pulsante o un'etichetta (label), funzionano in modo molto simile a quello delle loro controparti Windows: il codice ad essi associato può assegnare loro determinate proprietà ed eseguire azioni in risposta ad eventi ad essi associati (ad esempio alla pressione di un pulsante). La differenza sta nel fatto che, mentre i controlli Windows disegnano se stessi sullo schermo, i controlli web producono blocchi di codice HTML che vanno ad inserirsi automaticamente nella pagina che deve essere inviata al browser dell'utente finale.

Paradigma di programmazione di ASP.NET

[modifica | modifica wikitesto]

ASP.NET è progettato in modo da incoraggiare lo sviluppatore ad usare in modo sistematico il paradigma dell'interfaccia grafica (GUI, per Graphical User Interface) abbinato alla cosiddetta programmazione ad eventi (event-driven), cioè allo stile di programmazione in cui i vari blocchi di codice vengono eseguiti in risposta a determinati eventi, o azioni, su controlli dotati di rappresentazione grafica sul desktop.

Lo stile convenzionale dei linguaggi per lo sviluppo di applicazioni web si era invece finora basato sulla tecnica dello scripting. Le classi della libreria Framework. NET si propongono, inoltre, di combinarsi ed interagire con le tecnologie esistenti, come ad esempio JavaScript, in modo da attribuire un carattere di persistenza ad oggetti software, anche nell'ambito di un ambiente come il web, che è intrinsecamente privo di stato (stateless server).

La libreria di classi Framework. NET, implementa la struttura del CLR (Common Language Runtime), la cui base è formata da un compilatore JIT (just in time). Ciò significa che il codice intermedio prodotto, chiamato IL (Intermediate Language) ed identico per tutti i linguaggi di alto livello impiegati, viene compilato in linguaggio macchina al momento della prima esecuzione. Utilizzando diversi compilatori just in time è possibile riutilizzare lo stesso IL intermedio su processori diversi. Questa tecnica viene definita Jitting. Questo tipo di compilazione è ben diverso da linguaggi come ad esempio Java, nei quali invece tutto il codice gira su una vera e propria macchina virtuale, mentre in .NET al momento dell'esecuzione il programma è effettivamente in linguaggio macchina come tutti gli altri linguaggi.

Come tutti gli altri linguaggi della suite .NET, anche ASP.NET utilizza il meccanismo di disallocazione automatica della memoria denominato garbage collector.

Punti di forza di ASP.NET rispetto ad ASP

[modifica | modifica wikitesto]

La vasta disponibilità di controlli, classi e strumenti di sviluppo consente di ridurre sensibilmente i tempi di sviluppo dei moduli software, e mette lo sviluppatore in condizione di riutilizzare facilmente uno stesso codice in applicazioni differenti. ASP.NET ha inoltre semplificato significativamente le funzionalità di accesso ai dati rispetto ad ASP. Ad esempio, è molto più semplice ed immediato generare una pagina contenente una lista di dati prelevati da un database.

Altri vantaggi sono:

Critiche ad ASP.NET

[modifica | modifica wikitesto]

ASP e ASP.NET possono girare insieme nella stessa applicazione web. Questo approccio consente agli sviluppatori di migrare da un ambiente all'altro gradualmente invece che tutto in una volta. Con IIS 6.0 e versioni precedenti, le pagine scritte usando versioni precedenti del framework ASP non possono condividere la stessa sessione senza l'uso di librerie di terze parti. Questa limitazione non esiste per applicazioni ASP.NET e ASP che girano insieme sotto IIS 7. In alcuni casi durante il runtime ASP.NET ricicla il processo attivo, provocando l'occupazione di più del 60% della memoria disponibile. Si può configurare in modo che il riciclo avvenga solo dopo un certo numero di richieste, dopo un certo tempo, ecc. Tuttavia così facendo l'utilizzatore può perdere lo stato della sessione corrente. Se l'applicazione usa lo stato della sessione per caricare le informazioni di autenticazione (cattiva pratica poiché l'autenticazione basata sui cookie e membership è un'opzione disponibile già integrata nel framework) e se l'applicazione è configurata per usare sessioni in-process, l'utente può essere disconnesso se il processo viene riciclato.https://mobikul.com/erp-app-development/

Esempio di codice

[modifica | modifica wikitesto]

Segue il codice sorgente che genera il classico messaggio minimo:

<%@ Page Language="C#" %>
<HTML>
<HEAD>
    <TITLE> Esempio di pagina ASPX </TITLE>
</HEAD>
<BODY>
    <DIV STYLE="TEXT-ALIGN:CENTER">
        <% 
            int mciclo;
            String mstringa = "";
            for (mciclo = 1; mciclo <= 10; mciclo++) {
                mstringa = mstringa + String.Format("<SPAN STYLE='FONT-SIZE: {0}PX'> Hello world in ASP.NET </SPAN><br />", mciclo); 
            } 
            Message.InnerHtml = mstringa; 
        %> 
        <SPAN id = "Message" runat="server"/> 
    </DIV> 
</BODY>
</HTML>

I nomi dei file ASP.NET hanno estensione .aspx. La direttiva Page consente di specificare il linguaggio utilizzato (nell'esempio C#), e numerosi altri attributi che consentono di descrivere le proprietà e l'aspetto della pagina. Ogni pagina aspx può contenere una sola direttiva Page. Notare che le righe di codice di esempio che seguono la direttiva Page sono normale codice HTML.

Vengono dichiarate 2 variabili: l'intero mciclo e la stringa denominata mstringa, e viene definito un ciclo for per visualizzare il messaggio con caratteri di dimensione crescente da 1 e 10. La variabile mstringa memorizza il codice HTML da visualizzare. Al termine del ciclo viene settata la proprietà InnerHtml dell'oggetto Message.

Il tag <SPAN> è dotato dell'attributo runat che indica che l'elemento deve essere eseguito lato Server, come avviene tipicamente nelle applicazioni sviluppate in ASP.NET.

Strumenti di sviluppo

[modifica | modifica wikitesto]

Sono disponibili molteplici software per sviluppare applicazioni ASP.NET, i principali e più diffusi sono:

ASP.NET 3.5

[modifica | modifica wikitesto]

ASP.NET 3.0 non è mai esistito. Microsoft ha infatti usato il nome ".NET Framework 3.0" per distribuire un insieme di nuove tecnologie: WPF (Windows Presentation Foundation), WCF (Windows Communication Foundation) e WF (Windows Workflow Foundation). Tuttavia .NET Framework 3.0 non include una nuova versione della CLR o di ASP.NET. Rispetto alla versione 2.0, la versione 3.5 di ASP.NET può essere considerata una graduale evoluzione; in particolare le nuove funzionalità si concentrano in tre aree: LINQ, AJAX e Silverlight.

Sicurezza

[modifica | modifica wikitesto]

Un sito web in ASP.NET può essere soggetto ad attacchi hacker[5]:

  1. Connessioni non protette (non utilizzando SSL)
  2. Credenziali di accesso prevedibili
  3. Non memorizzare le credenziali in una forma crittografata
  4. Logout dell'applicazione non corretto

Modelli di programmazione

[modifica | modifica wikitesto]

ASP.NET supporta una serie di modelli di programmazione per la creazione di applicazioni Web[6]:

Altre estensioni ASP.NET includono:

Pipeline integrata IIS

[modifica | modifica wikitesto]

In IIS 6.0 e versioni precedenti, le pagine scritte utilizzando versioni diverse del framework ASP non possono condividere lo stato della sessione senza l'utilizzo di librerie di terze parti. Ciò non si applica alle applicazioni ASP.NET e ASP in esecuzione fianco a fianco su IIS 7. Con IIS 7.0, i moduli possono essere eseguiti in una pipeline integrata che consente l'esecuzione di moduli scritti in qualsiasi linguaggio per qualsiasi richiesta[9].

Versioni

[modifica | modifica wikitesto]
Data Versione
30 novembre 2015 4.6.1
30 aprile 2018 4.7.2
24 aprile 2003 1.1
21 novembre 2006 3.0
20 luglio 2015 4.6
19 novembre 2007 3.5
18 novembre 2015 5 RC1
18 aprile 2019 4.8
17 ottobre 2017 4.7.1
17 ottobre 2013 4.5.1
16 gennaio 2002 1.0
15 agosto 2012 4.5
12 aprile 2010 4.0
11 aprile 2017 4.7
11 agosto 2008 3.5 Service Pack 1
7 novembre 2005 2.0
5 maggio 2014 4.5.2
2 agosto 2016 4.6.2

Confronto con PHP

[modifica | modifica wikitesto]

PHP è diretto concorrente di ASP.NET. La scelta dei due linguaggi ha pro e contro a seconda delle proprie esigenze[10][11][12]:

PRO CONTRO
PHP ASP.NET PHP ASP.NET
È un open-source quindi è gratuito e viene costantemente migliorato da un gran numero di persone piuttosto che da una singola azienda Supporta tutti i linguaggi di programmazione e funziona bene con le app o C # Non è adatto a creare applicazioni desktop Meno facile da imparare e comprendere di PHP
Ci sono più gruppi di supporto online per aiutare ad accelerare il processo di apprendimento rispetto ad ASP.NET Informa gli sviluppatori se hanno commesso errori nella codifica prima della compilazione La gestione degli errori PHP è considerata scarsa rispetto ad ASP.NET, quindi può richiedere più tempo per scoprire un problema Comunità di supporto più piccola
Più facile da imparare e comprendere rispetto ad ASP.NET Viene fornito con molti strumenti e funzionalità per supportare i programmatori. Consente la personalizzazione che causa bug e codifica scadente rispetto ad ASP.NET Funziona solo su un server Microsoft
Funziona anche su server Linux Creazione applicazioni desktop. Essendo Open Source, il codice è alla portata di tutti ed è quindi più esposto ad attacchi Più costoso a causa della licenza Microsoft

Note

[modifica | modifica wikitesto]
  1. ^ (EN) .NET is open source on GitHub | .NET, su Microsoft. URL consultato il 4 maggio 2022.
  2. ^ Che cos’è ASP.NET?, su IONOS Digitalguide. URL consultato il 4 maggio 2022.
  3. ^ (EN) What is ASP.NET? | The Open Source Web Framework, su umbraco.com. URL consultato il 4 maggio 2022.
  4. ^ (EN) wadepickett, ASP.NET documentation, su docs.microsoft.com. URL consultato il 4 maggio 2022.
  5. ^ 9 Ways Hackers Exploit ASP.NET – and How to Prevent Them, su Business 2 Community. URL consultato il 28 gennaio 2021.
  6. ^ (EN) Choose between ASP.NET and ASP.NET Core, su docs.microsoft.com.
  7. ^ (EN) ASP.NET Web Pages (Razor) FAQ, su docs.microsoft.com.
  8. ^ (EN) Get Started with ASP.NET Web API 2 (C#), su docs.microsoft.com.
  9. ^ How to Take Advantage of the IIS 7.0 Integrated Pipeline, in iis.net.
  10. ^ (EN) PHP vs ASP.NET: Top Differences for Beginners’ Understanding, su Arka Softwares, 13 ottobre 2023. URL consultato il 7 marzo 2024.
  11. ^ (EN) Varun Bhagat, ASP.Net vs PHP: Which is Better?, su PixelCrayons, 8 ottobre 2019. URL consultato il 30 gennaio 2021.
  12. ^ (EN) Kiranbeladiya, .NET Framework Vs .NET Core: A Complete Quick Comparison, su TheOneTechnologies, 24 September 2021. URL consultato il 24 June 2022.

Voci correlate

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
  Portale Microsoft: accedi alle voci di Wikipedia che trattano di Microsoft