Formation universitaire à .NET: Introduction © Patrick Smacchia http://www.smacchia.com © Patrick Smacchia/Microsoft Research Cambridge 2004 Les supports (cours et lab) de cette formation peuvent être.
Download
Report
Transcript Formation universitaire à .NET: Introduction © Patrick Smacchia http://www.smacchia.com © Patrick Smacchia/Microsoft Research Cambridge 2004 Les supports (cours et lab) de cette formation peuvent être.
Formation universitaire à .NET:
Introduction
© 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.
Contacter moi avant toute utilisation non personnelle de ces supports : [email protected]
Plan
Qu’est ce que .NET?
La notion d’assemblage
Le langage CIL
Le CLR
La BCL : Base Class Library
L’aspect Multi-Langage
Introduction à .NET
2
Qu’est ce que .NET?
Qu’est ce que .NET?
Plus grosse évolution dans le monde du
développement depuis Java.
Plus grosse évolution chez Microsoft depuis le
passage de DOS à Windows.
Abstraire la communication inter-machine des
OS sous-jacents avec les services web.
Des nouveaux langages (CIL, C#, VB.NET…)
Des spécifications techniques normalisées par
l’ECMA et le W3C.
Introduction à .NET
3
Plan
Qu’est ce que .NET?
La notion d’assemblage
Le langage CIL
Le CLR
La BCL : Base Class Library
L’aspect Multi-Langage
Introduction à .NET
4
La notion d’assemblage
La notion d’assemblage
Unités de déploiement logique
Exécutables (.exe) et bibliothèque (.dll)
Assemblage = Produit de la compilation
• Quel que soit le langage (C# VB.NET…)
• Quel que soit le type d’application (application
graphique (winforms), console, serveur web,
service web…)
Introduction à .NET
5
La notion d’assemblage
Bénéfices des assemblages
Simplification du versioning
Simplification du déploiement
Simplification de la gestion des cultures
Simplification de la maintenance
Simplification de l’analyse du contenu (car autodescriptif)
Possibilité de les rendre infalsifiables grâce à un
mécanisme de signature numérique
Possibilité de stocker un assemblage sur
plusieurs fichiers
Introduction à .NET
6
Plan
Qu’est ce que .NET?
La notion d’assemblage
Le langage CIL
Le CLR
La BCL : Base Class Library
L’aspect Multi-Langage
Introduction à .NET
7
Le langage CIL
Le langage CIL
Common Intermediate Language
Equivalent bytecode Java
Normalisé par l’ECMA
Langage objet, mais proche de la machine
MSIL : implémentation MS du CIL
Introduction à .NET
8
Le langage CIL
Le 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
Introduction à .NET
9
Le langage CIL
Langage CIL et assemblage
Assemblage
Description du contenu de l’assemblage (les Métadonnées)
Descriptions des types contenus dans l’assemblage
Description des membres des types
Code CIL des méthodes des classes contenues dans
l’assemblage
Introduction à .NET
10
Plan
Qu’est ce que .NET?
La notion d’assemblage
Le langage CIL
Le CLR
La BCL : Base Class Library
L’aspect Multi-Langage
Introduction à .NET
11
Le CLR
Le CLR
Common Langage Runtime
Couche logicielle qui gère le code à
l’exécution
Equivalent Machine Virtuelle Java
Implémentation Microsoft du CLI:
Common Langage Infrastructure
normalisée par l’ECMA
Introduction à .NET
12
Le CLR
Le CLR : vue physique
Plusieurs versions du CLR peuvent
cohabiter sur la même machine
2 implémentations pour chaque version du
CLR : mscorwks.dll/mscorsvr.dll
Le CLR est chargé une seule fois par
chaque processus exécutant une
application .NET
Introduction à .NET
13
Le CLR
Le CLR et les assemblages
Les octets d’entêtes des assemblages indiquent
à Windows la nécessité de charger le CLR dans
le processus
Cet entête indique aussi la version du CLR à
charger
Une fois chargé, le CLR est (entre- autres)
responsable du chargement des assemblages
dans le processus
Lors du chargement d’un assemblage, le CLR
effectue des vérifications sur la non-falsification
et la provenance de l’assemblage
Introduction à .NET
14
Le CLR
Le CLR et le langage CIL
Compilation du code CIL en langage machine, à
l’exécution
Chaque méthode est compilée juste avant sa première
utilisation : Compilation JIT (Just In Time = Juste à
temps)
La compilation JIT est quasi-transparente au niveau des
performances car le langage CIL proche du langage
machine
Compilation JIT : permet d’exécuter un même
assemblage sur plusieurs types de machines
Possibilité de précompiler le code CIL d’un assemblage
pour un type de machine
Introduction à .NET
15
Le CLR
Les responsabilités du CLR
Chargement des assemblages dans
l’espace mémoire du processus
Compilation JIT du code CIL des
assemblages
Gestion des allocations/désallocations
mémoire (ramasse-miettes)
Gestion des exceptions
Gestion de la sécurité
On parle de code géré
Introduction à .NET
16
Plan
Qu’est ce que .NET?
La notion d’assemblage
Le langage CIL
Le CLR
La BCL : Base Class Library
L’aspect Multi-Langage
Introduction à .NET
17
La BCL : Base Class Library
BCL: Base Class Library
+ de 1400 types, dans un ensemble
d’assemblages fourni par MS
Parmi ces assemblages, l’assemblage
mscorlib joue un rôle particulier:
• Contient les types de bases (entiers, chaîne
de caractères…)
• Il est référencé par tous les assemblages
• Il ne peut être chargé qu’une seule fois dans
chaque processus
Introduction à .NET
18
La BCL : Base Class Library
BCL : Les fonctionnalités
Données: ADO.NET, XML, Flot de données
App graphique : Winform, Webform, GDI+
Collection
Synchronisation
Sécurité
Sérialisation
Threading
Globalization
…
Introduction à .NET
19
La BCL : Base Class Library
BCL : Les espaces de noms
Les types sont répartis dans une arborescence
logique d’espaces de noms
La racine: Espace de noms System (ex de
types: System.Int32, System.String…)
Autres ex d’espaces de noms: System.Xml,
System.Windows.Forms
Physiquement, les types d’un même espace de
noms peuvent être dans différents assemblages
Introduction à .NET
20
La BCL : Base Class Library
BCL : la classe System.Object
Toutes les classes (y compris les votre) dérivent
de la classe System.Object, définie dans
l’assemblage mscorlib.
4 fonctionnalités présentées par cette classe:
• GetType() renvoie le type de l’objet
• ToString() renvoie une chaîne de caractères
décrivant l’objet
• Finalize() appelée par le ramasse-miettes avant la
déstruction de l’objet
• Equals() GetHashCode() permet l’utilisation
d’une table de hachage pour stocker une collection
d’objets
Introduction à .NET
21
Plan
Qu’est ce que .NET?
La notion d’assemblage
Le langage CIL
Le CLR
La BCL : Base Class Library
L’aspect Multi-Langage
Introduction à .NET
22
L’aspect Multi-langages
L’aspect Multi-langages
Une classe de base peut être écrite en C#
Une classe écrite en J# peut en dériver
La classe peut être instanciée à partir d’un
code VB.NET
Relance la recherche sur les langages
Multi-langages : pas forcément un
bienfait, il vaut mieux ne pas utiliser trop
de langages pour un même projet
Introduction à .NET
23
L’aspect Multi-langages
L’aspect Multi-langages
Plus de 25 langages prévus (pas tous produits par MS)
C#
J#
VB.NET
JScript
Fortran.NET
Cobol.NET
SML.NET
…
Compilation
CIL
Introduction à .NET
24
L’aspect Multi-langages
L’aspect Multi-langages : CLS
CLS : Common Langage Spécification
Définie les contraintes que doivent
respecter les langages et leurs
compilateurs
Exemple de contraintes :
• Héritage simple d’implémentation
• Héritage multiple d’abstraction
• System.Exception = classe de base de
toutes classes représentant une exception
Introduction à .NET
25
L’aspect Multi-langages
L’aspect Multi-langages : CTS
CTS : Common Type System
CTS = sous-ensemble des contraintes CLS concernant
les types primitifs (entiers, chaînes de caractères,
dates…) pour que leur utilisation puisse transcender les
langages
Les langages définissent des alias pour nommer les
types primitifs :
• System.Int16 alias short en C# et Short en VB.NET
• System.Date alias Date en VB.NET, pas d’alias en C#
• System.UInt16 alias ushort en C#, ce type n’est pas
compatible avec le CLS
Introduction à .NET
26
Question?
Mots clés : Assemblage, Compilation JIT, mscorwks,
mscorsvr, mscorlib, code géré, espace de noms
Acronymes :
•
•
•
•
•
•
•
•
CIL: Common Intermediate Language
CLR: Common Language Runtime
CLI : Common Langage Infrastructure
ECMA : European Computer Manufacturer’s Association
JIT : Just In Time
BCL : Base Class Library
CLS : Common Langage Spécification
CTS : Common Type System
Introduction à .NET
27