Votre navigateur n'est pas à jour !

Merci de mettre à jour votre navigateur pour utiliser mon blog. Mettre à jour mon navigateur maintenant

×

Editorial - Retour d'expérience sur des projets .Net

Date de publication 22 mars 2016
Après avoir travaillé plusieurs années dans la sphère web j'ai eu l'opportunité de me lancer dans un environnement totalement différent : .Net

Je sens les remarques venir mais j'ai fait ce choix de manière volontaire car je voulais un peu mieux connaitre les technologies Microsoft. D'un oeil extérieur les terminologies sont assez barbares et variées. Je vais essayer d'expliquer de manière succincte les différentes technologies de Microsoft et quel est leur domaine d'application. J'apporterai mon avis sur cette expérience.

Le Framework .Net est la base pour faire du développement Microsoft il contient toutes les librairies nécessaires pour commencer à réaliser une application. Il en existe plusieurs versions et chacune apporte son lot de nouveautés : à l'heure de l'écriture de cet article la dernière version est la 4.6.

Il existe plusieurs langages disponibles pour attaquer ces librairies, même si le plus répandu est le C# : Visual Basic, Visual C#, Visual C++ ou encore Visual J#. Le mot "Visual" devant la technologie indique uniquement que ce langage a été implémenté pour Microsoft.

La CLR (Common Language Runtime) est la machine virtuelle de Microsoft (comme la JVM de Java) permettant l'exécution du code .Net. Ce dernier est converti par CIL (Common Intermediate Language) appelé aussi Microsoft Intermediate Language (MSIL) afin de générer un bytecode. L'infrastructure décrite à l'instant est appelé CLI (Common Language Infrastructure).
Un code managé géré par la CLR, est un programme écrit avec une technologie supportée par Microsoft. Il fait opposition au code non managé directement géré par le processeur.


Infrastructure Microsoft sur le dotnet

Source : https://en.wikipedia.org/wiki/Common_Language_Infrastructure#/media/File:Overview_of_the_Common_Language_Infrastructure.svg

J'ai commencé par du développement Windows Phone sur les versions 7 et 8 qui utilise un "framework custom", c'est à dire un mélange entre du Silverlight 3 et 4.
Ce choix est étrange car Silverlight n'est plus supporté officiellement par Microsoft. Avec l'avènement de la version 10 de Windows le développement se fait dorénavant via UWP (Universal Windows Plateform) afin d'avoir un socle de base pour fournir une application bureau, tablette ou mobile avec un code identique.
Derrière Silverlight se cache un plugin du navigateur permettant d'exécuter du .Net dans un site web construit avec un autre langage (ou une technologie Web Microsoft mais ce n'est pas obligatoire). Il se veut le concurrent de Flash. Vous connaissez le sort qu'à subit Flash, il n'est pas étonnant que Silverlight suit son prédécesseur. En effet le Javascript reste un langage indétronnable (malgré des reproches que l'on pourrait lui faire mais le débat n'est pas là) car en plus il ne nécessite pas d'installation particulière sur le poste client contrairement à Silverlight. Il est en plus possible d'installer Silverlight uniquement sur des postes Windows car à cette époque Microsoft voulait poussait un maximum son OS au détriment des utilisateurs de Linux. Ce dernier peut recevoir une implémentation via Moonlight (équipe Mono), dont les dev ont été arrêtés en 2011...
Silverlight (et WPF que nous verrons ensuite) se base sur du XAML ( eXtensible Application Markup Language), un langage déclaratif permettant de s'affranchir de l'écriture de code HTML. Derrière cette notion de XAML se cache MVVM qui est l'équivalent MVC. Où ModelView est le contrôleur c'est à dire l'implémentation du business, View qui est ce fameux XAML et Model la classe .NET structurant les données. La communication entre la View et le Model est faite via une notion de Binding qui est assez performante, on peut mettre à jour les données de façon bidirectionnelle avec TwoWayBinding. Cette communication bi directionnelle entre les couches est apparue aussi dans le web récemment avec Angular et son dirty checking ou encore Ember avec Data Down Action Up


