TUTORIEL TECHNOS .NET 
Les concepts essentiels du framework .Net
Ce qu'il faut savoir de la plate-forme de développement de Microsoft avant de s'y plonger. (12/07/2004)

1) CIL, CLI & CLR
Derrière ces trois acronymes se cachent les trois mamelles de la programmation .Net : la Common Language Infrastructure, le Common Indermediate Language et le Common Library Runtime.

L'un des grands avantages du framework .Net repose sur le nombre de langages de programmation que reconnaît la plate-forme. Les plus connus sont bien sûr ceux en provenance directe de chez Microsoft, comme C#, VB.NET, J# ou encore C++.NET. A ceux-ci s'ajoutent un large éventail de langages issus des travaux de Microsoft ou d'entités tierces, comme COBOL.NET et Fortran.NET (ce qui fait de .NET la plateforme idéal pour moderniser ses outils, les passer à l'ère d'Internet et d'XML, sans pour autant devoir changer le langage utilisé depuis 30 ans), Delphi.NET ou encore Perl, Python...

Tout ceci ne se fait pas de manière automatique : pour programmer .Net avec ces langages, il faut utiliser des outils adaptés à .Net, et non ceux utilisés normalement.

Ces outils permettent de compiler le code source dans un langage intermédiaire, le CIL, qui à terme devrait être utilisable sur toutes les plate-formes .Net (donc l'implémentation libre Mono, par exemple, ou Rotor), mais qui sur une plate-forme Windows est appelé MSIL, pour Microsoft Intermediate Language. Ce code CIL est le même pour tous les langages .Net.

Tout comme Java avec son Byte Code, le code compilé en CIL doit ensuite passer par un "runtime" pour fonctionner sur la plate-forme finale. Ce runtime, appelé CLR sous .Net, charge le CIL/MSIL et le convertit en code machine adapté au support.

Les développeurs cherchant la performance seront donc tentés d'apprendre à lire et modifier du code CIL...

2) JITer
JITer signifie Just In Time Enhanced Runtime, et fonctionne main dans la main avec le CLR : c'est lui qui se charge concrètement de compiler le code CIL en code machine, puis de l'exécuter.

Le "Just In Time" a son importance : il ne s'agit pas ici de recompiler la totalité du programme en langage machine, ni d'en interpreter chaque ligne une à une. Pour obtenir de meilleures performances, c'est une troisième solution qui a été choisie : compiler le corps d'une méthode juste avant son appel. La compilation se fait donc juste à temps pour que l'exécution de la méthode en langage machine puisse avoir lieu. Le JITer compile donc le code en fonction des besoins.

3) Code "managé"
Il s'agit du résultat de la compilation en langage machine. Le code managé est compilé spécifiquement pour l'architecture .NET, et via la CLR offre des services tels que la gestion de la sécurité ou de la mémoire, et l'intégration multilangage. Les applications managées prenant en compte les caractéristiques du CLR peuvent fonctionner plus rapidement que les applications non managées et sont plus sûres.

Par opposition, le code non managé ne peut faire usage des possibilités de .Net. En code managé, le programme doit passer par .Net pour accéder aux ressources système, ce qui lui permet de contrôler son exécution et de protéger les autres processus en cours. Le système gagne donc en stabilité et en sécurité.

Exemple d'avantage du code managé : l'absence de registre au profit d'une pile, ce qui élimine les correspondances entre code et processeur et simplifie l'optimisation du code machine généré à la volée.

  Forum

Réagissez dans les forums de JDN Développeurs

4) Assemblage et module
Quasiment tous les programmeurs Windows ont dû subir à un moment où un autre le fameux "DLL Hell", l'enfer des DLL, ces bibliothèques dynamiques, dont les versions ne correspondent jamais vraiment à ce que l'on attend.

La solution proposée par .Net, et donc Longhorn dans quelques années, et les assemblages. Par souci de compatibilité ils se trouvent dans des fichiers .exe ou .dll, mais leur composition interne diffère grandement des exécutables classiques. L'innovation tient dans le fait que plusieurs versions d'un même assemblage peuvent cohabiter sur une machine, à l'application de choisir celle qui lui sied le mieux, voire en utiliser plusieurs si besoin est.

L'assemblage est donc le nom donné aux exécutables et DLL de .NET...

Le module n'est pour sa part pas directement exécutable : c'est la plus petite unité pouvant être produite par .NET, et se rapproche plutôt des DLL.

 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages