Aide-Mémoire C#/NET – les Notes de l’Auteur

“C# is a cornerstone of Microsoft’s new .NET platform. Inheriting many features from both Java and C++, C# is destined to become the high-level programming language of choice for building high-performance Windows and Web applications and components–from XML based Web services to middle-tier business objects and system-level applications[1].” [PM2] 

Stanley B. Lippman[2], 2001

C# est un langage moderne, élégant, productif, orienté objet qui permet de faire des applications mobiles, du web, du Desktop, du cloud, du gaming, de l’IoT et de l’IA.

J’ai assisté en 2001 à San Francisco à la conférence Conference.NET organisée par Developmentor durant laquelle les équipes de Microsoft présentaient C# et NET Framework. C’était COM 3.0. À l’époque, on développait en Visual Basic 6 et en Visual C++ et Microsoft nous présentait le futur du développement selon Microsoft. On sentait qu’il y avait un truc spécial. Le monde allait changer. C’était génial. Je suis reparti au bout d’une semaine avec mon Visual Studio NET BETA et le NET Framework SDK BETA2 DVD en poche avec le MSDN Magazine. À l’époque, je travaillais à la Société Générale et je présente le truc. On faisait du C++, des composants COM avec ATL/COM, des UI avec les MFC et de la communication client/server avec des sokets, des Named Pipes, du MQ Series et du Tuxedo. J’explique à mes collègues que .NET c’est l’avenir et qu’il va falloir s’y mettre. Je reste à la SG faire du C++ pendant quelques années et en 2005 je rentre chez Avanade où on ne fait que du .NET. C’était hallucinant : on faisait des SI entiers en .NET avec des Web Services, des sites Web ASP.NET et on utilisait Enterprise Library car Avanade avait une librairie ACA.NET pour le développement dédié aux entreprises. Chez Avanade, joint-venture Microsoft/Accenture, on avait un accès direct aux ressources Microsoft et on avait plein de documents confidentiels (NDA[3]) et des slides de conférences. C’était l’âge d’or de .NET. À l’époque, Visual Studio 2005 était d’une rapidité phénoménale. On faisait des interfaces graphiques de bureau avec WinForms, des applications Web avec ASP.NET WebForms et des Web Services ASMX. On se connectait à SQL Server ou Oracle avec ADO.NET et on faisait du Reporting avec Crystal Report qui était livré avec Visual Studio. Avec Avanade, on a fait des applications de folie pour tout le CAC40. Avec Enterprise Library et ACA.NET, on avait une longueur d’avance et on développait beaucoup en réutilisant les briques. En 2006, Vista est sorti et ce fut le traumatisme Longhorn[4]. Vista devait contenir beaucoup de .NET à l’intérieur de Windows. C’était le projet WinFX. WinFX[PM3] , c’était Avallon (WPF), Indigo (Windows Communication Foundation) et WWF (Windows Workflow Foundation), un système de fichiers entièrement objet nommé WinFS mais… la guerre entre la Windows Division qui fait Windows et la Developer Division qui fait NET a eu raison du projet. WinDiv reprochait à .NET un manque de fiabilité, de rapidité et de robustesse. Ils ont envoyé une liste des requêtes pour .NET et DevDiv n’a jamais pu y répondre et donc WinDiv les a ignorés et a stoppé le projet. Windows a été entièrement fait en C++ sans .NET à l’intérieur. Sachez avant de clore cette parenthèse que la guerre existe toujours et que Windows est toujours exclusivement fait en C++. En parallèle des turpitudes de chez Microsoft à Redmond, WA, USA, j’ai continué à faire des gros projets .NET pour les grands comptes. J’ai participé à un énorme projet mondial Exchange avec Microsoft Corp pour Orange. .NET était utilisé pour le provisioning des serveurs Windows et Exchange. Dans les années 2010, les entreprises migrent massivement leur code Visual Basic et C++ en NET C# ou NET VB.NET. Les annonces d’emplois pleuvent et les salaires de développeur .NET sont attractifs. En 2011, je fais la connaissance de François Merand, qui a passé 10 ans chez Microsoft à l’architecture et il fonde les « NET Rangers by Sogeti ». Je signe chez lui pour faire du consulting .NET avec une dizaine d’individus dont Keelan CLECH à Lyon, des ex-Winwise comme Jason De Oliveira, Loic BAUMANN, Guillaume Rouchon et Vincent LABATUT à Paris. Nous sommes des Experts Cloud, NET et ALM. C’est le début de Azure et ALM, c’est la gestion du cycle de vie des applications (on appelle ça le DevOps maintenant) avec TFS. Pendant 6 ans, sous la responsabilité de Namic AIT-MEDDOUR, j’ai eu un job de rêve. On était des experts communicants ; on faisait des articles, du blog, des conférences, des vidéos, des missions, des events Microsoft comme les TechDays, on était connu sur la place. Le centre de Services NET de Keelan à Lyon était en plein boom. Et en 2017, après un an à avoir développé une application GUI multithreads pour des traders, je suis débauché par Microsoft pour mes compétences C++ ; je ne peux refuser. Je fais C++ et NET. Cependant, quelques mois plus tard, et ce sans avoir démérité, bien au contraire, je suis mis dans la charrette d’une réorganisation mondiale. Microsoft supprime 5 000 emplois dans le monde. Tant pis. En parallèle, François est remercié de Sogeti et les Rangers s’arrêtent. J’ai continué les Rangers en association libre. Après un bref passage chez Devoteam Modern Applications, je rejoins le groupe Econocom et la société Infeeny sous la responsabilité de Michel Hubert et Frédéric Gruaz. Je fais beaucoup de Marketing autour de NET et Azure, des offres commerciales, du blogging, des articles techniques, des white papers, de la formation et aussi un peu de consulting.

