Microsoft déblaie encore plus le chemin de .Net Framework vers .Net Core
Introduction d'un « pack de compatibilité Windows »

Le , par Patrick Ruiz, Chroniqueur Actualités
La difficulté majeure à laquelle un développeur fait face lors du portage d’une application de .Net Framework vers .Net Core est la gestion des API conçues uniquement pour le Framework .Net. Une application portée sur .Net Core ou Standard pose entre autres le problème de compatibilité binaire avec le Framework .Net. Microsoft répond à cette préoccupation avec une nouvelle initiative qui met approximativement 20 000 API supplémentaires à la disposition des développeurs. Elles sont regroupées sous l’appellation « pack de compatibilité Windows. »

À date, le Framework multiplateforme .Net Core regroupe sensiblement 30 000 API d’après les explications des ingénieurs du géant du logiciel. Pour résorber un autre problème qui est celui de la dépendance aux API destinées uniquement au développement d’applications Windows, la firme a procédé à la mise en place de ce pack de compatibilité. À noter que ces nouvelles API sont accessibles via .Net Standard ou .Net Core au travers du package NuGet Microsoft.Windows.Compatibilty. Il revient au développeur d’ajouter les références nécessaires à son ossature de code .Net Core ou .Net Standard pour avoir accès à ces dernières.

Le pack de compatibilité Windows en est au premier aperçu de sa version 2.0, numérotation qui colle probablement avec le fait que le pack est une forme d’extension de .Net Standard 2.0. Microsoft recommande donc d’éviter d’en faire usage pour le développement d’applications WPF ou WinForms pour le moment. Le cas d’utilisation le plus conseillé demeure donc le portage d’applications Web conçues pour Windows vers Linux ou macOS.

50 000 API pour assurer une douce transition de .Net Framework vers .Net Core ça a forcément du bon. À noter que 50 % de celles rendues disponibles via le pack de compatibilité sont uniquement dédiées au développement d’applications Windows. Cet état de choses pose le problème de la difficulté à écumer la documentation pour savoir lesquelles sont concernées. Les outils livrés avec le pack permettent d’anticiper sur les problèmes de compatibilité entre plateformes. Un analyseur d’API disponible directement dans l’environnement de développement intégré ou via la ligne de commande est disponible. Il permet de signaler les cas d’utilisation d’API qui ne sont pas multiplateformes. Il s’agit là également d’un chantier en cours, ce qui signifie que certaines API qui ne sont pas cross-plateformes pourraient passer sous le nez de l’outil.

En l’état, le développeur est plus ou moins renseigné sur les API qu’il faut supprimer et remplacer avec des équivalents multiplateformes. Il y a également la possibilité de rajout de fonctions de détection de l’environnement d’exécution qui s’offre à lui comme dans le fragment de code ci-dessous.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private static string GetLoggingPath()
{
    // Verify the code is running on Windows.
    if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
    {
        using (var key = Registry.CurrentUser.OpenSubKey(@"Software\Fabrikam\AssetManagement"))
        {
            if (key?.GetValue("LoggingDirectoryPath") is string configuredPath)
                return configuredPath;
        }
    }
 
    // This is either not running on Windows or no logging path was configured,
    // so just use the path for non-roaming user-specific data files.
    var appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
    return Path.Combine(appDataPath, "Fabrikam", "AssetManagement", "Logging");
}
La vidéo de présentation ci-dessous permet de faire un tour d’horizon de la question. Se référer enfin au lien GitHub du pack de compatibilité Windows pour les détails additionnels.


Sources

Annonce du pack de compatibilité Windows pour .Net Core

GitHub pack de compatibilité Windows

Votre avis

Développez-vous des applications basées sur .Net Framework ? Si oui, quel commentaire faites-vous de la disponibilité de ce pack de compatibilité ?

Voir aussi

.NET Core ou .NET Framework ? Quelle implémentation adopter pour son projet ? Par Hinault Romaric


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :
Contacter le responsable de la rubrique Accueil