L'orientation stratégique de Microsoft avec .NET Core

Nous assistons actuellement à une stratégie audacieuse de la part de Microsoft, qui au dépend de son modèle de revenu traditionnel (la vente de licences Windows), cherche à s’ouvrir à une nouvelle population de développeurs.

On a pu lire récemment sur les comptes Twitter de membres de l’équipe Microsoft Asp.NET, qu’ils subissent une forte pression de la part de la direction pour livrer la première version (1.0) de .NET Core et Asp.net Core.

Si Microsoft communique beaucoup sur les futures performances de cette plateforme applicative (voir par exemple ce tweet), l’enjeu est ailleurs et va bien au-delà.

Tout d’abord, qu’est ce que .NET Core et ASP.NET Core ?

ASP.NET Core (précédemment appelé ASP.NET vNext puis ASP.NET 5), est une branche du framework applicatif de développement web ASP.NET. “Branche” dans le sens où le langage continuera à coexister avec la version actuelle d’ASP.NET (4.6) ainsi que ses versions successives “legacy”. C’est par ailleurs une branche qui n’est pas totalement rétro-compatible avec la version actuelle d’ASP.NET. Nous allons comprendre pourquoi.

.NET Core est quant à lui est également une branche du framework .NET traditionnel. C’est un runtime léger, modulaire et optimisé. Il contient un sous-ensemble des librairies du framework .NET traditionnel. Quelques différences notables avec le framework traditionnel :

  • Modulaire: la nouvelle philosophie consiste à intégrer par défaut le minimum de librairies dans le framework. Les librairies supplémentaires nécessaires sont ajoutées explicitement par le développeur, dans un souci de légèreté.
  • Indépendant du système d’exploitation: .NET Core n’est pas spécifique à un OS, et fonctionne aussi bien sur Windows, Mac OSX et Linux.
  • Un exécutable DNX (.NET Execution Environment) est quant à lui spécifique à l’OS, et permet de lancer les applications développées avec .NET Core.
image_60140ec0-ce46-4dbf-a14f-4210eab7f42c.png

Organisation et exécution des projets ASP.Net Core

La première chose qui surprend, est de voir à quel point Microsoft s’est inspiré des bonnes pratiques d’autres plateformes (par exemple Node JS, où la notion de package est centrale). Mais la volonté affichée est également de simplifier l’organisation des projets, et d’ouvrir le champ des possibilités en termes d’hébergement :

  • Par défaut, tous les fichiers présents dans le répertoire sont chargés par Visual Studio. Fini l’infâme .csproj avec des milliers de lignes, source de conflits sur GIT
  • Modularité (once again): on ajoute au project.json uniquement les dépendances dont on a besoin. Par défaut, il n’y en a pas, et Visual Studio et Nuget se chargent de télécharger les fichiers correspondant aux dépendances supplémentaires. Fini System.Web.dll !
  • Configuration de l’application via le code (startup.cs) et non plus via web.config spécifique à IIS.
  • MVC et ASP.NET WEB API deviennent des middlewares (au même titre que le module permettant de gérer les requêtes sur les fichiers statiques par exemple)
  • Commands pour la création de tâches exécutables depuis la ligne de commande: très inspiré des scripts en Node.JS (fichiers package.json)

En termes d’hébergement, les nouveautés :

  • Le projet embarque toutes les librairies dont il a besoin.
  • L’abandon de System.Web permet aussi de s’affranchir de IIS : l’exécution d’applications ASP.NET Core est possible par le biais d’un serveur www léger compatible OWIN (Open Web Interface for .NET). Microsoft fournit un serveur, Kestrel. Ce serveur est également développé avec .NET Core, et lancé avec DNX. Kestrel est un serveur applicatif léger, qui peut être couplé avec IIS (ou tout autre serveur web) pour des fonctionnalités de configuration de privilèges, sécurité, réécriture d’URL...
  • Hébergement sur Docker + Linux, afin de nettement faire baisser les coûts des licences liés aux applications .NET (un frein terrible à l’adoption de cette plateforme)
  • Le futur Windows Server Nano permettra également d’héberger des applications .NET Core dans des conteneurs, tout en réduisant les coûts de licence par rapport à un Windows Server classique.

L’approche open source continue également de prendre de l’essor avec Roslyn (le compilateur), Kestrel, le framework .NET Core en lui même et ASP.NET Core.

Pourquoi est-ce un enjeu pour Microsoft ?

L’usage de la plateforme .NET croit, mais de manière relativement lente. Microsoft considère aujourd’hui qu’il vaut mieux un développeur ou une plateforme .NET utilisable sur Linux + MySQL + Apache (donc pas monétisable en l’état, pas de licence à vendre), qu’un développeur sur une technologie concurrente (Node.js, Java...). Microsoft semble considérer qu’on pourra toujours réfléchir à une façon de monétiser le premier par la suite. Cela a aussi l’avantage d’augmenter la masse de développeurs compétents sur les technologies .NET: c’est un public que l’on pourra amener ensuite à développer sur Windows ou Windows Phone. On apprend également aujourd’hui, dans la même lignée, que SQL Server est porté sur Linux.

Il est nécessaire aujourd’hui de séduire une jeune génération de développeurs, qui n’a pas pour premier réflexe d’opter pour les technologies Microsoft. Le pire serait de s’enfermer dans une image de technologie “à l’ancienne”, destinée à une population pas toujours au fait des dernières pratiques de développement et des outils utilisés couramment dans le monde de l’open source.

Gageons que .NET Core offre à Microsoft les outils qui lui permettront de rajeunir l’image de .NET, et d’inciter tous les développeurs, y compris porteurs de projets innovant à considérer la plateforme comme une option au moment de faire leur choix. D’autant plus que l’environnement a beaucoup de qualités à mettre en avant :

  • Qualité de l’IDE Visual Studio,
  • Mises à jour fréquentes et cohérentes du framework, et innovations récurrentes en C#,
  • Qualité de la plateforme ASP.NET MVC,
  • Tous les outils de langage que nous adorons utiliser au quotidien: LINQ, asynchrone avec Task ou Async/Await.

Cette démarche s’inscrit également en toute logique (même si ce sont deux démarches stratégiques séparées à la base) dans la stratégie de Satya Nadella visant à rajeunir l’image de Microsoft, et à lui faire (re)trouver son swag :)

Notre équipe interne C17 Engineering continue, dans une optique de veille technologique permanente, de suivre et tester activement ces nouveautés.

Microsoft / Java