Pour cet article je vais faire un mini REX sur l’écosystème de Microsoft pour les développeurs.
J’ai commencé à travailler avec les technologies Microsoft vers 2016. Pour situer, Windows 10 devait avoir à peu près un an et Satya Nadella était à la tête de l’entreprise depuis 2 ans environ.
Ces deux points sont, à mon sens, importants et ont fait débuter une nouvelle ère chez Microsoft. Déjà Windows 10 à fait naître UWP (Universal Windows Platform) où pour la première fois, les développeurs peuvent construire une application pour la déployer sur toutes les plateformes Windows (PC, tablette, Xbox, HoloLens, Windows Phone – RIP, IoT, etc.).
Ensuite le CEO a donné une nouvelle direction pour tendre vers l’open-source. Ce qui est « révolutionnaire » pour Microsoft. Cela a permis de faire évoluer les technologies de Microsoft conjointement avec Microsoft et la communauté. Pour moi, Microsoft réussi à joindre le meilleur des deux mondes.
L’open-source a permis de compléter les composants graphiques d’UWP avec l’Windows CommunityToolkit. Cette boîte à outils est d’une grande aide pour les développeurs en ajoutant de nouveau composant (exemple : rogner une image avec ImageCropper) mais aussi des utilitaires comme l’implémentation des notifications « toasts » Windows.
Une autre révolution chez Microsoft est la portabilité du framework .NET vers du cross-plateforme. Ce qui a amené à .NET Core. Tout cela depuis 2016 !
Aujourd’hui en 2022, toutes ces révolutions ont bien évoluées et l’écosystème c’est complexifié si on ne se tient pas à jour des actualités.
Historiquement Microsoft mettait à disposition un seul et unique framework : .NET Framework. L’avantage est que les développeurs n’ont qu’un seul framework sur lequel se baser mais il faut un système d’exploitation sous Windows. Puis est arrivé .NET Core, avec qui il est possible de l’utiliser sur la majorité des OS : Windows, Linux et MacOS. Entre temps il y a eussi .NET Standard puis un framework propre à UWP, sans parler de Xamarin…
Mais heureusement la coexistence entre .NET Framework et .NET Core prend fin en 2022 avec l’unification des framework dans la version .NET 6. Enfin !
Travaillant dans l’industrie du logiciel, j’ai vu à quel point les choix étaient compliqués entre le choix des versions, la compatibilités entre elles et leurs évolutivités. Heureusement l’unification est là et permet une dernière grosse migration pour les développeurs..NET 6 est vraiment une grande étape qui permet de cibler : Windows, Linux, MacOS, iOS, Android ! Ce qui donne naissance à .NET MAUI, l’évolution de Xamarin.
.NET MAUI
L’un des grands avantages de .NET MAUI est l’unification des projets par plateforme cible. Alors que Xamarin crée un projet pour iOS, Android et le code partagé. Là un seul projet est à gérer.
Un des points qui m’a frustré est de ne pas avoir unifié le XAML (langage UI Microsoft, l’équivalent du HTML par exemple) avec celui des autre frameworks Microsoft comme WPF ou UWP.C’est un produit à l’heure de cet article un peu jeune pour moi. Ce n’est pas encore assez aboutie pour concurrencer Flutter par exemple sur le cross-plateforme. Mais l’avenir ne peut réserver que de bonnes évolutions.
WinUI 3
Pour moi, WinUI 3 tends vers le remplacement d’UWP pour les applications bureau. À mon sens, UWP n’a sa place uniquement si vous souhaitez cibler les plateformes comme Xbox, Hololens ou de l’IoT et encore.
Pour une application bureau WinUI 3 est juste très bien pensée et cohérente avec l’évolution et l’écosystème de la marque. De plus il se repose sur .NET 6, ce qui permet de regrouper facilement vos logiques métiers entre .NET MAUI et WinUI 3 par exemple ou .NET API.
Conclusion
Je ne suis pas le plus objectif par rapport à Microsoft car j’apprécie beaucoup l’écosystème. Mais l’entreprise à fait une belle évolution. Je trouve qu’elle facilite toujours la vie des développeurs par rapport aux autres produits du marché. Même si ce n’est pas à 100% parfait, Microsoft ne répondra pas à tous les besoins. Je trouve que l’on ne considère pas assez les technologies Microsoft et que le public à encore une vision ancienne où de toute façon pour utiliser ses technologies il faut uniquement du Windows/Windows Server et beaucoup de RAM. Ce qui n’est plus vrai actuellement où il fait de l’ombre à Java sur les performances, le cross-plateforme et la syntaxe du langage avec C#.
Avant .Net 8, tester du code qui utilise DateTime.Now() n’était pas trivial, on devait faire en sorte de mocker la Clock dans nos tests. Depuis .Net 8, c’est beaucoup plus facile grâce à TimeProvider inclut par défaut !
En deux mots, TimeProvider est une classe abstraite et on va pouvoir injecter dans nos tests une implémentation “Fake” qui va nous permettre de changer la date actu...
La gestion des erreurs de son API est très importante pour que les consommateurs puissent avoir une description claire du problème mais c’est souvent fastidieux à maintenir.
On va voir comment avoir des statuts de réponse cohérent et des messages d’erre...
On va voir comment avoir en quelques minutes des assertions qui vont vérifier les endpoints de notre API avec des scénarios de ce genre:
Feature: Create a new account
As a visitor,
I can create an account to access the game
Scenario: A visitor c...
Depuis .NET 9, le le support d’OpenAPI est directement inclus dans .NET et ne passe plus par les librairies Swagger par défaut (plus d’info sur ce choix ici si jamais ça vous intéresse).
De façons simplifiée, la librairie Swashbuckle.AspNetCore.Sw...