Lors de la session, AWS a parlé de son soutien à l'open source .NET, y compris le financement et les crédits AWS pour les projets, les outils de portage à partir du Framework .NET réservé à Windows, les contributions de code dans un effort pour porter le framework Windows Communication Foundation (WCF) vers .NET multiplateforme, et le code pour permettre la connectivité Active Directory à partir de conteneurs Linux.
.NET Core (désormais officiellement juste appelé .NET) est la version open source et multiplateforme, publiée pour la première fois en 2016. Le portage des applications n'est pas toujours simple. .NET repose sur un runtime hautes performances utilisé en production par de nombreuses applications à grande échelle. Les fonctionnalités .NET permettent aux développeurs d’écrire du code fiable et performant de manière productive.
- Code asynchrone
- Attributs
- Réflexion
- Analyseurs de code
- Délégués et expressions lambda
- Événements
- Exceptions
- Garbage collection
- Types génériques
- LINQ (Language Integrated Query).
- Programmation parallèle
Les applications et bibliothèques .NET sont générées à partir du code source et d’un fichier projet, à l’aide de l’interface CLI .NET ou d’un environnement de développement intégré (IDE) comme Visual Studio. « Ces deux dernières années, nous avons passé beaucoup de temps à faire passer les clients de .NET Framework à .NET Core, afin qu'ils puissent s'affranchir des licences Windows et SQL Server et utiliser Linux et les technologies natives du cloud », a déclaré Mayur Dewaikar, chef de produit senior chez AWS.
Les applications qui font appel à COM ou à d'autres API Windows natives ne fonctionneront pas sur Linux, et certaines parties du .NET Framework, notamment ASP.NET Web Forms et une grande partie de Windows Communication Foundation (WCF), ne font pas partie de .NET Core. Il s'agit d'une situation étrange, où AWS investit dans une partie de la plateforme de développement de Microsoft afin d'aider ses clients à migrer vers d'autres parties.
L'allégation de sous-financement de l'open source .NET peut également sembler surprenante, étant donné que Microsoft a créé la Fondation .NET, qui se présente comme « une organisation indépendante à but non lucratif créée pour soutenir un écosystème open source innovant et commercialement convivial autour de la plateforme .NET. » AWS figure sur la liste des 10 entreprises sponsors.
Le chemin de l'open source .NET n'a pourtant pas été sans heurts, et une série d'incidents survenus l'année dernière a notamment amené un membre du conseil d'administration à admettre qu'il avait « violé la confiance du responsable du projet ». Une dispute au sujet d'une fonctionnalité de .NET que Microsoft a supprimée de l'open source .NET au profit de Visual Studio, avant de s'excuser et de la rétablir, a été un autre rappel de l'ambivalence de l'entreprise à l'égard de l'aspect open source de .NET.
Windows Communication Foundation
L'équipe .NET de Microsoft a consacré beaucoup d'énergie à la plateforme et, sur le plan technique, salue les efforts des contributeurs externes, dont AWS. Un exemple notable est le travail sur WCF. « Le projet Core WCF a été lancé par un développeur de Microsoft dans l'équipe WCF », a déclaré Banerjee. « Nous avons été mis en relation avec cette personne très tôt dans le développement et nous travaillons ensemble depuis. Nous sommes en phase avec Microsoft sur ce projet. »
Windows Communication Foundation (WCF) est une infrastructure permettant de créer des applications orientées service. À l’aide de WCF, il est possible d’envoyer des données sous forme de messages asynchrones d’un point de terminaison de service à un autre. Un point de terminaison de service peut faire partie d'un service disponible en continu et hébergé par IIS, ou il peut s'agir d'un service hébergé dans une application.
Un point de terminaison peut être un client d'un service qui demande des données auprès d'un point de terminaison de service. Les messages peuvent être simplement constitués d'un caractère ou d'un mot unique envoyé au format XML, ou se présenter sous la forme d'un flux de données binaires plus complexe. Voici quelques exemples de scénarios :
- service sécurisé pour traiter des transactions commerciales ;
- service qui fournit des données actuelles à d'autres services, comme un rapport sur le trafic ou tout autre service de surveillance ;
- service de conversation qui permet à deux personnes de communiquer ou d'échanger des données en temps réel ;
- application de tableau de bord qui interroge les données d'un ou de plusieurs services et les présente de manière logique ;
- Exposition d'un workflow implémenté à l'aide de Windows Workflow Foundation en tant que service WCF.
Alors que la création d’applications de ce type était possible avant l’existence de WCF, WCF rend le développement des points de terminaison plus facile que jamais.
Selon Banerjee, AWS essaie « d'améliorer WCF, et non de le laisser avec les limitations qu'il avait. » Le travail comprend la prise en charge de l'identité fédérée pour les liaisons HTTP, et le travail visant à étendre la prise en charge de la mise en file d'attente des messages WFC « pour inclure d'autres courtiers de messages » aux côtés de Microsoft Message Queue (MSMQ), tels que RabbitMQ et Amazon SQS (Simple Queuing Service). « Nous avons contribué à une conception qui fournit une couche pour ce cadre de messagerie, de sorte que vous pouvez fournir une mise en œuvre du cadre de messagerie que vous voulez utiliser. »
Active Directory
Un autre domaine clé est celui d'Active Directory (AD). « Un projet sur lequel nous avons travaillé cette année est la connectivité AD à partir de conteneurs Linux », a déclaré Banerjee. « Lorsque les clients commencent à se moderniser, ils nous ont dit qu'il est difficile de se détacher d'AD, car AD connecte toute leur organisation. » Un annuaire est une structure hiérarchique qui stocke des informations sur les objets du réseau.
Un service d'annuaire, tel que Active Directory Domain Services (AD DS), fournit les méthodes permettant de stocker les données d'annuaire et de les mettre à la disposition des utilisateurs et des administrateurs du réseau. Par exemple, AD DS stocke des informations sur les comptes d'utilisateurs, comme les noms, les mots de passe, les numéros de téléphone, etc. et permet aux autres utilisateurs autorisés sur le même réseau d'accéder à ces informations.
Active Directory stocke des informations sur les objets du réseau et permet aux administrateurs et aux utilisateurs de trouver et d'utiliser facilement ces informations. Active Directory utilise un magasin de données structuré comme base d'une organisation logique et hiérarchique des informations de l'annuaire.
Ce magasin de données, également appelé répertoire, contient des informations sur les objets Active Directory. Ces objets comprennent généralement des ressources partagées telles que des serveurs, des volumes, des imprimantes et des comptes d'utilisateurs et d'ordinateurs du réseau. Pour plus d'informations sur le magasin de données Active Directory, voir Magasin de données de l'annuaire.
La sécurité est intégrée à Active Directory par l'authentification de la connexion et le contrôle d'accès aux objets de l'annuaire. Avec une seule connexion au réseau, les administrateurs peuvent gérer les données et l'organisation de l'annuaire sur l'ensemble de leur réseau, et les utilisateurs autorisés du réseau peuvent accéder aux ressources partout sur le réseau. L'administration basée sur des règles facilite la gestion du réseau, même le plus complexe. Pour plus d'informations sur la sécurité d'Active Directory, consultez la section Présentation de la sécurité. Active Directory comprend également :
- un ensemble de règles, le schéma, qui définit les classes d'objets et d'attributs contenus dans l'annuaire, les contraintes et les limites des instances de ces objets, ainsi que le format de leurs noms ;
- un catalogue global qui contient des informations sur chaque objet du répertoire. Cela permet aux utilisateurs et aux administrateurs de trouver des informations sur l'annuaire, quel que soit le domaine de l'annuaire qui contient réellement les données ;
- un mécanisme d'interrogation et d'indexation, afin que les objets et leurs propriétés puissent être publiés et trouvés par les utilisateurs ou les applications du réseau ;
- un service de réplication qui distribue les données de l'annuaire sur un réseau.
Tous les contrôleurs de domaine d'un domaine participent à la réplication et contiennent une copie complète de toutes les informations d'annuaire pour leur domaine. Toute modification des données d'annuaire est répliquée sur tous les contrôleurs de domaine du domaine.
Dans Windows AD, un compte de service géré par groupe (gMSA) est souvent utilisé comme compte pour les services d'application. « C'est une excellente architecture qui peut être portée sur Linux », a déclaré Banerjee. AWS a travaillé sur un composant appelé credentials fetcher. « Il s'agit d'un démon qui se trouve sur les instances Linux », a-t-il déclaré. Cela permet d'utiliser les gMSA dans des conteneurs Linux.
ASP.Net Web Form
Un troisième domaine qui retient certaines applications .NET sous Windows est celui des applications ASP.Net Web Form. « Il n'y a aucun moyen pour les clients de porter une application Web Forms vers .NET Core », a déclaré Banerjee. Les formulaires Web sont des pages Web construites sur la technologie ASP.NET. Elles s'exécutent sur le serveur et génèrent une sortie vers le navigateur. Ils sont compatibles avec tous les navigateurs et tous les langages supportés par le moteur d'exécution commun .NET. Il est flexible et nous permet de créer et d'ajouter des contrôles personnalisés.
Nous pouvons utiliser Visual Studio pour créer des formulaires Web ASP.NET. Il s'agit d'un environnement de développement intégré (IDE) qui nous permet de glisser et de déposer des contrôles de serveur sur les formulaires Web. Il nous permet également de définir des propriétés, des événements et des méthodes pour les contrôles. Pour écrire la logique métier, nous pouvons choisir n'importe quel langage .NET comme : Visual Basic ou Visual C#.
Les formulaires Web se composent de deux éléments : la partie visuelle (le fichier ASPX) et le code du formulaire, qui réside dans un fichier de classe distinct. AWS ne tente pas de mettre en œuvre les formulaires Web pour Linux, mais a ajouté une fonctionnalité de formulaires Web à Blazor dans son assistant de portage pour .NET, Blazor étant une technologie d'application Web qui fonctionne dans .NET Core. « Ce travail est loin d'être terminé », a déclaré Banerjee, « et nous demandons à la communauté de nous aider. » L'équipe envisage également des options pour porter les applications Web Forms vers AngularJS ou ReactJS.
Serverless .NET, spécifiquement sur Lambda, est un autre problème délicat. " Les clients nous ont dit, lorsqu'ils lançaient des Lambdas avec .NET, qu'il y avait un problème constant de démarrage à froid ". Le problème n'est pas seulement la nécessité de charger le runtime .NET à chaque fois qu'une fonction s'exécute, mais aussi « le compilateur JIT (just in time) intervient à chaque fois pour compiler le code intermédiaire .NET en code natif et cela prend également beaucoup de temps. »
La solution de la récente version .NET 7 est la compilation AOT (Ahead of Time). AWS a donc travaillé sur des outils Lambda pour .NET qui ajoutent la compilation AOT native aux fonctions Lambda. La technologie SnapStart pour Lambda, récemment annoncée, pourrait également être utile à cet égard, bien que seul Java soit actuellement pris en charge.
Du côté de la communauté, AWS offre jusqu'à 5 000 dollars chacun pour un maximum de 10 projets communautaires, ainsi que des crédits AWS. « À l'heure actuelle, .NET est la troisième plateforme la plus populaire derrière Python et Java pour le développement d'applications chez AWS », a déclaré Dewaikar.
Même si le cloud Azure de Microsoft est mieux adapté aux applications .NET, les entreprises qui se sont standardisées sur AWS peuvent vouloir exécuter leur code .NET parallèlement à leurs autres déploiements dans le cloud. Ces efforts visant à retirer Windows de .NET profitent également aux utilisateurs d'Azure, car bon nombre des mêmes arguments s'y appliquent. Les VM ou services d'applications Linux sont plus rentables et l'utilisation de conteneurs Linux facilite les déploiements Kubernetes. C'est la nature de l'open source ; l'investissement d'AWS serait également utile aux clients de Microsoft.
Source : Saikat Banerjee, lors d'une session re:Invent
Et vous ?
AWS estime que l'open source .NET est « extrêmement sous-financé, partagez-vous cet avis ?
Quelle plateforme de cloud utilisez-vous ? Pourquoi ?
Selon vous, pourquoi AWS investit dans les outils de portage à partir du Framework .NET réservé à Windows ?
Quelle pourrait être une autre alternative à AWS ?
Voir aussi :
.NET 7 est maintenant disponible en tant que plateforme de développement unifiée de Microsoft, et apporte des améliorations pour .NET MAUI et le support de .NET pour ARM64
Jusqu'au 9 décembre, participez gratuitement à la 5e édition du concours .NET Challenge France, organisé par SoftFluent et EDITx