L'architecture .NET (nom choisi pour montrer l'importance
accordée au réseau, amené à participer de plus en
plus au fonctionnement des applications grâce aux services Web),
technologie appelée à ses balbutiements NGWS (Next Generation Web
Services), consiste en une couche Windows, ou plutôt une collection de
DLL librement distribuable et maintenant directement incorporée dans le
noyau des nouvelles versions de Windows.
Cette couche contient un nombre impressionnant (plusieurs
milliers) de classes (tous les langages de .NET doivent être
orientés objet), ainsi que tout un environnement d'exécution (un
run-time, ou couche logicielle si vous préférez) pour les
programmes s'exécutant sous contrôle de l'environnement .NET. On
appelle cela le mode géré ou managé (managed code). La
notion de run-time n'a rien de nouveau : les programmeurs en Visual Basic la
connaissent depuis longtemps. Les programmeurs Java connaissent aussi la notion
de machine virtuelle.
22 Comme précisé dans le cahier de
charge.
54
Néanmoins, même si le run-time .NET est, dans les
faits, une machine virtuelle, Microsoft a toujours soigneusement
évité d'employer ce terme, sans doute trop lié à
Java et à Sun (Standard University Network)... Un run-time fournit des
services aux programmes qui s'exécutent sous son contrôle. Dans le
cas de l'architecture .NET, ces services font partie de ce que l'on appelle le
CLR (Common Language Run-time) et assurent :
· le chargement (load) et l'exécution
contrôlée des programmes ;
· l'isolation des programmes les uns par rapport aux autres
;
· les vérifications de type lors des appels de
fonctions (avec refus de transtypages hasardeux) ;
· la conversion de code intermédiaire en code
natif lors de l'exécution des programmes, opération
appelée JIT (Just In Time Compiler) ;
· l'accès aux métadonnées
(informations sur le code qui font partie du code même) ;
· les vérifications lors des accès
à la mémoire (pas d'accès possible en dehors de la zone
allouée au programme) ainsi qu'aux tableaux (pas d'accès en
dehors de ses bornes) ;
· la gestion de la mémoire, avec ramasse-miettes
automatique ;
· la gestion des exceptions ;
· la sécurité ;
· l'adaptation automatique des programmes aux
caractéristiques nationales (langue, représentation des nombres
et des symboles, etc.) ;
· la compatibilité avec les DLL et les modules
COM actuels qui s'exécutent en code natif non contrôlé par
.NET.
Les classes .NET peuvent être utilisées par tous
les langages prenant en charge l'architecture .NET. Ces classes sont
regroupées dans des espaces de noms (namespaces) qui se
présentent en quelque sorte comme des répertoires de classes.
Quelques espaces de noms et quelques classes (quelques-uns seulement, parmi des
milliers) :
55
Tableau 3.1 : Les classes de l'architecture
.NET