.NET 5 : introduction à la plateforme unifiée de Microsoft

A partir de novembre 2020, Microsoft fusionne .NET Framework et .NET Core 3.x pour créer .NET 5. Une plateforme unifiée pour les développeurs combinant dev .NET, Cloud, gaming, IoT, web, et l'IA.

Le développement selon Microsoft

Microsoft envoie des messages parfois complexes sur le développement. En voici les fondamentaux :

  • La technologie est le Microsoft .NET Framework,
  •  L’environnement de développement est Visual Studio,
  •  Le langage phare est C#,
  •  Le développement mobile se fait avec Xamarin,
  • Les API pour le développement Desktop sont WinForms et WPF,
  • Les API pour l’accès aux données sont ADO.NET et Entity Framework,
  • La technologie Web est ASP.NET MVC et ASP.NET Web API,
  • Microsoft décline .NET en .NET Core et ASP.NET Core pour Windows, Linux et MacOS,
  • Le futur du développement est le cloud Azure et l’intégration des services managés dans les applications.

La roadmap .NET 5

On nous annonce .NET 5 pour fin 2020. C’est la fusion entre .NET Framework 4.8 et .NET Core 3.x. Pourquoi pas. Avec en plus, le multiplateforme sous Linux, Mac et Windows et pour le mobile sous Android et iOS. Mono permettant toujours de faire du GTK sous Gnome. .NET 5 est avant tout une plateforme unifiée. On y trouve WinRT qui est disponible depuis Windows 8, les compilateurs Roselyn C# et VB.NET, les langages C#, VB.NET et F# et C++/CLI et on y trouve plusieurs volets :

  • Le desktop avec WPF, WinForms et UWP,
  • Le web avec ASP.NET,
  • Le cloud avec Azure,
  • Le mobile avec Xamarin,
  • Le gaming avec Unity,
  • L’IoT,
  • L’AI avec ML.NET.

On dispose des outils Visual Studio (Windows et Mac) et Visual Studio Code. Visual Studio est l’outil dans lequel on fait tout. Si vous avez la possibilité, passez à la version Pro (ou Enterprise).

Application web ou application desktop ?

La mode est de faire des application Web en JS/TS avec Angular, React ou Vue.JS. C'est coûteux à développer pour une complexité exponentielle.  Il y a beaucoup de copier/coller et le code est spaghetti. C’est le principal problème des technologies JavaScript. De plus, la maintenance de ces applications est une catastrophe. Je préfère de loin les applications web server de type ASP.NET MVC qui permettent de séparer le code et les pages dans des modules distinctes et qui ne sont pas des amas de code static. ASP.NET MVC est une très bonne technologie et vous pouvez miser dessus. Une autre solution est de réaliser des applications desktop WinForms ou WPF. Ces technologies ne sont pas mortes, bien au contraire. Avec .NET Core, elles retrouvent de la jeunesse car plus légères et plus rapides.

La révolution XAML avec WinUI

Il existe un nouveau venu dans le domaine UI et il se nomme WinUI : ce sont les contrôles XAML natifs de Windows. Il est fortement conseillé par Microsoft d’utiliser ses contrôles natifs dans les applications WinForms ou WPF ou même C++. Le style minimaliste est de mise. L’ancien nom Métro vous rappelle quelque chose ? XAML est maintenant associé à Windows et non plus à WPF et NET.

La revanche de Windows sur NET/WPF

C’est encore la guerre Windows Division / Developer Division qui se traduit avec WinUI. Le traumatisme de Longhorn est toujours dans les têtes chez Microsoft. Cette initiative qui consistait à vouloir introduire du C#/.NET dans Windows avec WinFS , un système de fichier orienté objet, Avalon (WPF) et WCF (Windows Communication Foundation) et WF (Windows Workflow). Microsoft a décidé de mettre fin à cette expérience et n’a jamais utilisé de C#/NET dans Windows. Le seul module dans Windows qui utilise du NET est une partie du serveur Web IIS pour la gestion ASP.NET sinon rien du tout ! Sur 4000 dlls dans System32, tout est natif. Mieux, le code a évolué du C++03 au C++ Moderne et les modules Shell standards des accessoires et du control panel sont fait en XAML avec les contrôles natifs mais toujours en C++.

WinUI 3.0

Revenons à WinUI, voici la roadmap disponible sur Github.

L’aspect économique

Le bijou de Microsoft c’est Windows, Office 365 et Azure. Tout est bon pour vous faire venir sur Azure. On vous parle de VM Linux, de containers, de Docker, de Kubernetes et du support de beaucoup de technologies open source. La réalité c’est que vous venez comme vous êtes (comme au Mc Do) et que vous allez un ou l’autre utiliser et consommer de l’Azure ! C’est une question de temps. Le virage technologique est enclenché. Le cloud s’impose.

La modernisation des applications

Il est un domaine dans lequel les entreprises de services se sont engouffrées : la modernisation des applications. Sous ce nom exotique, on trouve la mise en œuvre de technologies cloud comme la télémétrie, le stockage et l’appel à des services managés de type Web API en REST. Une application desktop devient connectée au services de l’entreprise mais aussi à Azure pour son monitoring, son logging et utiliser de plus en plus de services. Cela passera par du middleware comme Service Bus ou RabbitMQ, SQL Azure ou peut-être Service Fabric ou même de la technologie serverless Azure Functions. Il parait que 2020 est l’année du serverless… A suivre.