Condividere il codice usando librerie .NET Standard
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.
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.
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.
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.
Non è disponibile una procedura guidata per impostare la versione di .NET Standard. È possibile modificare la versione di destinazione dalle proprietà del progetto.
In Visual Studio per Mac è possibile trovare l'opzione per creare una libreria .NET Standard in Multipiattaforma>Libreria.
Visual Studio per Mac offre una procedura guidata che consente di scegliere la versione di .NET Standard al momento della creazione del progetto.
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.
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.