Architecture MVVM

Source : http://www.docdoku.com/blog/2015/02/17/architecturer-ses-applications-js-pattern-mvvm/

Dans une autre mission, j'ai réalisé des pages Web, donc je me suis tourné vers ASP.net. C'est une évolution majeure de Active Server Pages qui fut inclus dans le Framework .Net.
Il utilise un système de balise pour afficher des composants présent dans un namespace.
<form runat="server"> 
 <asp:Label id="labelMessage" runat="server">
 </asp:Label> 
</form>

Il est important de mettre runat="server" à toutes vos balises ASP.net afin que le moteur sache les interpréter pour les convertir en HTML. On trouve son équivalent en Java : JSP (et maintenant JSF).
A l'intérieur de votre application il est courant d'utiliser des comportements identiques, c'est là que le UserControl est intéressant : il mutualise votre code. Il est l'équivalent des WebComponents en HTML5.
A mon sens ASP.net est veillissant car il ne correspond plus au besoin du web de nos jours. Lorsque vous réalisez de l'AJAX avec ScriptManager vous pouvez utiliser simplement ce concept avec un UpdatePanel (comme l'explique ce tutoriel). Il embarque automatiquement du code JS pour faire des requêtes asynchrones. Mais cet effet boite noire ne me plait pas, allez dans le code source de la page vous verrez si vous comprenez le JS infecté. De plus, ce JS est mis un peu n'importe comment sans que l'on puisse avoir la main dessus.

Par la suite j'ai dû faire autre chose que du web et pour cela vous avez WPF. Windows Presentation Foundation est une couche graphique permettant de faire des applications riches encore avec du XAML. C'est le successeur de WinForm (que je n'ai pas utilisé).
WPF est encore supporté par Microsoft mais comme vous le lirez dans la conclusion, c'est une technologie vieillissante et qui ne répond pas au besoin d'application du moment. Cela se remarque aussi dans l'évolution du langage, certaines fonctionnalités sont manquantes dans le XAML et il faut passer par le code behind (classe derrière le Xaml pour saisir du code autrement qu'en XML afin de séparer proprement le code HTML --via XAML-- et la logique de présentation) pour faire ce que l'on veut.

Infrastructure Microsoft sur le dotnet

Source : http://csharpcorner.mindcrackerinc.netdna-cdn.com/UploadFile/abhikumarvatsa/introduction-of-code-behind-xaml-silverlight/Images/XSil2.gif

Par exemple mettre des noms de colonnes traductibles dans un tableau est impossible en XAML... la base pourtant ! Même en ayant connaissances de ces anomalies de conception aucun correctif n'est proposé, c'est aussi pour cette raison que des librairies comme Telerik sont apparu pour étendre les fonctionnalités de WPF.

Et pour communiquer Microsoft a inventé quoi ? Et ben c'est Windows Communication Foundation qui est la technologie permettant de réaliser des WebServices.

Comme Microsoft est dédié à une plateforme Windows, une implémentation est possible sous linux grâce à Mono. Cependant depuis quelques mois la politique de Microsoft à changé; en effet le nouveau PDG Satya Nadella pousse l'open source et linux. Oui vous avez bien entendu, Microsoft ne veut plus fermer son développement et participe au monde web. La preuve par l'exemple : publication d'une partie de la CoreCLR (https://github.com/dotnet/coreclr) sur Github, la présentation de Angular lors des TechDays (pour rappel Angular est fournit par Google un des concurrents de Microsoft), l'intégration de Git dans Visual Studio (et pas leur contrôle de source TFS), la création d'un EDI VisualCode (https://code.visualstudio.com/) compatible Linux et Mac ...

Le monde du développement a changé et Microsoft essaye de rattraper son retard en participant activement au paradigme web de nos jours.
blog comments powered by Disqus