ASP.NET Core è un framework per applicazioni Web multipiattaforma, open source, capace di creare, in poco tempo, applicazioni di diversa natura (Web, API, desktop, console ..).
La prima versione di ASP.NET Core, la 1.0, ben diversa da quella odierna, venne rilasciata nel 2016. Dopo quattro anni di sviluppo il framework ha raggiunto la versione 5.0, portando con sè non poche novità. Il vero problema, quando si parla di questa tecnologia, risiede nella sua confusionaria nomenclatura. Molti, infatti, potrebbero essere tratti in inganno dall'ormai superato ASP.NET, simile, ma soltanto nel nome, ad ASP.NET Core. ASP.NET (senza il "Core" all'interno del suo nome), può essere considerato un po' come il predecessore di ASP.NET Core e ha, ovviamente, una storia molto più lunga.
Microsoft ha rilasciato la prima versione di ASP.NET nel 2002 come parte integrante del noto .NET Framework 1.0. Da allora, ha subito diverse modifiche, fino alla versione 4.8 / 2019-04. Il vero problema di ASP.NET, però, è sempre stato quello di basarsi sul .NET Framework di Microsoft, che veniva preinstallato in tutte le versioni di Windows, rendendolo, di fatto, una tecnologia relegata ai soli ambienti Microsoft.
ASP.NET Core ha, invece, rotto con il passato, permettendo agli sviluppatori di scrivere codice sia nativamente, ovvero in ambienti Microsoft, che su Linux o MacOS. Questo risultato è stato raggiunto grazie all'avvento del nuovo framework .NET Core di Microsoft che, a differenza di quello precedente, il .NET Framework, ha una natura free and open source (FOSS).
In questa guida mostreremo come sviluppare un'applicazione Web utilizzando ASP.NET Core, introducendo i suoi componenti più rilevanti come le Razor Pages o la gestione della sua pipeline Middleware. Per mostrare le potenzialità di questo strumento abbiamo deciso di installarlo e configurarlo in ambiente Linux, in un VPS, in modo da dimostrare quanto possa essere compatibile con un ambiente diverso da quello Microsoft.
Un po' di storia
Come abbiamo accennato,il framework ASP.NET era stato pensato inizialmente per funzionare esclusivamente su ambienti Microsoft. Questo si basava principalmente su una DLL, nello specifico la System.Web.dll
, che faceva parte del .NET Framework e che era preinstallata in tutte le versioni di Windows. Questa libreria contiene essenzialmente tutto il codice di base che ASP.NET utilizza per realizzare applicazioni Web.
Negli ultimi anni, molti sviluppatori hanno però iniziato a guardare a framework Web multipiattaforma, tali da permettergli di essere eseguiti sia su Windows che su altri sistemi operativi. Microsoft ha quindi ritenuto che fosse giunta l'ora di creare un framework non più legato esclusivamente ai propri ambienti e per tale ragione nacque ASP.NET Core. Per realizzare questo obiettivo ha dovuto implementare una valida alternativa alla libreria System.Web.dll
. Così, venne sviluppata una piattaforma leggera, capace di funzionare su Windows, Linux e macOS, chiamata .NET Core (e successivamente .NET 5.0), sulla quale venne sviluppato il nostro framework in questione, ASP. NET Core.
NET 5.0 rappresenta l'unione in un unico runtime e framework, di .NET Core e delle altre piattaforme .NET. I termini .NET Core e .NET 5.0 sono spesso usati in modo intercambiabile, ma per coerenza con il linguaggio di Microsoft, sarebbe più corretto adoperare il termine .NET 5.0 esclusivamente per indicare l'ultima versione di .NET Core.
Introduzione ad ASP. NET Core
Proprio come per i framework di sviluppo Desktop o mobile, anche ASP .NET Core è un valido alleato per la creazione di applicazioni. E' infatti in grado di rendere la scrittura di applicazioni Web più veloce, più facile e più sicura rispetto al tentativo di implementare tutto da zero. Le librerie che contiene nativamente abbracciano le necessità più comuni, come per esempio:
- creare di pagine Web dinamiche;
- permettere agli utenti di usare il loro account social (Facebook, etc. etc.) per accedere all'applicazione Web usando OAuth;
- fornire una struttura comune e adatta alla costruzione di applicazioni manutenibili;
- registrare le richieste fatte alla nostra applicazione Web e gestirle in modo efficace per generare una risposta.
Nella figura sottostante viene mostrato il funzionamento di una tipica applicazione ASP.NET Core. Il framework è composto da diversi livelli, suddivisi in Presentation Layer, Business Logic e Data Tier. ASP.NET Core gestisce le richieste che arrivano indistintamente dai browser client o da backend server, preoccupandosi di elaborarle e di rispondere.
Alcuni concetti chiave del framework riguardano il gestore delle Razor Pages e i controller delle API Web, che l'utente può configurare grazie alle primitive fornite dal framework. Questi gestori si occupano, come è visibile nella figura, di interagire con la Business Logic del framework, che in genere sono classi e oggetti C#, senza alcuna dipendenza specifica da ASP.NET Core. Queste classi possono eseguire le azioni più disparate, per esempio richiedere dei dati al Data Tier layer, che si occuperà di prelevarli da database, servizi remoti e cache.
Conclusioni
ASP.NET Core è una rivisitazione del framework ASP.NET, progettato però secondo i moderni principi di ingegneria del software. Anche se si tratta di un framework nuovo, in un certo senso, .ASP NET Core ha diversi anni di utilizzo che ha ereditato in modo significativo da .NET Framework (che è stato utilizzato per quasi due decenni). Possiede in questo modo la sua maturità, stabilità e affidabilità.
Molti dei framework Web oggi disponibili utilizzano modelli di progettazione abbastanza consolidati e in questo ASP.NET Core non è da meno. Per esempio, Ruby on Rails (RoR) è noto per il suo l'uso del modello Model-View-Controller (MVC); Node.js è noto per il modo in cui elabora le richieste utilizzando piccoli moduli (chiamati "pipeline "), e l'injection delle dipendenze è presente in un'ampia varietà di framework Web. Tutti questi modelli architetturali sono presenti in ASP.NET Core, rendendolo di fatto completo e fruibile sia per i nuovi che per gli sviluppatori provenienti da diversi strumenti.
In questa lezione abbiamo raccontato un po' la storia di ASP.NET Core per capire il perchè di certe scelte progettuali da parte di Microsoft. Microsoft stessa raccomanda di utilizzarlo per tutti i nuovi sviluppi Web, tralasciando l'ormai datato ASP.NET.
In questa guida ci occuperemo di dare i rudimenti necessari per poter iniziare questo nuovo percorso mediante l'uso di questa tecnologia marchiata Microsoft, open source e multipiattaforma. Nella prossima lezione vedremo come installare e configurare ASP.NET Core su un VPS avente Linux Debian come sistema operativo.