Moi qui suis un fan de C++, je dois reconnaître que quand je fais du C# / NET, tout est trop simple. Une classe, un fichier, un document XML ou JSON, une page Web, un serveur Web API, une connexion SQL Server, tout est simple. Avec NET, celui qui veut faire une application peut le faire avec une productivité inégalée. Une interface graphique en WinForms c’est aussi rapide qu’en VB6. On pose les contrôles Windows, on gère les événements et c’est fini. Pour sérialiser une classe, j’ajoute un attribut au-dessus de la classe et c’est terminé, c’est automatisé. Quand je vois les efforts qu’il me faut faire en C++ pour avoir une application de sérialisation multiplateforme la STL et le support XML avec Boost, c’est l’enfer. De plus, il existe des librairies tierces qui permettent de fournir des contrôles pour que les applications soient magnifiques en UI. Par exemple :

  • Telerik 
  • SyncFusion (mon produit préféré) 
  • DevExpress

Bref, faire une application .NET avec C#, c’est simple, ludique, rapide et ça marche plutôt rapidement. Le moteur JIT est fourni par le backend de Visual C++. On a donc une rapidité de folie. Soyons honnête, le code C# NET s’exécute forcément moins rapidement que C++ qui génère de l’assembleur ×64 optimisé mais le résultat est bluffant si l’on considère la productivité accrue de l’environnement. Il est vrai que les applications de communications boîtes noires seront toujours faites en C++ ou en Go, mais les Web API que l’on développe dans les systèmes Azure Kubernetes sont faites en C# NET Core sous Linux.

NET Core est multiplateforme. Il fonctionne sous Windows, Linux et Mac.

La technologies .NET est passionnante à explorer car elle est le fruit du combat entre Microsoft et Sun. Sun a sorti Java et Microsoft a essayé de faire des extensions à java via Visual J++. Microsoft a écopé d’un procès et s’est rétracté. C# et NET étaintt nés. .NET, c’est le Java de Microsoft. Microsoft ne veut pas le reconnaître mais c’est la même architecture : un Framework avec une Base Class Library, un byte code (le MSIL), une machine virtuelle d’exécution et un moteur JIT d’émission de code. L’avantage de .NET et C#, c’est que Microsoft possède toute la stack alors que Java est maintenant la propriété de Oracle et que le modèle Open-Source et les conflits entre Oracle et Google ne présument pas de bonnes choses pour Java en libre. Les entreprises qui font du Java sont obligées de souscrire un contrat de support à Oracle pour faire des applications d’entreprises et ce n’est pas donné ! Cependant, il existe des implémentations libres du JDK qui permettent de s’affranchir de Oracle comme OpenJDK ou Azul.

Un DSI qui veut faire une application ou un SI avec une technologie a le choix entre NET et Java. Microsoft ou Oracle/Google. Les deux stratégies sont payantes.

L’avenir c’est NET Core.

Christophe Pichaud (christophep@cpixxi.com),

Paris, France. Mardi 14 Juillet 2020


[1] C # est la pierre angulaire de la nouvelle plate-forme .NET de Microsoft. Héritant de nombreuses fonctionnalités de Java et C ++, C # est destiné à devenir le langage de programmation de haut niveau de choix pour la création d’applications et de composants Windows et Web hautes performances – des services Web XML aux objets métier de niveau intermédiaire et au niveau des applications système.

[2] Stanley B. Lippman a fait l’implémentation du premier compilateur C++ chez Bell Laboratories avec Bjarne ’La même année, il travaille chez Microsoft comme architecte dans l’équipe Visual C++.

[3] Non Disclosure Agreement : accord de confidentialité.

[4] https://arstechnica.com/information-technology/2011/06/windows-8-for-software-developers-the-longhorn-dream-reborn/.


Un commentaire sur “Aide-Mémoire C#/NET – les Notes de l’Auteur

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s