Condividere il codice usando librerie .NET Standard

Completato

Si supponga di aver creato un'applicazione Xamarin che consente agli utenti di leggere citazioni di personaggi famosi. Attualmente si usa una posizione di archiviazione specifica del dispositivo per archiviare i dati in ogni piattaforma. Tuttavia, si è notato che il codice si ripete nel progetto di ogni piattaforma. Si vogliono quindi esaminare le opzioni per la condivisione del codice.

In questa unità si apprenderà come condividere codice in Xamarin.Forms usando una libreria .NET Standard.

Piattaforme

Una piattaforma descrive un set di componenti. Con questi componenti è possibile compilare ed eseguire un'applicazione in un set di sistemi operativi di destinazione.

Probabilmente si incontreranno tre piattaforme .NET comuni. Ognuna di esse consente di eseguire app su un'ampia varietà di dispositivi e sistemi operativi.

Illustrazione di tre piattaforme .NET con i relativi strumenti, runtime e librerie: .NET Framework, .NET Core e Mono per Xamarin.

Ogni piattaforma include strumenti, un runtime e librerie. Quando si creano le applicazioni, si vuole condividere il codice tra le librerie delle piattaforme.

Variazioni tra librerie

Le varie piattaforme .NET includono librerie sviluppate da team diversi, spesso incentrate su sistemi operativi specifici. Le librerie, tuttavia, non forniscono la stessa identica superficie su cui scrivere codice.

Illustrazione delle diverse librerie della piattaforma .NET: .NET Framework, .NET Core e Mono per Xamarin.

Si supponga di voler usare un'API che è la stessa sia in .NET Framework che in .NET Core. Ora si vuole usare la stessa API in Mono, ma ci si accorge che è diversa. Come si può usare questa API per scrivere un'unica libreria? La risposta è usare .NET Standard.

.NET Standard

L'obiettivo di .NET Standard è risolvere il problema delle incoerenze che possono esistere tra le API.

.NET Standard è una specifica. Non è un'implementazione, ma piuttosto uno standard per una libreria di piattaforma da implementare.

Illustrazione delle varie piattaforme .NET che usano il sistema .NET Standard.

Queste tre piattaforme, ad esempio, offrono implementazioni .NET Standard di quella superficie API standard. Lo standard rende più semplice scrivere una singola libreria che funzioni in tutte e tre le piattaforme.

Tuttavia, il fatto che si tratta di uno standard non significa che le piattaforme implementeranno .NET Standard allo stesso modo. L'implementazione potrebbe variare in base alle API.

Versioni di .NET Standard

Non esiste una sola versione di .NET Standard. È disponibile in diverse versioni ed è in continuo aumento.

Ogni versione è un superset delle API della versione precedente. Vengono aggiunte nuove API, ma quelle esistenti non vengono rimosse. Se un'API è disponibile nella versione 1.1, lo sarà anche nella versione 2.0 e nelle successive. Le librerie continueranno a essere compatibili con le nuove versioni di .NET Standard.

Creazione di una libreria .NET Standard

Sia Visual Studio 2019 che Visual Studio per Mac offrono modelli per la creazione di librerie .NET Standard.

In Visual Studio 2019 è possibile trovare in modo semplice il modello nella finestra di dialogo Nuovo progetto cercando standard.

Screenshot della finestra di dialogo Nuovo progetto di Visual Studio con la ricerca di

Non è disponibile una procedura guidata per impostare la versione di .NET Standard. È possibile modificare la versione di destinazione dalle proprietà del progetto.

Screenshot di Visual Studio per l'impostazione della versione della libreria .NET Standard nel campo Framework di destinazione delle proprietà del progetto.

In Visual Studio per Mac è possibile trovare l'opzione per creare una libreria .NET Standard in Multipiattaforma>Libreria.

Screenshot della finestra di dialogo Nuovo progetto di Visual Studio per Mac con il modello Multipiattaforma > Libreria > Libreria .NET Standard selezionato.

Visual Studio per Mac offre una procedura guidata che consente di scegliere la versione di .NET Standard al momento della creazione del progetto.

Screenshot della finestra di dialogo Nuovo progetto di Visual Studio per Mac con la selezione della versione di .NET Standard nell'elenco a discesa Framework di destinazione.

API disponibili

Nelle prime versioni di .NET Standard, le API erano incentrate su ciò che era disponibile nei profili delle librerie di classi portabili comuni. A partire dalle API necessarie per le librerie .NET di base, sono stati aggiunti elementi come raccolte, nuovi metodi e classi per aumentare il livello di compatibilità.

Attualmente in .NET Standard sono presenti tutte le librerie di base, da quelle di dizionari e reti a quelle di threading e crittografia.

Per altre informazioni, vedere Librerie di classi portabili.

Uso delle API .NET Standard

La versione di destinazione di .NET Standard scelta determina le API che è possibile usare. Si supponga di scegliere come destinazione la versione 1.4. La versione 1.4 consente di usare tutte le API che sono state aggiunte tra le versioni 1.0 e 1.4.

Diagramma che illustra il concetto di API superset delle versioni di .NET Standard, dove la versione 1.4 contiene tutte le API delle versioni precedenti.

Tuttavia, non è possibile usare le API aggiunte nelle versioni successive. Non è ad esempio possibile usare le API della versione 1.5, 1.6 o successive. Quando si seleziona la versione, verificare che includa tutte le API in cui è necessario implementare la libreria.