Che cos'è .NET?

Completato

Il significato del termine .NET dipende in larga parte dal contesto in cui viene usato. In questa unità si studierà .NET paragonandolo a un ecosistema. In altre parole, .NET è una raccolta di diversi componenti e persone che insieme creano un ambiente potente per la creazione di applicazioni.

.NET è un ecosistema per lo sviluppo di applicazioni

Il termine ecosistema descrive le molteplici sfaccettature di un ambiente di sviluppo di applicazioni e della community che sta intorno. Queste sfaccettature si combinano fornendo un ottimo motivo per investire nell'apprendimento di .NET e nella creazione di applicazioni .NET.

Usare i linguaggi e i compilatori .NET per eseguire applicazioni nel runtime .NET

Gli sviluppatori software usano linguaggi .NET come C# e F# per scrivere codice sorgente. Ogni riga di codice scritta esprime un'istruzione o un comando che il computer deve eseguire durante l'esecuzione del programma.

Prima che gli sviluppatori di software possano eseguire il codice, devono compilarlo. Il compilatore .NET è un programma che converte il codice sorgente (un qualunque linguaggio di programmazione supportato) in un linguaggio portabile detto linguaggio intermedio (IL). Il compilatore salva il codice IL in un file detto assembly .NET. Compilando il codice in un formato intermedio, è possibile usare la stessa base di codice ovunque si esegua il codice, sia su Windows che su Linux oppure su hardware a 32 bit o a 64 bit.

Il runtime .NET è un ambiente di esecuzione per l'assembly .NET compilato. In altre parole, il runtime .NET è ciò che esegue e gestisce l'applicazione mentre è in esecuzione in un sistema operativo host. Il runtime .NET verrà esaminato in modo più approfondito più avanti.

Fortunatamente, per uno sviluppatore di software alle prime armi con .NET, non è necessario entrare nei dettagli del funzionamento di questi meccanismi. Con l'esperienza si comprenderanno meglio i concetti e si apprezzerà la potenza sottostante dei linguaggi e compilatori e del runtime .NET.

Suggerimento

A volte le persone pensano che il linguaggio di programmazione C# sia .NET. ma C# e .NET sono due cose distinte. C# è una sintassi del linguaggio di programmazione. Come parte della sintassi, è possibile fare riferimento ed effettuare chiamate ai metodi definiti nelle librerie di codice o negli assembly .NET. Successivamente, si userà il compilatore C# installato con .NET SDK per creare un assembly .NET dal codice C#. Il runtime .NET esegue quindi gli assembly .NET. Queste distinzioni diventano concetti importanti man mano che si apprendono maggiori informazioni su .NET e C#.

Usare le librerie e i framework applicazioni .NET per sfruttare le funzionalità predefinite

Tutto il software viene creato a livelli e ciò significa che il software è in esecuzione in diversi livelli di astrazione in un computer:

  • Al livello più basso il software comunica direttamente con l'hardware del computer. Controlla il flusso dei dati nella scheda madre, nei processori, nella memoria e nei dischi rigidi.
  • Al livello successivo il software consente all'utente finale di fornire istruzioni tramite un sistema operativo.
  • Al livello successivo il software come .NET consente di sviluppare ed eseguire le applicazioni.
  • Al livello successivo i framework applicazioni e le librerie di funzionalità consentono di creare rapidamente applicazioni complesse con meno lavoro rispetto ai precedenti metodi di sviluppo.

Una libreria di codice incapsula le funzionalità per uno scopo specifico in un singolo assembly. Per .NET sono disponibili migliaia di librerie. Queste librerie possono essere proprietarie o di terze parti e possono essere commerciali oppure open source. Le librerie offrono un'ampia gamma di funzionalità che è possibile usare nelle applicazioni. È sufficiente fare riferimento a tali assembly e chiamare i metodi necessari. In questo modo, gli sviluppatori possono basarsi sul lavoro di altri sviluppatori di software, risparmiando tempo ed energie perché non devono compilare e gestire da zero ogni funzionalità.

Un framework applicazioni combina diverse librerie correlate, insieme a progetti iniziali, modelli di file, generatori di codice e altri strumenti. È possibile usare queste risorse per creare intere applicazioni per uno scopo specifico. Questi framework applicazioni sono noti come modelli di app. Sono, ad esempio, disponibili framework applicazioni .NET per modelli di app populari come lo sviluppo Web, lo sviluppo di applicazioni desktop e per dispositivi mobili e lo sviluppo di giochi.

È possibile installare .NET SDK direttamente oppure installando Visual Studio 2022. .NET SDK preinstalla un set completo di librerie e di framework applicazioni denominato libreria di classi base. È possibile usare questa libreria di codice nei programmi indipendentemente dalla piattaforma o dai modelli di app che si vogliono compilare.

