27
Formation universitaire Formation universitaire à .NET: à .NET: Introduction Introduction © © Patrick Smacchia Patrick Smacchia http:// www.smacchia.com © Patrick Smacchia/Microsoft Research Cambridge 2004 Les supports (cours et lab) de cette formation peuvent être utilisés gratuitement dans le cadre de tout enseignement à but non lucratif. acter moi avant toute utilisation non personnelle de ces supports : [email protected]

Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia © Patrick Smacchia/Microsoft

Embed Size (px)

Citation preview

Page 1: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Formation universitaire Formation universitaire à .NET:à .NET:

IntroductionIntroduction

©© Patrick Smacchia Patrick Smacchiahttp://www.smacchia.com

© Patrick Smacchia/Microsoft Research Cambridge 2004

Les supports (cours et lab) de cette formation peuvent être utilisés gratuitement dans le cadre de tout enseignement à but non lucratif.

Contacter moi avant toute utilisation non personnelle de ces supports : [email protected]

Page 2: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

2

PlanPlan

Qu’est ce que .NET?Qu’est ce que .NET?La notion d’assemblageLa notion d’assemblageLe langage CILLe langage CILLe CLRLe CLRLa BCL : Base Class LibraryLa BCL : Base Class LibraryL’aspect Multi-LangageL’aspect Multi-Langage

Page 3: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

3

Qu’est ce que .NET?Qu’est ce que .NET?

Plus grosse évolution dans le monde du Plus grosse évolution dans le monde du développement depuis Java.développement depuis Java.

Plus grosse évolution chez Microsoft Plus grosse évolution chez Microsoft depuis le passage de DOS à Windows.depuis le passage de DOS à Windows.

Abstraire la communication inter-machine Abstraire la communication inter-machine des OS sous-jacents avec les services web.des OS sous-jacents avec les services web.

