Framework .

NET
Syrine Khiari-Sami Ayari ESPRIT
2011-2012

1

Le cœur du Framework
VB C++ C# J# … Visual Studio .NET Soumis à l’ECMA Spécification ouvertes Basé XML, SOAP, GXA

Common Language Specification

XML Web services

Web Forms Windows Forms

Données et XML
Framework Class Library CLR CLI

Accès aux données basé XML

Soumis à l’ ECMA

Commun Language Runtime Traduit les différents langages en code intermédiaire Phase avant la compilation réelle Fonctionne grâce au CLS Conçu à partir des CLI (spécification Microsoft) 3 .

Gère le code exécuté: Vérifie le type de sécurité. etc Semblable à la machine virtuelle Java (JVM) 4 . Interfaces. Permet d'accéder aux ressources système API native.Common Language Runtime (CLR) Cœur et âme de l'architecture. Net. COM Interop. définie par l'utilisateur. Objets. le traitement des erreurs. La sécurité d'accès du code pour le code de niveau de confiance moyen. fournit le garbage collection. Fournit un système de type commun(common type system): Les types de valeur (entiers. flottants. etc).

The Common Language Runtime Le CLR est chargé d'exécution des services tels que: l'intégration linguistique sécurité d'application Mémoire Processus La gestion des threads. versionnage 5 .

CLR : Vue d’ensemble 6 .

Le Virtual Execution System qui charge et exécute les codes compatibles CLI. 7 .Common Language Infrastructure Spécification définissant l'environnement d'exécution de la machine virtuelle basé sur le Common Intermediate Language. Aborde trois aspects: Le système des types communs (Common Type System). Les spécifications commune aux langages (Common Language Specifications).

Concerne également l’ensemble des opérateurs sur les types. 8 . Définit également la hiérarchie des classes/interfaces pour les objets de base du framework.NET.Common Type System Indique les types utilisés par les langages basés sur le Framework .

etc..). 9 . méthodes.aspx.NET doivent suivre. Liste complète des spécifications (français) : http://msdn.Common Language Specifications Spécifications que les langages supportés par . Définit l’ensemble des règles à tout les niveaux (variables.com/frfr/library/12a7a7h3. En respectant cette norme on peut créer un langage basé sur l’architecture .microsoft.NET. visibilité.

NET System.Windows.Drawing Drawing2D Imaging Printing Text System.Les classes du Framework .Xml Serialization System Collections Configuration Diagnostics Globalization IO Net Reflection Resources Security ServiceProcess Text Threading Runtime InteropServices Remoting Serialization 10 .Data ADO Design SQL SQLTypes XSLT XPath System.Web Services Description Discovery Protocols Caching Configuration UI HtmlControls WebControls Security SessionState System.Forms Design ComponentModel System.

Les langages sur .js *.vb *.cs *.jsl *.cob *.Net *.cpp *.? VB C++ C# J# JScript Cobol … Soumis et validé comme un standard par Intermediate Microsoft ECMA et ISO Language (MSIL) 11 .

NET language DLL or EXE csc /out:myAssembly.dll /debug+ /target:library parceltracker.Common Language Runtime Compilation Source code Compiler Assembly Csc.cs 12 .exe or Vbc. Visual Basic or any .exe C++. C#.

Microsoft Intermediate Language Format intermédiaire Indépendant de la machine Converti en langage machine par le CLR Code managé Assemblage (assembly) Manifest Meta données Code MSIL Ressources 13 .

.DLL assembly 14 .vb code.EXE représente un ensemble de classes + programme principal. code.cs Development Tools .Assembly : Définition 1 assembly = 1 ou plusieurs classes compilées.vb code. .DLL représente un ensemble de classes.EXE / .

dll Manifest Metadata MSIL Managed code Resources 15 . Les ressources utilisées (images. Le code IL/MSIL. myAssembly. Les métadonnées décrivant les types utilisés.…). La liste des fichiers qui la compose.Assembly : contenu Un manifest : metadonnées de l’assembly.

