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

  • Matt Warren recensait pas moins de vingt infrastructures logicielles 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, cette troisième et avant-dernière publication met en surface 3 solutions applicables à cet épineux problème d’interopérabilité. Le lecteur, intéressé par les détails techniques, pourra suivre les liens indiqués dans l’article et d’autre sources abondantes sur le sujet disponibles sur internet pour satisfaire sa curiosité.
  • On peut distinguer quelques plateformes majeures, parmi celles souvent cibles de développement inter-plateformes que sont :
  1. NET Framework
  2. Mono
  3. Plateforme Windows universelle (UWP)
  4. Unity
  5. WinPhone
  6. Xamarin

Ces plateformes ou implémentations dans la terminologie officielle spécialisent le développement .NET à des fins de prise en charge de nouveaux systèmes d’exploitation ou d’adaptation à des capacités spécifiques d’un appareil, e.g. systèmes Windows, 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#.

compilation croisée
compilation croisée

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 plateformes. La compilation conditionnelle permet de spécialiser des parties de ce code, à chacune des plates-formes, au besoin. La création d’un projet d’éléments partagés sous Visual Studio est illustrée par l’image qui suit.

Projet d’eléments partagés

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 plateformes ciblées.

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

Projet NET Standard
Projet NET Standard

La solution actuelle préconisée par Microsoft, est l’emploi de bibliothèque .NET Standard dont la création sous Visual Studio est illustrée par l’image précédente.

  • .NET Standard est un ensemble de spécifications fonctionnelles :
    • Définit un ensemble d’APIs entièrement 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, en cas d’utilisation.
Versions .NET Standard
Versions .NET Standard

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 ci-dessus.

.NET Standard est un outil clé dans le cadre de la fusion annoncée des différentes plates-formes .NET dans .NET 5 attendue novembre 2020. Notre prochaine publication tentera vous livrer quelques clés sur cette mouture attendue et dont les versions préliminaires sont déjà disponibles.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Résoudre : *
14 − 6 =