Blogue

Technologie
Ce que vous devriez savoir à propos de .NET Core
4 octobre 2017
par Eduardo Mazza

Il y a déjà un certain temps que le cadriciel .NET Core est offert sur le marché (une version 2.0 vient tout juste d’être lancée). Toutefois, beaucoup d’entreprises hésitent encore à faire migrer leurs projets vers .NET Core (ils se demandent si la migration en vaut la peine, ce qui est un questionnement très pertinent). De plus, beaucoup d’entreprises, même lors du démarrage d’un nouveau projet, choisissent de ne pas tirer profit de .NET Core et préfèrent continuer à utiliser le bon vieux .NET Framework.

La raison de cette non-utilisation de .NET Core dans le cadre d’un projet est qu’habituellement les décideurs craignent des délais imprévus imputables aux nouvelles technologies en présence. Beaucoup d’entreprises ont en effet tendance à attendre que les technologies atteignent un certain niveau de maturité avant de les adopter dans leur panoplie d’outils.

Heureusement, tout comme pour les premières versions de .NET Framework, la migration commencera dès que les gens comprendront mieux et se sentiront plus en sécurité avec .NET Core. Dans cet article, nous tenterons d’expliquer, à un niveau technique plus élevé, les changements apportés par .NET Core, ce qui devrait vous aider à convaincre votre entourage de l’adopter le plus tôt possible.

Un cadriciel multiplateforme (cette fois, c’est vrai)

À l’époque où est apparu .NET Framework (pour ceux qui s’en souviennent), la demande pour Java était forte. Et tout comme pour Java, l’idée sous-jacente avec .NET était que chacun puisse implanter un compilateur permettant de compiler des programmes dans le langage intermédiaire .NET. En fait, si votre mémoire est bonne, vous vous souviendrez peut-être qu’ils proposaient même une implémentation de Java.NET (qui n’a pas évolué).

Voilà, vous pouviez choisir tout langage (VB, Java, C++, ou C#, le tout nouveau langage qu’ils venaient de créer) pour utiliser .NET. La seule chose à faire était d’installer le cadriciel .NET Framework dans la machine (il a ensuite été proposé par défaut avec la mise à jour Windows, ce qui a rendu la chose encore plus simple). Une implémentation de .NET Framework pour Linux était en préparation (nommée Mono Project), toutefois, l’intérêt de Microsoft pour ce projet était douteux et les concepteurs Linux ont dû faire face à des retards ou à des définitions erronées.

Avec .NET Core, les choses se sont passées différemment. Dès le départ, des versions pour Mac et Linux ont été offertes en téléchargement sur le site. Cette fois, il semblait que Microsoft était prête à proposer l’expérience .NET Core à tous, quel que soit l’appareil. Pour le dire à la façon de Microsoft (https://docs.microsoft.com/en-us/dotnet/core/) :

.NET Core peut être considéré comme une version multiplateforme de .NET Framework, située au niveau de la couche des bibliothèques de classes de base (BCL). Il implémente la spécification de .NET Standard.

.NET Core et bibliothèques de base

.NET Core peut être vu comme une réécriture de .NET Framework. Cette mesure était nécessaire puisque Microsoft désirait créer un cadriciel multiplateforme et que la version précédente de .NET Framework était fragmentée pour les multiples plateformes (Silverlight, Windows Phone, Windows Store). Dans un premier temps, Microsoft pensait le nommer .NET Framework 5 (la dernière version s’appelant 4.6.x), mais comme il s’agissait d’une réécriture complète qui utilisait de tout nouveaux concepts, la décision a été prise de recommencer la numérotation.

En conséquence, les autres bibliothèques devaient faire de même… Entity Framework 6.1.x a évolué vers Entity Framework Core 1.0 (plutôt que vers la version 7) et ASP.NET 4.5 à évolué vers ASP.NET Core 1.0 (plutôt que vers la version ASP.NET 5). Il faut préciser que dans le cas de certaines bibliothèques, il est possible d’utiliser la version Core sans utiliser le cadriciel .NET Core. C’est le cas pour ASP.NET Core 1.0 qui peut s’utiliser avec .NET Framework 4.6 :

Il est important de noter que .NET Core propose un sous-ensemble d’API disponibles dans .NET Framework. Cela signifie que, pour certaines bibliothèques, les routines sont soit :

Il s’agit d’une position difficile pour les concepteurs de logiciels qui doivent décider quand migrer vers la version « Core » des bibliothèques.

Certaines caractéristiques seront remplacées par d’autres technologies parce qu’à un certain point, elles deviennent problématiques (p. ex., peu sûres, difficiles à maintenir) et ne seront pas placées dans le Core. Parmi celles-ci :

WPF/XAML  La spécification graphique Windows Presentation Foundation s’utilise pour créer des interfaces utilisateur. La bibliothèque standard .NET n’inclut aucune bibliothèque UI et .NET Core ne proposera pas de cadriciel multiplateforme UI.

.NET remoting – Dans les versions précédentes de .NET Framework (antérieures à Windows Communication Framework), les objets distants étaient utilisés pour la communication inter-processus. Ils ont été remplacés par les services de type REST.

Services Windows Communication Framework (WCF) et ASMX – Le développement de services Web a été remplacé par l’infrastructure API Web. Bien qu’il soit toujours possible d’utiliser les fonctions client de WCF, .NET Core ne contiendra plus de classes pour la création de services.

Open Source

Au cours des dernières années, Microsoft a adopté une philosophie open source (code source libre). Même si votre entreprise ne participe à aucun projet open source, cela change la donne pour les concepteurs de logiciels. Il n’est pas rare que les concepteurs aient beaucoup de mal à utiliser les bibliothèques non partagées, qu’un code de fonctionnement d’une bibliothèque leur soit incompréhensible.

La première étape a été de rendre disponible le code complet du cadriciel .NET Framework (disponible à l’adresse : http://referencesource.microsoft.com/). Pour .NET Core, un GitHub public a été créé et maintenant, tous peuvent proposer des modifications ou déposer un pull-request (requête de téléchargement du code source). Cela permet à la communauté de contribuer beaucoup plus aux futures fonctions du cadriciel (https://github.com/dotnet/core).

Conclusion

En conclusion, il y a certaines choses concernant .NET Core qui valent la peine d’être mentionnées à votre patron :