Upload
frederic-baron
View
104
Download
0
Embed Size (px)
Citation preview
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]
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
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?
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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