WinUI, Project Reunion, .NET6, Dapr… Microsoft veut réinventer le développement sous Windows et réintéresser les développeurs à son environnement phare. Les briques se mettent peu à peu en place.

Il y a eu Windows… Puis, il y a eu le Web et une nouvelle génération de développeurs peu intéressés par Microsoft… Après ça, il y a eu les smartphones et tablettes, et leur génération de développeurs mobiles qui n’avaient que faire des PC, de Windows et des applications Bureau…

Aujourd’hui, Microsoft est face à une nouvelle réalité : la pandémie a redoré l’image de Windows et confirmé le rôle du PC mais les développeurs ne sont guère plus séduits pour autant par le développement de nouvelles applications Desktop.
Pire encore, l’univers Windows est divisé entre les logiciels historiques s’appuyant sur Win32 et les logiciels « nouvelle génération » UWP qui peuvent aussi fonctionner sur Windows 10X, Surface Hub, Hololens ou XBox. Deux univers de programmation sans véritable lien et nécessitants des savoirs différents.

Les entreprises, de leur côté, doivent, elles aussin, faire face à cette double réalité de Windows. Mais elles doivent aussi affronter des problématiques de multiplicité des plateformes et de la nécessité non seulement de moderniser un existant mais également de couvrir la diversité des appareils et des expériences. Pour cela, les pistes se multiplient entre les développements PWA (Progressive Web Apps), les frameworks cross-plateforms (UNO Platform, Electron, React), les nouveaux environnements comme Flutter de Google, les outils de développements Low-Code (Appian, Microsoft Power Apps, Alpha Anywhere, Capriza, PowWow Mobile, QuickBase, Appcelerator, AppGyver, OutSystems, Mendix, Nintex, Bizagi, Pega, Kissflow, …).

L’an dernier, Microsoft rebattait ses cartes et annonçait sa volonté de repenser totalement sa stratégie. Cette dernière repose désormais principalement sur trois piliers :

.NET6 pour cibler tous les environnements à partir d’un même framework open-source.
WinUI 3 et Project Reunion pour réconcilier les deux visages du développement Windows (Win32 et UWP) tout en modernisant le look & feel des applications Desktop.
.NET MAUI pour simplifier les développements cross-plateformes : Windows, macOS, Android…

Suite à diverses annonces réalisées ces derniers jours, on y voit un peu plus clair sur la concrétisation de cette nouvelle stratégie et les roadmaps des différentes briques.

.NET 6 supporte l’Apple M1

Microsoft a dévoilé la première preview de .NET6. Le framework en open-source succède à « .NET5 » qui avait fait converger le « .NET Framework » historique de Windows et le « .NET Core » son dérivé open-source et cross plateforme. « .NET6 » achève cette convergence et veut faire évoluer le développement cross desktop/mobile, là où « .NET Core » donnait jusqu’ici la priorité au développement cross plateforme côté serveur.
.NET6 introduit le support des plateformes macOS « ARM » sous processeurs Apple Silicon M1. Mais Microsoft a confirmé que sous .NET6, les développeurs devront préciser à la compilation si le binaire sera destiné aux Macs sous Intel ou aux Macs sous M1. Autrement dit, .NET6 ne supportera pas le format applicatif universel (universal binaries) d’Apple mais envisage un tel support sous .NET7 si le marché le nécessite encore.
Au passage, .NET6 améliore aussi le support ARM64 sous Windows.
Surtout, .NET6 introduit le support de Blazor pour le développement d’applications : Blazor Desktop. Ce Framework WEB peut exécuter .NET au cœur du navigateur grâce à une compilation (à l’exécution) en WebAssembly. Blazor permet de programmer en C# sous .NET6 tout en utilisant des composants visuels en HTML et CSS. C’est un moyen simple et rapide pour des développeurs C# d’adresser non seulement les environnements Web mais également Windows et macOS ainsi qu’Android et iOS.

WinUI 3.0 pour redonner un avenir aux développements Windows

Microsoft a également rendu public la Preview 4 de WinUI 3.0, la nouvelle plateforme pour la création d’interfaces utilisateurs sous Windows. « WinUI fournit un moyen de migrer progressivement les applications existantes écrites dans des technologies historiques comme MFC, WinForms et WPF, vous permettant de faire avancer ces applications à votre propre rythme » expliquent les responsables du projet. « WinUI prend en charge C++, C#, Visual Basic et même Javascript via React Native pour Windows ».