IO.Dumper::.maxstack 2 ldarg.ctor(class [mscorlib]System.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 l’assembly •Nomnumber of symbols E0 size of optional header 10E characteristics •Version Executable Line •Culture numbers stripped Symbols stripped Description des types exposés (classes.method public hidebysig specialname rtspecialname •Assemblies référencés instance void . 32 bit word •Strong Name machine .TextWriter) ret } // end of method Dumper::.0 call class [mscorlib]System.Console::get_Out() call instance void Dumper. propriétés et prototypages) Code IL Ressources 16 .TextWriter [mscorlib]System.IO.ctor methodes.ctor() cil managed { •Fichiers de l’assembly .

Assembly : 2 formes d’utilisation On considère 2 types d’assembly : Privée : Dédiée à l’utilisation d’un programme particulier. Se situe généralement dans l’arborescence du programme qui l’utilise. 17 . Partagée : Utilisée par un ensemble de programme différents. Se situe généralement dans le GAC (Global Assemblies Cache).

Global Assembly Cache Permet de partager un assembly au niveau d’une machine Un assembly doit avoir une signature unique (Strong Name) Windows Installer/Gacutil.exe/Windows Explorer Une vérification d’intégrité est effectuée lors de l’ajout d’un assembly dans le GAC 18 .

. inviolables par des signatures numériques . 19 ..Global Assembly Cache GAC = Global Assembly Cache C:\Windows\assembly Observations : L’explorateur donne une vue à plat de GAC. GAC peut contenir différentes versions de la même assemblée. l'interpréteur de commandes rendements représentation réelle.

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 .EXE .CLR l’exécution CLR doit être en mesure de localiser tous les assemblages: .DLL .DLL .

. Le CLR regarde dans le GAC en premier. Les assemblées FCL réside dans le GAC. 21 ..Résolution de l'Assemblée Comment le CLR peut trouver des assemblages ? Pour l'instant. une réponse simple et suffisante: Notre DLL doit résider dans le même répertoire que notre fichier EXE. puis le répertoire EXE .

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 Exécution Compilation Source Code Compilateur Natif Code MSIL Metadata 2ème compilation Native Code Execution JIT Compiler Avant l'installation ou la première fois chaque méthode est appelée 23 .

entrypoint // Code size 11 (0xb) . } int main(void) { Console::WriteLine(S"Hello World").method public hidebysig static void Main() cil managed { .Console.Compilation et Exécution Sub Main() Console.Console::WriteLine(string) IL_000a: ret } // end of method Hello::Main Other language … CLR push mov mov call pop ret ebp ebp.maxstack 8 IL_0000: ldstr "Hello World!" IL_0005: call void [mscorlib]System.dword ptr ds:[01BF0064h] dword ptr ds:[02E521A0h] ebp 00000000 00000001 00000004 0000000a 00000012 00000013 24 . } .WriteLine("Hello World!").WriteLine("Hello World!") End Sub public static void Main() { System.esp ecx. return 0.

EconoJIT: Spécialement conçu pour les systèmes qui ont des ressources limitées. EconoJIT peut interrompre la compilation dès que le système commence à manquer de mémoire. 25 . JIT: Le JITter par défaut est appelé au moment de l'exécution lorsque chaque fois qu'une méthode est invoquée pour la première fois.JITter La génération de code lors de l'installation: compiler une assemblée entière en code binaire spécifique à la CPU.

Par analogie à l’architecture Java 26 .

8802-  @½ O.

 $ 9€¯f .f°€ ¾ .D@ . f ff ID .

¯fn° %% °¯ €¾ n°¾ ¯  f ¾f¯½J .f   € ½° ¾¯ f  °¯ €¾¯ ¾ %-¯ #f¾¾ ¯  ¾ €½°f f  nffn ¾n¾ %I ¾°  nf  ° °¯ ¾¾½½ %.

 ¯ ¾¾½½  ¾n½° ¾½ ¾ ½¾x¾%nf¾¾ ¾   ¯fn° %°–-f¯ ¯  ½ n ¾–¾½ nf°f¯ ¾½ nf°f¯  %¾¾ ¯  ¾x€x °nx¾ °¾f°n   n%%n¯f°f–  ¯  ¾ ½½xx¾ ½½f– ¾% .

  ¯f¾fn  f–  nfnf¾¾ ¯¾n ¾ ¯  @ J  ¯¾n ¾ ¯ .