Per altre librerie di terze parti, gli sviluppatori usano strumenti di gestione pacchetti come NuGet per trovare e integrare le librerie di codice dai repository di pacchetti come la raccolta NuGet.

Quali sono i modelli di app principali?

Ci si potrebbe chiedere quali framework supportano quali modelli di app. Usare la tabella seguente per eseguire il mapping tra modelli di app e framework .NET.

Modello di app Framework Note
Web ASP.NET Core Framework per la creazione di logica sul lato server.
Web ASP.NET Core MVC Framework per la creazione di logica sul lato server per pagine Web o API Web.
Web ASP.NET Core Razor Pages Framework per la creazione di codice HTML generato dal server.
Client Web Blazor Blazor fa parte di ASP.NET Core. Le sue due modalità consentono la modifica DOM (Document Object Model) tramite socket come veicolo di comunicazione per l'esecuzione di codice sul lato server o come implementazione di WebAssembly per l'esecuzione di codice C# compilato in un browser.
Desktop .NET per Mac Consente agli sviluppatori .NET di creare app per dispositivi Mac con accesso nativo all'interfaccia utente e all'API.
Desktop WinForms Framework per la creazione di applicazioni in stile Windows con un aspetto simile al tema "battleship gray".
Desktop WPF (Windows Presentation Foundation) Framework per la creazione di applicazioni desktop dinamiche conformi a fattori di forma diversi. WPF consente agli elementi dei moduli di eseguire spostamenti, dissolvenze, scorrimenti e altri effetti grazie a una ricca libreria di animazioni.
Mobile .NET per Android Consente agli sviluppatori .NET di creare app per dispositivi Android con accesso nativo all'interfaccia utente e all'API.
Mobile .NET per iOS Consente agli sviluppatori .NET di creare app per iOS e iPadOS con accesso nativo all'interfaccia utente e all'API.
Interfaccia utente dell'app multipiattaforma .NET MAUI Il modo migliore per creare app per iOS, Android, Mac e Windows da un'unica base di codice condivisa con interfaccia utente nativa e accesso alle API native.

.NET supporta anche popolari ambienti e motori di sviluppo di giochi di terze parti e open-source, come Unity.

Usare gli strumenti .NET per creare app .NET

Gli sviluppatori software usano gli strumenti per scrivere il codice, aggiungere riferimenti alle librerie di codice, compilare il codice ed eseguire il debug del codice. Questa sezione descrive diversi strumenti .NET che si useranno per creare le applicazioni .NET.

Visual Studio 2022 è l'ambiente di sviluppo principale di Microsoft. Milioni di sviluppatori lo usano per creare applicazioni .NET. Un'interfaccia utente grafica che include menu, finestre, finestre di progettazione visiva, finestre di dialogo e procedure guidate supporta gli sviluppatori nel processo di sviluppo delle applicazioni. Visual Studio 2022 è disponibile in tre edizioni: Community, Professional ed Enterprise. Ogni edizione include strumenti diversi e viene concessa in licenza per scopi diversi.

Visual Studio Code è l'editor di codice principale di Microsoft che supporta più linguaggi di programmazione ed è supportato in Windows, Mac e Linux. L’estensione C# Dev Kit consente di migliorare lo sviluppo C# tramite editor in Visual Studio Code e l'esperienza di lavoro con i progetti .NET grazie al supporto di Esplora soluzioni, di un sistema di progetto, del controllo delle migliorie e dell'esploratore, dello sviluppo assistito dall'intelligenza artificiale e di potenti servizi linguistici per le migliori funzionalità del linguaggio C#, ad esempio la navigazione del codice, il refactoring, la consapevolezza semantica e altro ancora.

Gli sviluppatori che preferiscono un flusso di lavoro da riga di comando possono usare una combinazione di Visual Studio Code, l'editor di codice più popolare del mondo, e dell'interfaccia della riga di comando .NET.

È anche possibile scegliere tra numerosi strumenti proprietari e di terze parti per molti casi d'uso .NET avanzati. Le opzioni includono Code Profiler, strumenti per l'esecuzione degli unit test e analizzatori di code coverage.

Per altri scenari, sono disponibili altri strumenti .NET. Più avanti in questo modulo, ad esempio, si userà Try .NET, Userai questa interfaccia basata su browser per scrivere semplici applicazioni e poter acquisire familiarità con il linguaggio di programmazione C#.

Trovare soluzioni e risposte nella documentazione e nelle esercitazioni

Microsoft fornisce attivamente un set completo documenti, esercitazioni e corsi di formazione. Sono disponibili materiali per la formazione basati su modalità popolari per facilitare l'utente in ogni passaggio del processo di apprendimento.

La tabella seguente elenca alcune importanti risorse che è possibile contrassegnare con un segnalibro per tornarvi in seguito.

