Click here to load reader

Plate-forme .NET

Embed Size (px)

DESCRIPTION

Plate-forme .NET. Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz / email: [email protected]. C’est quoi Microsoft .NET. Essentiellement un environnement de développement et d'exécution Reprend les concepts de la machine virtuelle de Java, - PowerPoint PPT Presentation

Citation preview

Plate-forme .NET

Pr ZEGOUR DJAMEL EDDINEEcole Suprieure dInformatique (ESI)http://zegour.esi.dz/ email: [email protected] Plate-forme .NETPlate-forme .NETCest quoi Microsoft .NET Essentiellement un environnement de dveloppement et d'excution Reprend les concepts de la machine virtuelle de Java, Utilise le CLR (Common Language Runtime). Le principeLa compilation du code source gnre un objet intermdiaire dans le langage MSIL (Microsoft Intermediate Language)Indpendant de toute architecture de processeur et de tout systme d'exploitationLa CLR excute du bytecode JIT compilCet objet intermdiaire, est ensuite compil la vole, au sein du CLR, au moyen d'un compilateur JIT (Just In Time) qui le transforme en code machine li au processeur sur lequel il rside. 2Plate-forme .NETLe code MSIL est commun tous les langages .NetPour Java, le code intermdiaire (byte-code) est li un seul langage source, Le code intermdiaire (IL) de la plate-forme .NET est commun un ensemble de langages (C#, VB.Net, Jscript.Net, J#.Net, Managed C++, etc.). C#, VB.Net, Jscript.Net, J#.Net, Managed C++, etc.CompilateurMSILJIT1JIT2JIT3CodeM1Code M2Code M3. . .. . .3Plate-forme .NETMta-donnesLes compilateurs de la plate-forme .NET incorporent dans l'excutable des mta donnes.

Ces mta donnes dcrivent l'excutable .

Il est ainsi possible dynamiquement de connatre les diffrents types dclars par un excutable, les mthodes qu'il implmente, etc.

La lecture des mta donnes s'appelle rflection : la plate-forme .NET fournit de nombreuses classes permettant de manipuler les excutables. InteroprabilitAssure grce lexistence dun CLS (Common Language Specification) Le CLS dfinit un ensemble de rgles que tout compilateur de la plate-forme doit respecter.Le CLS utilise un systme de types unifi permettant d'avoir le mme systme de type entre les diffrents langages (CTS)4Plate-forme .NETAssemblage (Assembly)Cest la brique de base d'une application .NETIl peut s'agir d'un excutable (.exe) ou d'une bibliothque (.dll) Contient toutes les mta donnes sur les modules (excutables), types (classes) et les mthodes (une liste d'instructions en langage intermdiaire et des mta donnes )Les mta donnes sont utilises par l'environnement d'excution (CLR). Ex : La dfinition des classes peut tre obtenue directement partir du composant, en examinant les mta donnes Hirarchie : Assemblage Modules Types Mthodes5Plate-forme .NETRcupration de mta donnes des excutablesFichier calculatrice.csusing System;class MaCalculatrice { public int Add(int a, int b) { return a+b; } public int Sub(int a, int b) { return a-b; }}

Fichier application.cs public class MonApplication { static void Main (string[] args) { MaCalculatrice calculette = new MaCalculatrice (); int i = 10, j = 20; Console.WriteLine ("{i} + {j} =", i, j, calculette.Add (i, j)); }}La compilation donne (deux tapes) : gnration bibliothque :calculatrice.dllgnration de l'excutable : application.exe

Type MaCalculatrice a cette mthode : Int32 Add(Int32, Int32) System.Type GetType() System.String ToString() Boolean Equals(System.Object) Int32 GetHashCode() Type MonApplication a cette mthode : System.Type GetType() System.String ToString() Boolean Equals(System.Object)Int32 GetHashCode() Programme C#6Plate-forme .NETProgramme C# qui rcupre les mta donnesusing System;using System.IO;using System.Reflection;public class Meta {public static int Main () { // lire l'assembly Assembly a = Assembly.LoadFrom ("application.exe"); // lire tous les modules de l'assembly Module[] modules = a.GetModules(); // inspecter tous le premier module Module module = modules[0]; // lire tous les types du premier module Type[] types = module.GetTypes(); // inspecter tous les types foreach (Type type in types) { Console.WriteLine("Type {0} a cette mthode : ", type.Name); // inspecter toutes les mthodes du type MethodInfo[] mInfo = type.GetMethods(); foreach (MethodInfo mi in mInfo) { Console.WriteLine (" {0}", mi); } } return 0; }}7Plate-forme .NETL'outil ILDASM (Intermediate Language Disassembler) permet d'afficher de manire hirarchique les informations sur une application (utilise essentiellement la rflexion)

8