Des nouveaux langages (CIL, C#, Des nouveaux langages (CIL, C#, VB.NET…)VB.NET…)

Des spécifications techniques normalisées Des spécifications techniques normalisées par l’ECMA et le W3C.par l’ECMA et le W3C.

Qu’est ce que .NET?Qu’est ce que .NET?

Page 4: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

4

PlanPlan

Qu’est ce que .NET?Qu’est ce que .NET?La notion d’assemblageLa notion d’assemblageLe langage CILLe langage CILLe CLRLe CLRLa BCL : Base Class LibraryLa BCL : Base Class LibraryL’aspect Multi-LangageL’aspect Multi-Langage

Page 5: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

5

La notion d’assemblageLa notion d’assemblage

Unités de déploiement logiqueUnités de déploiement logique Exécutables (.exe) et bibliothèque (.dll)Exécutables (.exe) et bibliothèque (.dll) Assemblage = Produit de la Assemblage = Produit de la

compilation compilation • Quel que soit le langage (C# VB.NET…)Quel que soit le langage (C# VB.NET…)• Quel que soit le type d’application Quel que soit le type d’application

(application graphique (winforms), console, (application graphique (winforms), console, serveur web, service web…)serveur web, service web…)

La notion d’assemblageLa notion d’assemblage

Page 6: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

6

Bénéfices des Bénéfices des assemblagesassemblages

Simplification du versioningSimplification du versioning Simplification du déploiement Simplification du déploiement Simplification de la gestion des culturesSimplification de la gestion des cultures Simplification de la maintenanceSimplification de la maintenance Simplification de l’analyse du contenu (car Simplification de l’analyse du contenu (car

auto-descriptif)auto-descriptif) Possibilité de les rendre infalsifiables grâce Possibilité de les rendre infalsifiables grâce

à un mécanisme de signature numériqueà un mécanisme de signature numérique Possibilité de stocker un assemblage sur Possibilité de stocker un assemblage sur

plusieurs fichiers plusieurs fichiers

La notion d’assemblageLa notion d’assemblage

Page 7: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

7

PlanPlan

Qu’est ce que .NET?Qu’est ce que .NET?La notion d’assemblageLa notion d’assemblageLe langage CILLe langage CILLe CLRLe CLRLa BCL : Base Class LibraryLa BCL : Base Class LibraryL’aspect Multi-LangageL’aspect Multi-Langage

Page 8: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

8

Le langage CILLe langage CIL

Common Intermediate LanguageCommon Intermediate Language Equivalent bytecode JavaEquivalent bytecode Java Normalisé par l’ECMANormalisé par l’ECMA Langage objet, mais proche de la Langage objet, mais proche de la

machinemachine MSIL : implémentation MS du CILMSIL : implémentation MS du CIL

Le langage CILLe langage CIL

Page 9: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

9

Le langage CIL : ExempleLe langage CIL : Exemple

class Prog{ static int f(int i1, int i2) {

return i1+i2; } public static void Main() {

int i1 =5; int i2 =6; int i3 = f(i1,i2);

}}

.maxstack 2

.locals ([0] int32 i1,

[1] int32 i2,

[2] int32 i3)

IL_0000: ldc.i4.5

IL_0001: stloc.0

IL_0002: ldc.i4.6

IL_0003: stloc.1

IL_0004: ldloc.0

IL_0005: ldloc.1

IL_0006: call int32

Prog::f(int32,int32)

IL_000b: stloc.2

IL_000c: ret

Le langage CILLe langage CIL

Page 10: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

10

Langage CIL et assemblageLangage CIL et assemblage

Assemblage

Description du contenu de l’assemblage (les Métadonnées)Descriptions des types contenus dans l’assemblageDescription des membres des types

Code CIL des méthodes des classes contenues dans l’assemblage

Le langage CILLe langage CIL

Page 11: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

11

PlanPlan

Qu’est ce que .NET?Qu’est ce que .NET? La notion d’assemblageLa notion d’assemblage Le langage CILLe langage CIL Le CLRLe CLR La BCL : Base Class LibraryLa BCL : Base Class Library L’aspect Multi-LangageL’aspect Multi-Langage

Page 12: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

12

Le CLRLe CLR

Common Langage RuntimeCommon Langage Runtime Couche logicielle qui gère le code à Couche logicielle qui gère le code à

l’exécutionl’exécution Equivalent Machine Virtuelle JavaEquivalent Machine Virtuelle Java Implémentation Microsoft du Implémentation Microsoft du CLICLI: :

Common Langage Infrastructure Common Langage Infrastructure normalisée par l’ECMAnormalisée par l’ECMA

Le CLRLe CLR

Page 13: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

13

Le CLR : vue physiqueLe CLR : vue physique

Plusieurs versions du CLR peuvent Plusieurs versions du CLR peuvent cohabiter sur la même machine cohabiter sur la même machine

2 implémentations pour chaque 2 implémentations pour chaque version du CLR : version du CLR : mscorwks.dll/mscorsvr.dll

Le CLR est chargé une seule fois par Le CLR est chargé une seule fois par chaque processus exécutant une chaque processus exécutant une application .NETapplication .NET

Le CLRLe CLR

Page 14: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

14

Le CLR et les Le CLR et les assemblagesassemblages

Les octets d’entêtes des assemblages Les octets d’entêtes des assemblages indiquent à Windows la nécessité de indiquent à Windows la nécessité de charger le CLR dans le processuscharger le CLR dans le processus

Cet entête indique aussi la version du CLR Cet entête indique aussi la version du CLR à chargerà charger

Une fois chargé, le CLR est (entre- autres) Une fois chargé, le CLR est (entre- autres) responsable du chargement des responsable du chargement des assemblages dans le processusassemblages dans le processus

Lors du chargement d’un assemblage, le Lors du chargement d’un assemblage, le CLR effectue des vérifications sur la non-CLR effectue des vérifications sur la non-falsification et la provenance de falsification et la provenance de l’assemblagel’assemblage

Le CLRLe CLR

Page 15: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

15

Le CLR et le langage CILLe CLR et le langage CIL Compilation du code CIL en langage machine, à Compilation du code CIL en langage machine, à

l’exécutionl’exécution Chaque méthode est compilée juste avant sa Chaque méthode est compilée juste avant sa

première utilisation : première utilisation : Compilation JITCompilation JIT (Just In (Just In Time = Juste à temps)Time = Juste à temps)

La compilation JIT est quasi-transparente au La compilation JIT est quasi-transparente au niveau des performances car le langage CIL niveau des performances car le langage CIL proche du langage machineproche du langage machine

Compilation JIT : permet d’exécuter un même Compilation JIT : permet d’exécuter un même assemblage sur plusieurs types de machinesassemblage sur plusieurs types de machines

Possibilité de précompiler le code CIL d’un Possibilité de précompiler le code CIL d’un assemblage pour un type de machineassemblage pour un type de machine

Le CLRLe CLR

Page 16: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

16

Les responsabilités du Les responsabilités du CLRCLR

Chargement des assemblages dans Chargement des assemblages dans l’espace mémoire du processusl’espace mémoire du processus

Compilation JIT du code CIL des Compilation JIT du code CIL des assemblagesassemblages

Gestion des allocations/désallocations Gestion des allocations/désallocations mémoire (ramasse-miettes)mémoire (ramasse-miettes)

Gestion des exceptionsGestion des exceptions Gestion de la sécuritéGestion de la sécurité On parle de On parle de code gérécode géré

Le CLRLe CLR

Page 17: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

17

PlanPlan

Qu’est ce que .NET?Qu’est ce que .NET? La notion d’assemblageLa notion d’assemblage Le langage CILLe langage CIL Le CLRLe CLR La BCL : Base Class LibraryLa BCL : Base Class Library L’aspect Multi-LangageL’aspect Multi-Langage

Page 18: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

18

BCL: Base Class LibraryBCL: Base Class Library

+ de 1400 types, dans un ensemble + de 1400 types, dans un ensemble d’assemblages fourni par MS d’assemblages fourni par MS

Parmi ces assemblages, l’assemblage Parmi ces assemblages, l’assemblage mscorlib joue un rôle particulier: joue un rôle particulier:• Contient les types de bases (entiers, Contient les types de bases (entiers,

chaîne de caractères…)chaîne de caractères…)• Il est référencé par tous les assemblagesIl est référencé par tous les assemblages• Il ne peut être chargé qu’une seule fois Il ne peut être chargé qu’une seule fois

dans chaque processusdans chaque processus

La BCL : Base Class LibraryLa BCL : Base Class Library

Page 19: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

19

BCL : Les BCL : Les fonctionnalitésfonctionnalités

Données: ADO.NET, XML, Flot de donnéesDonnées: ADO.NET, XML, Flot de données App graphique : Winform, Webform, GDI+App graphique : Winform, Webform, GDI+ CollectionCollection SynchronisationSynchronisation SécuritéSécurité SérialisationSérialisation ThreadingThreading GlobalizationGlobalization……

La BCL : Base Class LibraryLa BCL : Base Class Library

Page 20: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

20

BCL : Les espaces de BCL : Les espaces de nomsnoms

Les types sont répartis dans une Les types sont répartis dans une arborescence logique d’espaces de nomsarborescence logique d’espaces de noms

La racine: Espace de noms La racine: Espace de noms SystemSystem (ex de (ex de types: types: System.Int32, , System.String…)…)

Autres ex d’espaces de noms: Autres ex d’espaces de noms: System.Xml, , System.Windows.Forms

Physiquement, les types d’un même Physiquement, les types d’un même espace de noms peuvent être dans espace de noms peuvent être dans différents assemblages différents assemblages

La BCL : Base Class LibraryLa BCL : Base Class Library

Page 21: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

21

BCL : la classe BCL : la classe System.ObjectSystem.Object

Toutes les classes (y compris les votre) Toutes les classes (y compris les votre) dérivent de la classe dérivent de la classe System.Object, , définie dans l’assemblage définie dans l’assemblage mscorlib..

4 fonctionnalités présentées par cette 4 fonctionnalités présentées par cette classe:classe:• GetType() renvoie le type de l’objet renvoie le type de l’objet• ToString() renvoie une chaîne de caractères renvoie une chaîne de caractères

décrivant l’objetdécrivant l’objet• Finalize() appelée par le ramasse-miettes appelée par le ramasse-miettes

avant la déstruction de l’objetavant la déstruction de l’objet• Equals() GetHashCode() permet l’utilisation permet l’utilisation

d’une table de hachage pour stocker une d’une table de hachage pour stocker une collection d’objetscollection d’objets

La BCL : Base Class LibraryLa BCL : Base Class Library

Page 22: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

22

PlanPlan

Qu’est ce que .NET?Qu’est ce que .NET?La notion d’assemblageLa notion d’assemblageLe langage CILLe langage CILLe CLRLe CLRLa BCL : Base Class LibraryLa BCL : Base Class LibraryL’aspect Multi-LangageL’aspect Multi-Langage

Page 23: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

23

L’aspect Multi-langagesL’aspect Multi-langages

Une classe de base peut être écrite en Une classe de base peut être écrite en C#C#

Une classe écrite en J# peut en dériverUne classe écrite en J# peut en dériver La classe peut être instanciée à partir La classe peut être instanciée à partir

d’un code VB.NETd’un code VB.NET Relance la recherche sur les langagesRelance la recherche sur les langages Multi-langages : pas forcément un Multi-langages : pas forcément un

bienfait, il vaut mieux ne pas utiliser bienfait, il vaut mieux ne pas utiliser trop de langages pour un même projettrop de langages pour un même projet

L’aspect Multi-langagesL’aspect Multi-langages

Page 24: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

24

L’aspect Multi-langagesL’aspect Multi-langages

Plus de 25 langages prévus (pas tous produits par Plus de 25 langages prévus (pas tous produits par MS)MS)

C#C# J#J# VB.NETVB.NET JScriptJScript CompilationCompilation

Fortran.NETFortran.NET CILCIL Cobol.NETCobol.NET SML.NETSML.NET ……

L’aspect Multi-langagesL’aspect Multi-langages

Page 25: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

25

L’aspect Multi-langages : L’aspect Multi-langages : CLSCLS

CLS : Common Langage SpécificationCLS : Common Langage Spécification Définie les contraintes que doivent Définie les contraintes que doivent

respecter les langages et leurs respecter les langages et leurs compilateurscompilateurs

Exemple de contraintes :Exemple de contraintes :• Héritage simple d’implémentationHéritage simple d’implémentation• Héritage multiple d’abstractionHéritage multiple d’abstraction• System.Exception = classe de base de = classe de base de

toutes classes représentant une toutes classes représentant une exceptionexception

L’aspect Multi-langagesL’aspect Multi-langages

Page 26: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

26

L’aspect Multi-langages : L’aspect Multi-langages : CTSCTS

CTS : Common Type SystemCTS : Common Type System CTS = sous-ensemble des contraintes CLS CTS = sous-ensemble des contraintes CLS

concernant les types primitifs (entiers, chaînes de concernant les types primitifs (entiers, chaînes de caractères, dates…) pour que leur utilisation caractères, dates…) pour que leur utilisation puisse transcender les langages puisse transcender les langages

Les langages définissent des alias pour nommer Les langages définissent des alias pour nommer les types primitifs : les types primitifs : • System.Int16 alias alias short en C# et en C# et Short en VB.NET en VB.NET• System.Date alias alias Date en VB.NET, pas d’alias en C# en VB.NET, pas d’alias en C#• System.UInt16 alias alias ushort en C#, ce type n’est pas en C#, ce type n’est pas

compatible avec le CLScompatible avec le CLS

L’aspect Multi-langagesL’aspect Multi-langages

Page 27: Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia  © Patrick Smacchia/Microsoft

Introduction à .NET

27

Question?Question? Mots clésMots clés : Assemblage, Compilation JIT, : Assemblage, Compilation JIT,

mscorwks, mscorsvr, mscorlib, code géré, espace mscorwks, mscorsvr, mscorlib, code géré, espace de noms de noms

Acronymes Acronymes ::• CIL: Common Intermediate LanguageCIL: Common Intermediate Language• CLR: Common Language RuntimeCLR: Common Language Runtime• CLI : Common Langage InfrastructureCLI : Common Langage Infrastructure• ECMA : European Computer Manufacturer’s Association ECMA : European Computer Manufacturer’s Association • JIT : Just In TimeJIT : Just In Time• BCL : Base Class LibraryBCL : Base Class Library• CLS : Common Langage SpécificationCLS : Common Langage Spécification• CTS : Common Type SystemCTS : Common Type System