Vous êtes sur la page 1sur 26

Framework .

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

Common Language Specification

XML Web services

Web Forms Windows Forms

Donnes et XML
Framework Class Library CLR CLI

Accs aux donnes bas XML

Soumis l ECMA

Commun Language Runtime

Traduit les diffrents langages en code intermdiaire Phase avant la compilation relle Fonctionne grce au CLS Conu partir des CLI (spcification Microsoft)

Common Language Runtime (CLR)


Cur et me de l'architecture. Net. Gre le code excut: Vrifie le type de scurit. fournit le garbage collection, le traitement des erreurs. La scurit d'accs du code pour le code de niveau de confiance moyen. Fournit un systme de type commun(common type system): Les types de valeur (entiers, flottants, dfinie par l'utilisateur, etc). Objets, Interfaces. Permet d'accder aux ressources systme API native, COM Interop, etc Semblable la machine virtuelle Java (JVM) 4

The Common Language Runtime


Le CLR est charg d'excution des services tels que: l'intgration linguistique scurit d'application Mmoire Processus La gestion des threads. versionnage

CLR : Vue densemble

Common Language Infrastructure


Spcification dfinissant l'environnement d'excution de la machine virtuelle bas sur le Common Intermediate Language. Aborde trois aspects: Le systme des types communs (Common Type System). Le Virtual Execution System qui charge et excute les codes compatibles CLI. Les spcifications commune aux langages (Common Language Specifications).
7

Common Type System

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.

Common Language Specifications


Spcifications que les langages supports par .NET doivent suivre. Dfinit lensemble des rgles tout les niveaux (variables, visibilit, mthodes, etc..). En respectant cette norme on peut crer un langage bas sur larchitecture .NET. Liste complte des spcifications (franais) : http://msdn.microsoft.com/frfr/library/12a7a7h3.aspx.
9

Les classes du Framework .NET


System.Web
Services Description Discovery Protocols Caching Configuration UI HtmlControls WebControls Security SessionState

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

Les langages sur .Net


*.vb *.cpp *.cs *.jsl *.js *.cob *.?

VB

C++

C#

J#

JScript Cobol

Soumis et valid comme un standard par Intermediate Microsoft ECMA et ISO Language (MSIL)
11

Common Language Runtime


Compilation

Source code
Compiler

Assembly

Csc.exe or Vbc.exe
C++, C#, Visual Basic or any .NET language DLL or EXE

csc /out:myAssembly.dll /debug+ /target:library parceltracker.cs


12

Microsoft Intermediate Language


Format intermdiaire Indpendant de la machine Converti en langage machine par le CLR Code manag Assemblage (assembly) Manifest Meta donnes Code MSIL Ressources
13

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

methodes, proprits et prototypages)

Code IL

Ressources
16

Assembly : 2 formes dutilisation

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

Global Assembly Cache

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

Global Assembly Cache


GAC = Global Assembly Cache
C:\Windows\assembly

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

other FCL assemblies

obj code obj code obj code obj code

Core FCL assembly

CLR

Underlying OS and HW

20

Rsolution de l'Assemble

Comment le CLR peut trouver des assemblages ?

Pour l'instant, une rponse simple et suffisante:


Notre DLL doit rsider dans le mme rpertoire que notre fichier EXE. Les assembles FCL rside dans le GAC. Le CLR regarde dans le GAC en premier, puis le rpertoire EXE ...
21

Common Language Runtime


Execution Model
Source code
Visual Basic Compiler C# Compiler Assembly IL code C++ Compiler Assembly IL code Unmanaged component

Managed code

Assembly IL code

Common language runtime


JIT compiler
Native code

Operating system services

22

Compilation et Excution

Compilation Source Code Compilateur Natif Code MSIL Metadata

2me compilation
Native Code Execution JIT Compiler

Avant l'installation ou la premire fois chaque mthode est appele


23

Compilation et Excution
Sub Main() Console.WriteLine("Hello World!") End Sub

public static void Main() { System.Console.WriteLine("Hello World!"); }

int main(void) { Console::WriteLine(S"Hello World"); return 0; }

.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

00000000 00000001 00000004 0000000a 00000012 00000013

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

Par analogie larchitecture Java

26