Risorsa Scopo
Microsoft Learn Fornisce esercitazioni introduttive e documentazione di riferimento definitiva.
Modelli e procedure Consentono agli sviluppatori e ai progettisti di software di trovare soluzioni per le comuni esigenze di sviluppo delle applicazioni. Le risorse spesso vanno oltre i dettagli di base della scrittura di codice e si addentrano nella scelta di prodotti e servizi che consentono architetture scalabili apparentemente infinite.
Video su .NET Fornisce esercitazioni video del team di .NET. Questi video illustrano agli sviluppatori i comuni scenari di utilizzo.
Introduzione a C# Fornisce esercitazioni pratiche che consentono di sviluppare le competenze grazie a una combinazione di istruzioni, esercitazioni, contenuti multimediali, verifica delle conoscenze e la possibilità di tenere traccia dei progressi.

Interagire con la community .NET per apprendere e condividere soluzioni

Oltre che ai linguaggi, alle librerie e agli strumenti, l'ecosistema .NET si estende anche alle persone. È possibile imparare e contribuire alla community.

  • Imparare: i membri della community .NET ospitano eventi online dal vivo e incontri di persona. Creano software open source, partecipano a forum di domande e risposte e registrano esercitazioni video. Scrivono libri e post di blog che aiutano ad apprendere i concetti e capire come procedere quando si hanno dubbi.
  • Contribuire: .NET è open source in GitHub. I progetti presenti in tale repository vengono gestiti da .NET Foundation. Questa organizzazione indipendente è dedicata allo sviluppo di un ecosistema open source attendibile e aperto all'uso commerciale basato sulla piattaforma di sviluppo .NET. In questo repository è possibile condividere il proprio punto di vista e la propria esperienza contribuendo alla formazione degli altri utenti.

Quali sono le differenze tra l'ecosistema .NET e altri ecosistemi?

Se si ha familiarità con il mondo dello sviluppo di software, ci si potrebbe chiedere quali siano le differenze tra l'ecosistema .NET e altri ecosistemi. Francamente, altri ecosistemi possono vantare alcune o numerose caratteristiche simili a quelle descritte in questa unità.

Una delle caratteristiche più distintive di .NET, tuttavia, è la disponibilità continua di sviluppo e supporto non solo grazie a un importante leader tecnologico, ma anche alla community. Parti significative di .NET sono state sviluppate grazie a risorse open source. L'input e i contributi della community sono ben accetti e incoraggiati. L'87% dei collaboratori è infatti esterno a Microsoft. In base all'input della community, Microsoft sviluppa attivamente la piattaforma con miglioramenti delle funzionalità, correzioni di bug e miglioramenti delle prestazioni. La community ha accettato oltre 100.000 richieste pull.

L'ecosistema .NET sta inoltre vivendo un momento di grande slancio:

  • gli sviluppatori .NET sono più di 5 milioni.
  • I risultati dei sondaggi di Stack Overflow mostrano sistematicamente che .NET Core & .NET è il framework più amato.
  • Gli studenti amano .NET: nel 40% dei casi, gli sviluppatori che scelgono di usare .NET per la prima volta sono studenti.
  • I repository GitHub per .NET e ASP.NET sono classificati tra i 30 progetti di software open source a più alta velocità.
  • GitHub elenca C# tra i primi cinque linguaggi di programmazione e secondo l'indice di popolarità dei linguaggi TIOBE per il 2020 la sua diffusione sta aumentando.
  • .NET vanta il framework Web più veloce del mondo, in base ai benchmark TechEmpower, un set di benchmark delle prestazioni Web indipendente e open source che misura decine di linguaggi e framework applicativi.

Breve storia di .NET

La versione originale di .NET Framework è stata rilasciata per la prima volta all'inizio del 2002. Da allora sono seguiti molti aggiornamenti e molte altre funzionalità. Dopo anni di miglioramenti e aggiunta di nuove funzionalità, la versione originale di .NET Framework, in particolare le principali librerie di codice, è aumentata notevolmente.

Dopo il 2002 Microsoft si è impegnata nella creazione di una versione di .NET con compatibilità multipiattaforma. L'obiettivo era consentire agli sviluppatori di scrivere un'unica codebase da usare nei sistemi operativi macOS, Linux e Windows.

Grazie a questi sforzi, intorno al 2014 è stato introdotto .NET Core. Microsoft ha mantenuto la versione originale di .NET Framework, stabilendo tuttavia di riservare a .NET nuovi miglioramenti e funzionalità. In seguito, Core è stato eliminato dal nome. Le versioni principali successive sono .NET 5, .NET 6, .NET 7. .NET 8 e così via. Le versioni vengono generalmente rilasciate ogni novembre.

Perché è importante ricordare la storia di .NET? Perché probabilmente si troveranno post di blog, video e codice sorgente destinati alla versione originale di .NET Framework. In alcuni casi, le istruzioni o il codice continuano a funzionare, ma in altri casi possono essere necessarie modifiche specifiche per la nuova versione di .NET.