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 ReportTranscript 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