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