Principe de fonctionnement du Common Language Runtime
Dans les applications Windows traditionnelles, le système prend directement en charge l’exécution du code. En effet celui ci est généré par le compilateur associé au langage de programmation utilisé pour la conception de l’application. Le résultat de cette compilation correspond à un fichier binaire contenant le code spécifique pour le microprocesseur et le système d’exploitation avec lesquels l’application doit fonctionner. Aucune compatibilité avec un autre type de microprocesseur ou système d’exploitation n’est possible. Pour s’en convaincre, il suffit de tenter l’exécution d’une application prévue pour Windows sur un système Linux pour vérifier cette incompatibilité. Si l’on tente l’exécution sur une station de travail SUN, qui utilise un type de microprocesseur radicalement différent, le résultat est identique. La solution pour s’affranchir de ces problèmes consiste à générer à la compilation, non pas un code spécifique, mais un code générique, indépendant de toute plateforme logicielle ou matérielle. Ce code est, au moment de l’exécution, confié à une machine virtuelle qui en assure l’exécution. Ce code s’appelle Microsoft Intermediate Language (MSIL). Lors de l’exécution de l’application, ce code est pris en charge par la machine virtuelle qui en assure la traduction en instructions spécifiques pour le microprocesseur de la machine. Cette traduction n’est pas effectuée, en bloc dès le début de l’application, mais uniquement au fur et à mesure des besoins. En effet, pourquoi perdre du temps à traduire du code MSIL, s’il n’est jamais utilisé par la suite. C’est pour cette raison que le compilateur utilisé pour cette traduction s’appelle compilateur Just In Time (JIT). Les avantages de cette solution sont évidents car pour exécuter une même application sur plusieurs plates formes matérielles et ou logicielles, il suffit d’obtenir la machine virtuelle capable d’effectuer la traduction. Cette machine virtuelle est disponible pour tous les systèmes Microsoft. Le projet Mono propose une version de la machine virtuelle pour les plates formes suivantes :
● Linux
● Mac OS X
● Sun Solaris
● BSD OpenBSD, FreeBSD, NetBSD
Les services du Common Language Runtime
La machine virtuelle ne se contente pas d’effectuer la traduction du code. Le code MSIL est aussi appelé code managé, ce qui sous-entend qu’un certain nombre d’opérations supplémentaires seront réalisées sur le code au moment de l’exécution. La figure ci après reprend l’ensemble des fonctionnalités disponibles dans le Common Language Runtime.
Class Loader
Il gère le chargement en mémoire des instances de classes.
IL To Native Compilers
Il convertit le code intermédiaire (MSIL) en code natif.
Code Manager
Il gère l’exécution du code.
Garbage Collector
Il assure la gestion de la mémoire en surveillant les instances de classes qui ne sont plus accessibles.
Security Engine
Il permet la vérification de l’identité de la personne demandant l’exécution du code et accepte ou non cette exécution, en fonction des autorisations accordées.
Debug Engine
Il permet le débogage de l’application, en prenant en charge par exemple l’exécution en pas à pas du code.
Type Checker
Il surveille l’utilisation de variables non initialisées et les conversions entre des variables de type différent.
Exception Manager
Il fournit la gestion structurée des exceptions en liaison avec Windows Structured Exception Handling (SEH). Cette technique permet une gestion individuelle de chaque exception plutôt qu’une gestion globale.
Thread Support
Il propose un ensemble de classes permettant la réalisation d’applications multithread.
COM Marshaler
Il permet de traduire des appels vers des composants COM, assurant par exemple la conversion des types de données.
Base Class Library Support
Il fournit l’accès aux services disponibles sur le système d’exploitation hôte.
La Base Class Library
Le Framework .NET met à la disposition des développeurs un ensemble d’outils lui permettant d’obtenir une solution rapide à une majorité de problèmes rencontrés lors de la réalisation d’une application. Ces outils sont disponibles sous forme de classes. À l’inverse des bibliothèques de code des langages de la génération précédente, qui n’étaient qu’une liste interminable de procédures ou fonctions, la bibliothèque de classes est organisée sous forme d’une structure hiérarchisée. L’élément essentiel de cette hiérarchisation est l’espace de nom (Namespace). Il permet le regroupement logique de classes ayant des points communs. Par exemple, on retrouve dans le namespace System. Data toutes les classes utilisables pour accéder à une base de données. Cette bibliothèque de classes est bien sûr indépendante d’un quelconque langage de programmation. Elle permet donc le mélange de différents langages au cours du développement d’une application. Elle est également parfaitement intégrée à Visual Studio, ce qui nous procure un confort d’utilisation appréciable avec des outils comme Intelissence. Comme cette librairie est orientée objet, elle est facilement extensible par le biais de relations d’héritage. La bibliothèque contient une quantité impressionnante d’espaces de nom et de classe, tant et si bien que, au cours de vos développements avec Visual Basic, il y a de fortes chances pour que vous n’utilisiez jamais certains d’entre eux. Les espaces de noms les plus utilisés sont les suivants : System C’est l’espace de nom racine pour les types de données dans le Framework .NET. Il contient notamment la définition de la classe Object, qui est l’ancêtre de tous les types de données du Framework .NET. System.Windows Il contient l’ensemble des éléments permettant la création d’interfaces utilisateurs Windows.
System.Web Il contient toutes les ressources nécessaires pour la création d’applications Web, avec par exemple, les classes de la technologie ASP.NET ou les classes utilisables pour la création de services Web XML.
System.data
Il contient un ensemble de classes spécialisées dans l’accès aux bases de données, avec le support de ADO.NET.
System.Xml
Le langage Xml est devenu omniprésent et cet espace de nom contient les classes assurant la manipulation de documents Xml.
Les versions et évolutions de la plateforme .NET
La première version (1.0) de la plateforme .NET sort en janvier 2002 avec Visual Studio 2002. Cette version est rapidement remplacée par la version 1.1 qui corrige quelques petits problèmes de jeunesse de la version précédente et ajoute des technologies qui n’étaient auparavant disponibles qu’en tant qu’installations indépendantes et sont désormais incluses. Les apports de cette version sont principalement :
● Les Contrôles mobiles ASP.NET (anciennement Microsoft Mobile Internet Toolkit) qui étendent le Framework .NET par la prise en charge des périphériques mobiles (sans fil) tels que téléphones portables et assistants numériques personnels.
● Le fournisseur de données .NET Framework pour ODBC et le fournisseur de données pour Oracle qui auparavant n’étaient disponibles que par téléchargement, sont désormais livrés avec le .NET Framework.
● La prise en charge de la nouvelle mise à jour du protocole Internet couramment appelée IP version 6 ou plus simplement IPv6. Ce protocole est conçu pour augmenter sensiblement l’espace d’adressage qui est utilisé pour identifier les points d’entrée de communication d’Internet.
Elle est disponible avec la version 2003 de Visual Studio en avril 2003. Il faut attendre novembre 2005 pour voir arriver la version 2.0 associée à la sortie de Visual Studio 2005. Cette version apporte de nombreuses améliorations :
● La prise en charge de la nouvelle génération d’ordinateurs 64 bits permettant la création d’applications plus performantes.
● Une évolution majeure dans l’accès aux bases de données avec ADO.NET 2.0 améliorant l’utilisation de XML.
● Le développement d’applications Web est également de plus en plus facile avec la nouvelle version de ASP.NET proposant une multitude de nouveaux contrôles.
● L’utilisation de la classe Console est optimisée avec l’ajout de nouvelles propriétés et méthodes (gestion des couleurs, effacement, position du curseur…).
● Le .NET Framework 2.0 réintroduit la fonctionnalité Modifier & Continuer permettant à l’utilisateur ui débogue une application dans Visual Studio de modifier le code source en mode arrêt. Une fois les modifications du code source appliquées, l’utilisateur peut reprendre l’exécution du code et observer l’effet.
● L’apparition de la notion de générique qui permet aux classes, structures, interfaces, méthodes et délégués d’être déclarés et définis avec des paramètres de type non spécifié ou générique au lieu de types spécifiques. Les types réels sont spécifiés ultérieurement lors de l’utilisation.
La version 3.0 arrive en novembre 2006 et apporte de nouvelles technologies tout en restant à la base une version 2.0. Ces technologies sont disponibles sous forme de téléchargements qui viennent s’intégrer au framework 2.0. Voici un bref aperçu de ces nouveautés :
●Windows Presentation Foundation (WPF) représente le nouveau système d’interfaces graphiques. Il se base sur un moteur de rendu vectoriel et permet une séparation plus claire entre la définition de l’interface graphique d’une application et son code. Il utilise pour cela le langage XAML (eXtensible Application Markup Language). Les tâches peuvent ainsi être plus facilement réparties entre designers et développeurs.
● Windows Communication Foundation (WCF) constitue la nouvelle base de développement d’applications distribuées. Il facilite la communication entre applications en ajoutant une couche d’abstraction uniformisant les techniques de communication entre applications (Services Web, .NET Remoting, Microsoft Transaction Server, et Microsoft Message Queuing,…).
●Windows Workflow Foundation (WF) est composé d’un modèle de programmation, d’un moteur d’exécution et d’outils pour intégrer des workflows dans une application. Un workflow peut être défini comme un ensemble d’actions ou étapes s’exécutant dans un ordre prédéfini. Ces actions peuvent s’enchaîner en fonction de conditions, d’interactions avec des processus informatiques ou en fonction d’interactions humaines.
●Windows Cardspace fournit une nouvelle technique aux utilisateurs pour s’identifier dans une application. Elle a la même vocation que Microsoft Passport mais n’est pas spécifique aux applications Microsoft (Hotmail, MSDN…).