°¾ – %%% nf°¾f°n  ¯½  ¯½  n%nf¾¾ ¯¾n ¾ ¯  @ J %   $$ ° €¯  ¯½  n %n ¾ #f¾¾ ¯   ¾¾n ¾  .

02039/.79.F0F/F0 :98..7:303802-0/0 5747.943 3.0  .F0&98F05.220/11F70398 $089:0F3F7.02039 /.:07 $089:0F3F7.38  .03.380 4-.8802- 147208/ :98.8802-08 .2206: :980 !.7-4708.438/G709508/ .8802-  !7.0/:5747.220 5.943/ :35747.79.

79.:/ :30 2.9:70:36:0 $9743 .47:3083...4-..:3.0.8802- .07:3.0 !07209/05.07.8802- .8802- /49.20 3/48389.30 &3.

..:9 00.

380  ..943/ 39F79F0890110.8802- /.3/4854707 &30.4:9/ :3.F71.9:F0478/0  .

4-.078438/0 .2H20 .9 /0   390757F90:7/0.439037 /11F703908..9:708 3:2F76:08  ...7/0883.-08 5.8802- -807.0 3/48.3/08 703/020398 7057F8039.8802-.943 7F00  50:9.4.8802- .9438  0547.422.:05.8802-F0 3.0 4-.90:7 /4330:30 .

4/0 4-.807 94:808 .4/0 4-..088 %42507 4907 .8802-.8802-08 4-.4/0 4-.:943 # /49H970 03208:70/04.#  0F.4/0 470 .8802- # &3/073 $.3/  .08     $!74.

#F84:943/0 8802-F0 4220390#50:9 974:.8802-F08  7F8/0/.39 :307F543808250 098:118.07/08 .38 0 03570207 5:8 0 7F5079470   .7/0/.08  !4:7 389.3802H207F5079470 6:0 34970 1.38 0 0# 70.390 4970  /497F8/07 /.07 08.8802-.

42243.4/0 42243.08  ..42543039 .4/0 '8:.3.0 .4/0  42507 8802- .0/ .4/0 8802- .9.3.3:.9388902807.0. 42507  42507 8802- .3:..42507 .4/0 &32.0#:3920 0.8.07:3920 %.:9434/0 $4:7.4/0 507.0/ .

:943 425.94309F.943 $4:7.425.0 4/0 .

9./.:943 %42507 .6:0 2F94/0 089 ..9.943 .425..943 4: .¯½f  -f€ 4/0 $ 09. G20.550F0  .39  389..0 4/0 0. 5702G70 148 .

9.9.4/.3 .3.3 43840 79030 0447/ 3/$:- 5:-.2..4/  4384079030 $0447/  709:73  < 2094/5:-.3  $8902 43840 79030 0447/  < 392..425.89.3 .:943 $:-.4/.0/  03975439 .94309F./0-889.

.

709 <.89..4/080  2.. * /8970447/ * ..47-($8902 4384079030 8973 * .4/28.

.

.0.3 907. /47/597/8  ( ..03/412094/04.3:.0 # 5:80-5 24.0-5 085 24./47/597/8  ( 5450-5 709  .

46:F0 54:7..425.!& % 0%907 5.7/F1.4/0 478/0 389.70 85F.434% $5F.%907 .6:0 1486: :302F94/0089 3.02.943 .02039...: 242039/0 0F..36:07 /02F2470  .42507:30 .550F .0829F08 .F3F7.:9089.16:0 .943/0.43: 54:708889G2086: 439/08 70884:7.434% 50:93907742570. 5702G70148  .42203.8802-F0039G70 03.943/G86:00 889G20 .:943 4786:0.4/0-3.

9:70.7.7.  ..90.40 ..!.3.

Sign up to vote on this title
UsefulNot useful