Bibliothèques de classes .NET
Les bibliothèques de classes sont le concept de bibliothèque partagée pour .NET. Ils vous permettent de composanter des fonctionnalités utiles dans des modules qui peuvent être utilisés par plusieurs applications. Ils peuvent également être utilisés comme moyen de charger des fonctionnalités qui ne sont pas nécessaires ou non connues au démarrage de l’application. Les bibliothèques de classes sont décrites à l’aide du format de fichier .NET Assembly .
Il existe trois types de bibliothèques de classes que vous pouvez utiliser :
- bibliothèques de classes spécifiques à la plateforme ont accès à toutes les API d’une plateforme donnée (par exemple, .NET Framework sur Windows), mais ne peuvent être utilisées que par les applications et les bibliothèques qui ciblent cette plateforme.
- Les bibliothèques de classes portables ont accès à un sous-ensemble d’API et sont utilisables par les applications et les bibliothèques qui ciblent plusieurs plateformes.
- Les bibliothèques de classes .NET Standard sont une fusion du concept de bibliothèques spécifiques d’une plateforme et portables en un seul modèle qui offre le meilleur des deux.
Bibliothèques de classes spécifiques à la plateforme
Les bibliothèques spécifiques à la plateforme sont liées à une plateforme .NET unique (par exemple, .NET Framework sur Windows) et peuvent donc prendre des dépendances significatives sur un environnement d’exécution connu. Un tel environnement expose un ensemble connu d’API (API .NET et OS) et gère et expose l’état attendu (par exemple, registre Windows).
Les développeurs qui créent des bibliothèques spécifiques à la plateforme peuvent exploiter entièrement la plateforme sous-jacente. Les bibliothèques ne s’exécutent que sur cette plateforme donnée, ce qui rend inutile les vérifications de plateforme ou d’autres formes de code conditionnel (code d’approvisionnement modulo unique pour plusieurs plateformes).
Les bibliothèques spécifiques à la plateforme ont été le type de bibliothèque de classes primaire pour .NET Framework. Même si d’autres implémentations .NET ont émergé, les bibliothèques spécifiques à la plateforme sont restées le type de bibliothèque dominant.
Bibliothèques de classes portables
Les bibliothèques portables sont prises en charge sur plusieurs implémentations .NET. Ils peuvent toujours prendre des dépendances sur un environnement d’exécution connu, mais l’environnement est un environnement synthétique généré par l’intersection d’un ensemble d’implémentations .NET concrètes. Les API exposées et les hypothèses de plateforme sont un sous-ensemble de ce qui serait disponible pour une bibliothèque spécifique à la plateforme.
Vous choisissez une configuration de plateforme lorsque vous créez une bibliothèque portable. La configuration de la plateforme est l’ensemble de plateformes que vous devez prendre en charge (par exemple, .NET Framework 4.5+, Windows Phone 8.0+). Plus vous avez de plateformes à prendre en charge, moins vous avez d’API et moins vous pouvez faire d’hypothèses de plateforme, selon le plus petit dénominateur commun. Cette caractéristique peut être déroutante au début, car les gens pensent souvent « plus est meilleur », mais trouvent que les plateformes plus prises en charge entraînent moins d’API disponibles.
De nombreux développeurs de bibliothèques ont basculé de la production de plusieurs bibliothèques spécifiques à la plateforme d’une seule source (à l’aide de directives de compilation conditionnelle) à des bibliothèques portables. Il existe plusieurs approches permettant d’accéder à une fonctionnalité spécifique d’une plateforme dans les bibliothèques portables, bait-and-switch étant la technique la plus répandue à ce stade.
Bibliothèques de classes .NET Standard
Les bibliothèques .NET Standard sont un remplacement des concepts de bibliothèques portables spécifiques à la plateforme. Ils sont spécifiques à la plateforme dans le sens où ils exposent toutes les fonctionnalités de la plateforme sous-jacente (aucune plateforme synthétique ni intersection de plateforme). Ils sont portables dans le sens où ils travaillent sur toutes les plateformes de prise en charge.
.NET Standard expose un ensemble de contrats de bibliothèque . Les implémentations .NET doivent prendre en charge chaque contrat entièrement ou pas du tout. Chaque implémentation prend donc en charge un ensemble de contrats .NET Standard. Le corollaire est que chaque bibliothèque de classes .NET Standard est prise en charge sur les plateformes qui prennent en charge ses dépendances de contrat.
.NET Standard n’expose pas l’ensemble des fonctionnalités de .NET Framework (ce n’est d’ailleurs pas un objectif), cependant, les bibliothèques exposent beaucoup plus d’API que les bibliothèques de classes portables.
Les implémentations suivantes prennent en charge les bibliothèques .NET Standard :
- .NET Core
- .NET Framework
- Mono
- Plateforme Windows universelle (UWP)
Pour plus d’informations, consultez .NET Standard.
Bibliothèques de classes Mono
Les bibliothèques de classes sont prises en charge sur Mono, y compris les trois types de bibliothèques décrits précédemment. Mono est souvent vu comme une implémentation multiplateforme de .NET Framework. En partie, cela est dû au fait que les bibliothèques .NET Framework spécifiques à la plateforme peuvent s’exécuter sur le runtime Mono sans modification ni recompilation. Cette caractéristique était en place avant la création de bibliothèques de classes portables. Il s’agissait donc d’un choix évident pour permettre la portabilité binaire entre .NET Framework et Mono (bien qu’elle ne fonctionnait qu’dans une direction).