Intégrant les concepts de Fluent Design élaborés par Microsoft, WinUI s’impose comme une brique essentielle pour faire évoluer le « look & feel » des applications Windows alors que Windows 10 devrait connaître un relooking majeur fin 2021 avec « Project Sun Valley » (Windows 21H2).

Mais plus encore, WinUI 3.0 est la brique fondatrice de Project Reunion. « À terme, nous ne parlerons plus de logiciels Win32 et d’apps UWP mais simplement d’ ‘applications Windows’. Nous allons combiner win32 et UWP, de sorte que les développeurs n’aient plus à choisir, en unifiant ces API et les découplant du système d’exploitation » expliquait Rajesh Jha, vice-président exécutif du Groupe Expériences et Périphériques de Microsoft en mai 2020.
L’idée est de permettre aux développeurs de progressivement recréer les interfaces utilisateurs de leurs logiciels Win32 ou UWP en adoptant, formulaire par formulaire, fenêtre par fenêtre, les composants modernes de WinUI 3.0.

Si l’on en croit la roadmap, Microsoft compte finaliser WinUI 3.0 dans les prochaines semaines pour introduire Reunion 0.5 dès Mars 2021, puis Reunion 0.8 en mai 2021, afin d’avoir un Reunion 1.0 et un .NET 6 tous deux finalisés et RTM pour novembre 2021.

.NET MAUI pour un .NET véritablement cross plateforme

Le problème de WinUI 3 et Project Reunion 1.0, c’est qu’ils ne s’adressent qu’aux développeurs Windows. Quid des développeurs et des entreprises qui voudraient exploiter .NET6 sur de multiples plateformes et construire des applications modernes visant les bureaux et les mobiles ?
La réponse s’appelle « .NET MAUI » (.NET Multi-platform App UI). Ce framework de conception d’UI dérive de Xamarin Forms. Il permet de développer en .NET des applications compatibles iOS, Android mais aussi désormais des applications macOS et Windows. On notera au passage l’absence de Linux dans les plateformes visées officiellement même si rien n’interdit à la communauté Linux de travailler au portage puisque toutes ces technologies sont open-source. En réalité, Microsoft compte même sur un tel effort communautaire mais ne souhaite pas le piloter (contrairement à ce qu’elle fait pour macOS et Windows).
Tout comme WinUI 3, « .NET MAUI » repose sur le langage descriptif d’interfaces XAML mais s’appuie sur sa déclinaison héritée de l’univers Xamarin plutôt que sur sa déclinaison Windows (issue de WPF) utilisée pour WinUI 3.
« .NET MAUI » devrait hériter de certaines évolutions visuelles introduites avec WinUI 3. Mais si ce dernier cible exclusivement Windows, « .NET MAUI » relève d’une approche cross-plateforme qui impose certains compromis.

Au final, Microsoft avance ses pions et devrait avoir finalisé sa nouvelle stratégie de développement plus unifié et plus cross-plateforme d’ici Novembre 2021. En attendant, les éditeurs de logiciels Windows peuvent commencer à expérimenter les nouvelles technologies et les entreprises ont les billes nécessaires pour prendre les décisions quant à l’orientation qu’elles veulent donner non seulement à leurs développements sous Windows mais également sur les autres plateformes.

DAPR 1.0 : un framework pour des apps « kubernetes-natives »

Microsoft a également annoncé la semaine dernière la disponibilité de la version 1.0 de son framework en open source Dapr. L’objectif de ce framework est de simplifier significativement le développement d’applications « cloud native », autrement dit d’applications ultra-distribuées à base de microservices et destinées à être déployées sur des infrastructures Kubernetes.

Un peu à la manière de .NET, Dapr veut fournir aux développeurs des briques universelles et essentielles pour développer plus rapidement des applications cloud distribuées. « Si l’on regarde les développeurs en entreprise. On leur demande désormais de containeriser et de créer des microservices qui montent en charge et se mettent à jour sans arrêt et d’intégrer ça avec tous les services cloud. Sans compter qu’on leur demande également que les applications puissent être portées sur différents environnements on-premises et cloud. Voilà plein de nouvelles complexités qui leur sont balancées au visage et qui n’ont rien à voir avec les problèmes métiers qu’ils essayent de résoudre » explique Mark Russinovich, CTO de Microsoft Azure à nos confrères de The Register. C’est justement toute cette plomberie que Dapr cherche à prendre en charge pour eux afin de leur faciliter la création, l’assemblage et le déploiement de microservices « event-driven » (réagissant à des événements). Dapr s’inspire des infrastructures Serverless FaaS et fournit un framework universel déployable sur n’importe quelle architecture Kubernetes.