Professional Documents
Culture Documents
NET
Syrine Khiari-Sami Ayari ESPRIT
2011-2012
Le cur du Framework
VB C++ C# J# Visual Studio .NET Soumis lECMA Spcification ouvertes Bas XML, SOAP, GXA
Donnes et XML
Framework Class Library CLR CLI
Soumis l ECMA
Traduit les diffrents langages en code intermdiaire Phase avant la compilation relle Fonctionne grce au CLS Conu partir des CLI (spcification Microsoft)
Indique les types utiliss par les langages bass sur le Framework .NET. Concerne galement lensemble des oprateurs sur les types. Dfinit galement la hirarchie des classes/interfaces pour les objets de base du framework.
System.Windows.Forms
Design ComponentModel
System.Drawing
Drawing2D Imaging Printing Text
System.Data
ADO Design SQL SQLTypes XSLT XPath
System.Xml
Serialization
System
Collections Configuration Diagnostics Globalization IO Net Reflection Resources Security ServiceProcess Text Threading Runtime InteropServices Remoting Serialization
10
VB
C++
C#
J#
JScript Cobol
Soumis et valid comme un standard par Intermediate Microsoft ECMA et ISO Language (MSIL)
11
Source code
Compiler
Assembly
Csc.exe or Vbc.exe
C++, C#, Visual Basic or any .NET language DLL or EXE
Assembly : Dfinition
1 assembly = 1 ou plusieurs classes compiles. .EXE reprsente un ensemble de classes + programme principal. .DLL reprsente un ensemble de classes.
code.vb code.vb code.cs
Development Tools
.EXE / .DLL
assembly
14
Assembly : contenu
Un manifest : metadonnes de lassembly. Les mtadonnes dcrivant les types utiliss. Le code IL/MSIL. Les ressources utilises (images,). La liste des fichiers qui la compose. myAssembly.dll
Manifest
Metadata MSIL Managed code Resources
15
Assembly
File Type: EXECUTABLE IMAGE
Dll/Exe
PE format
Manifest
Metadata
FILE HEADER VALUES 14C machine (x86) 3 number of sections 3E78E307 time date stamp Wed Mar 19 22:37:11 2003 0 file pointer to symbol table 0 de lassembly Nomnumber of symbols E0 size of optional header 10E characteristics Version Executable Line Culture numbers stripped Symbols stripped Description des types exposs (classes, 32 bit word Strong Name machine .method public hidebysig specialname rtspecialname Assemblies rfrencs instance void .ctor() cil managed { Fichiers de lassembly .maxstack 2 ldarg.0 call class [mscorlib]System.IO.TextWriter [mscorlib]System.Console::get_Out() call instance void Dumper.Dumper::.ctor(class [mscorlib]System.IO.TextWriter) ret } // end of method Dumper::.ctor
Code IL
Ressources
16
On considre 2 types dassembly : Prive : Ddie lutilisation dun programme particulier. Se situe gnralement dans larborescence du programme qui lutilise. Partage : Utilise par un ensemble de programme diffrents. Se situe gnralement dans le GAC (Global Assemblies Cache).
17
Permet de partager un assembly au niveau dune machine Un assembly doit avoir une signature unique (Strong Name) Windows Installer/Gacutil.exe/Windows Explorer Une vrification dintgrit est effectue lors de lajout dun assembly dans le GAC
18
Observations :
Lexplorateur donne une vue plat de GAC. l'interprteur de commandes rendements reprsentation relle. GAC peut contenir diffrentes versions de la mme assemble. inviolables par des signatures numriques ...
19
CLR lexcution
CLR doit tre en mesure de localiser tous les assemblages:
.EXE .DLL .DLL .DLL
OS Process
JIT Compiler
CLR
Underlying OS and HW
20
Rsolution de l'Assemble
Managed code
Assembly IL code
22
Compilation et Excution
2me compilation
Native Code Execution JIT Compiler
Compilation et Excution
Sub Main() Console.WriteLine("Hello World!") End Sub
.method public hidebysig static void Main() cil managed { .entrypoint // Code size 11 (0xb) .maxstack 8 IL_0000: ldstr "Hello World!" IL_0005: call void [mscorlib]System.Console::WriteLine(string) IL_000a: ret } // end of method Hello::Main
Other language
CLR
push mov mov call pop ret ebp ebp,esp ecx,dword ptr ds:[01BF0064h] dword ptr ds:[02E521A0h] ebp
24
JITter
La gnration de code lors de l'installation:
compiler une assemble entire en code binaire spcifique la CPU.
JIT:
Le JITter par dfaut est appel au moment de l'excution lorsque chaque fois qu'une mthode est invoque pour la premire fois.
EconoJIT:
Spcialement conu pour les systmes qui ont des ressources limites. EconoJIT peut interrompre la compilation ds que le systme commence manquer de mmoire.
25
26