Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le librerie di classi sono il concetto di libreria condivisa per .NET. Consentono di componentizzare funzionalità utili in moduli che possono essere usati da più applicazioni. Possono anche essere usati come mezzo per caricare funzionalità non necessarie o non note all'avvio dell'applicazione. Le librerie di classi vengono descritte usando il formato di file assembly .NET.
Esistono tre tipi di librerie di classi che è possibile usare:
- Le librerie di classi specifiche della piattaforma hanno accesso a tutte le API in una determinata piattaforma ,ad esempio .NET Framework in Windows, ma possono essere usate solo dalle app e dalle librerie destinate a tale piattaforma.
- Le librerie di classi portabili hanno accesso a un subset di API e possono essere usate da app e librerie destinate a più piattaforme.
- Le librerie di classi .NET Standard sono una fusione del concetto di libreria portatile e specifico della piattaforma in un unico modello che offre il meglio di entrambi.
Librerie di classi specifiche della piattaforma
Le librerie specifiche della piattaforma sono associate a una singola piattaforma .NET ,ad esempio .NET Framework in Windows, e possono quindi assumere dipendenze significative da un ambiente di esecuzione noto. Un ambiente di questo tipo espone un set noto di API (.NET e API del sistema operativo) e mantiene ed espone lo stato previsto (ad esempio, Registro di sistema di Windows).
Gli sviluppatori che creano librerie specifiche della piattaforma possono sfruttare completamente la piattaforma sottostante. Le librerie verranno eseguite solo su quella determinata piattaforma, rendendo inutili i controlli della piattaforma o altre forme di codice condizionale (modulo singolo codice di origine per più piattaforme).
Le librerie di classi specifiche della piattaforma sono state il tipo principale per il .NET Framework. Anche se sono emerse altre implementazioni .NET, le librerie specifiche della piattaforma sono rimaste il tipo di libreria dominante.
Librerie di classi portabili
Le librerie portabili sono supportate in più implementazioni .NET. Possono comunque assumere dipendenze da un ambiente di esecuzione noto, ma l'ambiente è un ambiente sintetico generato dall'intersezione di un set di implementazioni .NET concrete. Le API esposte e i presupposti della piattaforma sono un subset di ciò che sarebbe disponibile per una libreria specifica della piattaforma.
Si sceglie una configurazione della piattaforma quando si crea una libreria portabile. La configurazione della piattaforma è il set di piattaforme che è necessario supportare ,ad esempio .NET Framework 4.5+, Windows Phone 8.0+. Più piattaforme si scelgono di supportare, meno API e presupposti della piattaforma si possono fare, arrivando al denominatore comune più basso. Questa caratteristica può creare confusione in un primo momento, poiché spesso le persone pensano che "di più è migliore", ma si scopre che le piattaforme più supportate comportano un minor numero di API disponibili.
Molti sviluppatori di librerie hanno passato dalla produzione di più librerie specifiche della piattaforma da un'origine (usando direttive di compilazione condizionale) alle librerie portabili. Esistono diversi approcci per l'accesso alle funzionalità specifiche della piattaforma all'interno di librerie portabili, con il bait-and-switch come la tecnica attualmente più accettata.
Librerie di classi .NET Standard
Le librerie .NET Standard sono una sostituzione dei concetti relativi alle librerie portabili e specifiche della piattaforma. Sono specifici della piattaforma nel senso che espongono tutte le funzionalità dalla piattaforma sottostante (nessuna piattaforma sintetica o intersezioni di piattaforma). Sono portabili nel senso che funzionano su tutte le piattaforme di supporto.
.NET Standard espone un set di contratti di libreria. Le implementazioni di .NET devono supportare completamente o meno ogni contratto. Ogni implementazione, pertanto, supporta un set di contratti .NET Standard. Il corollario è che ogni libreria di classi .NET Standard è supportata sulle piattaforme che supportano le dipendenze di contratto.
.NET Standard non espone l'intera funzionalità di .NET Framework (né è un obiettivo), ma le librerie espongono molte più API rispetto alle librerie di classi portabili.
Le implementazioni seguenti supportano le librerie .NET Standard:
- .NET Core
- .NET Framework
- Mono
- Piattaforma UWP (Universal Windows Platform)
Per altre informazioni, vedere .NET Standard.
Librerie di classi Mono
Le librerie di classi sono supportate in Mono, inclusi i tre tipi di librerie descritte in precedenza. Mono viene spesso considerato come un'implementazione multipiattaforma di .NET Framework. In parte, ciò è dovuto al fatto che le librerie .NET Framework specifiche della piattaforma possono essere eseguite nel runtime Mono senza modifiche o ricompilazione. Questa caratteristica era attiva prima della creazione di librerie di classi portabili, quindi era una scelta ovvia per abilitare la portabilità binaria tra .NET Framework e Mono (anche se funzionava solo in una direzione).