Le casse-tête de l’interopérabilité des implémentations .NET

Le casse-tête de l’interopérabilité des implémentations .NET

Pas moins de vingt infrastructures logicielles étaient recensées sous le parapluie .NET, au mois d’octobre 2018. Avec le lancement de l’initiative .NET Core en juin 2016, officialisant le basculement open-source de la plateforme une floraison de forks du .NET originel accroissait le casse-tête de l’interopérabilité des diverses plateformes. Dans notre série, cet article passe en revue 3 solutions applicables à cet épineux problème d’interopérabilité.On peut distinguer les plateformes majeures comme :

  • NET Framework
  • Mono
  • Plateforme Windows universelle (UWP)
  • Unity
  • WinPhone
  • Xamarin
    Ces infrastructures ou implémentations dans la terminologie officielle spécialisent le développement aux fins de prendre en charge de nouveaux systèmes d’exploitation ou de l’adapter à des capacités spécifiques d’un appareil- systèmes Linux, IOS, applications de bureau, applications mobiles, jeux etc.

Pour le développeur ciblant deux plateformes ou plus, se pose alors le problème de la compilation croisée, illustré par le schéma ci-dessous. Ici l’environnement de travail Windows, doit être en mesure de générer du code exécutable pour son système hôte Windows, mais aussi pour mobile WinPhone, à partir du code source C#. Les projets d’éléments partagés proposent une solution de partage d’un code commun entre différentes plateformes. Le code commun est intégré aux projets spécifiques aux différentes plates-formes. La compilation conditionnelle permet de spécialiser des parties de ce code, à chacune des plates-formes, au besoin.Les Bibliothèques de classe portable (Portable Class Library, PCL en abrégé) fournissent une solution alternative au problème d’interopérabilité/partage de code. Une PCL est un modèle de projet qui contient l’api de différentes plateformes, nécessaire pour un développement envisagé.

L’utilisation d’un PCL requiert :

  • Un ciblage explicite des plates-formes pour lesquelles nous voulons construire une bibliothèque partagée. Pour cibler une nouvelle plate-forme, il faut recompiler la PCL.
  • Le développeur doit comprendre les différentes BCL des plates-formes ciblées.

Le recours aux PCL est marqué obsolète, par Microsoft, de nos jours.

La solution actuelle préconisée par Microsoft, est l’emploi de bibliothèque .NET Standard.

  • .NET Standard est une forme de PCL inversée
  • Définit un ensemble d’API qui doit être mis en œuvre par différentes plates-formes
  • Cibler uniquement la norme d’une certaine version, pour accéder aux différentes plates-formes ciblées.

La version .NET Standard 2.1 contient 37.118 apis accessibles dans le cadre de développements multi-plateformes incluant les cibles mentionnées dans le tableau suivant.