Formation universitaire à .NET: Les assemblages

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Module 5 : Implémentation de l'impression
Formation universitaire à .NET: Introduction à C#
« Les Mercredis du développement » Introduction Office « 12 » Présenté par Bernard Fedotoff Microsoft Regional Director Agilcom.
Introduction au langage C++
Transformation de documents XML
DTD Sylvain Salvati
Appels de fonctions natives sous C#
(Classes prédéfinies – API Java)
Vue d'ensemble Création de comptes d'utilisateurs
Introduction à Java - les paquetages -
XHTML EXtensible HyperText Markup Language. HTML et XML HTML (HyperText Markup Language) et XML (eXtensible Markup Language) sont deux spécifications.
Outils de développements
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
La fonction Style Permet de créer des types de texte, par exemple
Introduction à la POO: Les classes vs les objets
Initiation au système d’information et aux bases de données
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Initiation au système d’information et aux bases de données
Principes de programmation (suite)
Cours de programmation
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Formation universitaire à .NET: Visual Studio .NET
Laboratoire d'Informatique de l’Université de Franche-Comté
Principes de programmation (suite)
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
L’utilisation des bases de données
.Net Remoting.
MODELE RELATIONNEL concept mathématique de relation
FICHIERS : Définition : Algorithme général:
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
La problématique de la recherche de document Journée de formation 29 février 2008.
Programmation concurrente
IFT 6800 Atelier en Technologies d’information
Module 2 : Préparation de l'analyse des performances du serveur
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
Les formats Débutant – Semaine 4.
Développement dapplication avec base de données Semaine 10 : WCF avec Entité Framework Automne 2013.
Formation universitaire à.NET: Introduction Formation universitaire à.NET: Introduction © Patrick Smacchia © Patrick Smacchia/Microsoft.
Animateur : Med HAIJOUBI
Programmer en langage c
Programmation Système et Réseau (sous Linux)
Gérer la sécurité des mots de passe et les ressources
Le langage XML.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Introduction à Visual Studio C++ (VC++)
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
Tutorat en bio-informatique
Code Contracts Gilles TOURREAU - MVP C# Architecte .NET / Formateur
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Module : Langage XML (21h)
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
eXtensible Markup Language. Généralités sur le XML.
S. Domas Système d’Exploitation Make et la construction d’exécutables 1ère annéeIUT Belfort-Montbéliard.
LDAP (Lightweight Directory Access Protocol)
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Introduction Module 1.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Correction du TD Chapitre 3.
Les bases de données Séance 4 Construction du Modèle Physique (la BDD)
FACTORY systemes Module 6 Page 6-1 La base de données InSQL FORMATION InSQL 7.0.
FACTORY systemes Module 6 Section 1 Page 6-3 Les ActiveX FORMATION INTOUCH 7.0.
Transcription de la présentation:

Formation universitaire à .NET: Les assemblages Patrick Smacchia 2003 Formation universitaire à .NET: Les assemblages © 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 : patrick@smacchia.com L'architecture .NET : Introduction

Plan Notion de module Anatomie des modules Patrick Smacchia 2003 Plan Notion de module Anatomie des modules LAB1 : csc.exe et l’outil ildasm.exe Assemblages à noms forts LAB2 : signature numérique Globalisation et assemblages satellites Les assemblages L'architecture .NET : Introduction

Notion de module Un assemblage est un concept logique. Patrick Smacchia 2003 Notion de module Notion de module Un assemblage est un concept logique. Physiquement, un assemblage est constitué de plusieurs fichiers appelés modules. Les modules peuvent soit contenir du code, soit contenir des ressources, soit les deux. Extensions des modules avec du code: .exe .dll .netmodule Extensions des modules sans code (appelés modules ressources) : .resources .jpg .txt … Tous les modules d’un assemblage doivent se situer dans le même répertoire. Les assemblages L'architecture .NET : Introduction

Pourquoi la notion de modules? Patrick Smacchia 2003 Notion de module Pourquoi la notion de modules? 80% du temps est passé dans 20% du code. Il se peut que certains modules ne soient jamais chargés. Inclusions logiques (et pas physique) de fichiers ressources dans un assemblage. Possibilité d’avoir un module par culture supportée. Possibilité d’utiliser un langage par module: un assemblage peut donc être écrit en plusieurs langages .NET. Les assemblages L'architecture .NET : Introduction

Le module avec le manifeste Patrick Smacchia 2003 Notion de module Le module avec le manifeste Chaque assemblage a un module particulier: Ce module référence tous les autres modules. Ce référencement se fait dans une section physique appelée manifeste. Lorsque le CLR charge l’assemblage, il commence toujours par charger ce module. Ce module est d’extension .exe ou .dll. Il détermine donc si l’assemblage est un exécutable ou une librairie. Aucun autre module ne peut avoir l’extension .exe ou .dll. Les assemblages L'architecture .NET : Introduction

Références entre assemblages Patrick Smacchia 2003 Notion de module Références entre assemblages Un assemblages peut utiliser des types ou des ressources définis dans un autre assemblage. Ces assemblages doivent être fournis lors de la fabrication du module avec le manifeste. Les références vers ces assemblages sont physiquement contenues dans le manifeste. Ex: Compilateur C# csc.exe csc.exe /r:Asm.dll /addmodule:Mod.netmodule Foo.cs Les assemblages L'architecture .NET : Introduction

L’outil al.exe al.exe : Assembly Linker Outil en ligne de commande. Patrick Smacchia 2003 Notion de module L’outil al.exe al.exe : Assembly Linker Outil en ligne de commande. al.exe permet de réunir des fichiers au sein d’un même assemblage. al.exe ne fait que fabriquer un module d’extension .dll contenant le manifeste. al.exe fabrique donc des assemblages sans code CIL. Ex: al.exe /out:en-US\Chaines.Resources.dll /c:en-US /embed:en-US\Chaines.en-US.resources Les assemblages L'architecture .NET : Introduction

Plan Notion de module Anatomie des modules LAB1 : csc.exe et l’outil ildasm.exe Assemblages à noms forts Le mécanisme de signature retardée LAB2 : signature numérique Globalisation et assemblages satellites Les assemblages

Patrick Smacchia 2003 Anatomie des modules Anatomie d’un module Un module qui contient du code CIL contient obligatoirement une section physique appelée métadonnées de types. Les données de cette section décrivent les types contenus dans le module. On parle d’auto-description. Un module qui contient du code peut aussi contenir des ressources (option /resources de csc.exe) Les assemblages L'architecture .NET : Introduction

Utilisation de csc.exe Anatomie des modules Assemblage Foo2.netmodule Patrick Smacchia 2003 Anatomie des modules Utilisation de csc.exe csc.exe /target:module Foo2.cs /resource:Images.jpg csc.exe /Addmodule:Foo2.netmodule /LinkResource:Foo3.resources Foo1.cs Assemblage Foo1.exe Métadonnées de type Manifeste contient notamment une référence vers Foo2 et une référence vers Foo3.resources Code CIL des méthodes des types Foo2.netmodule Métadonnées de type Code CIL des méthodes des types Foo3.resources Resources (Image.jpg) Les assemblages L'architecture .NET : Introduction

Les métadonnées d’assemblages Patrick Smacchia 2003 Anatomie des modules Les métadonnées d’assemblages Deux types de métadonnées: Les métadonnées de types, contenues dans tous modules contenant du code CIL. Les métadonnées d’assemblages, contenues dans le manifeste. Les métadonnées d’assemblages = 4 tables: AssemblyDef: nom, version, culture… FileDef: une entrée par module ManifestResourcesDef: une entrée par ressource ExportedTypeDef: Une entrée par type publique Les assemblages L'architecture .NET : Introduction

Les attributs .NET d’assemblages Patrick Smacchia 2003 Anatomie des modules Les attributs .NET d’assemblages Classes utilisables dans le code source pour positionner les informations relatives à l’assemblage. Ces infos seront stockées dans les métadonnées d’assemblage. Exemple d’attributs d’assemblage : AssemblyCompany AssemblyProduct AssemblyDescription AssemblyVersion AssemblyCulture AssemblyCopyright Exemple d’utilisation: using System.Reflection; [assembly: AssemblyCompany("L’entreprise")] [assembly: AssemblyProduct("Le produit @@")] Les assemblages L'architecture .NET : Introduction

Les métadonnées de types Patrick Smacchia 2003 Anatomie des modules Les métadonnées de types Contient des tables de définitions: TypeDef (Une entrée par type défini dans le module) MethodDef FieldDef PropertyDef… Contient des tables de références: AssemblyRef (Une entrée par assemblage utilisé par ce module) ModuleRef TypeRef MemberRef Contient des tas: #string (nom des méthodes…) #user (chaîne de caractères) #blob (signature des méthodes) Les specs définissent un numéro unique à chacune de ces tables et tas (sur 1 octet) Exemple: la table MethodDef à le numéro 6 Les assemblages L'architecture .NET : Introduction

Les jetons de métadonnées Patrick Smacchia 2003 Anatomie des modules Les jetons de métadonnées Identifiants 4 octets placés au sein du code CIL pour référencer les entités (premier octet = numéro de table ou de tas) .method /*06000001*/ public hidebysig static void Main() cil managed { .entrypoint // Code size 11 (0xb) .maxstack 1 IL_0000: ldstr "Hello world!" /* 70000001 */ IL_0005: call void [mscorlib/* 23000001 */] System.Console/* 0100000F */::WriteLine(string) /* 0A00000E */ IL_000a: ret } // end of method Prog::Main using System; class Prog { public static void Main() Console.WriteLine( "Hello world!"); } Conséquence: pas d’adresse physiques dans l’assemblage, indépendance totale face au matériel sous-jacent Les assemblages L'architecture .NET : Introduction

Plan Notion de module Anatomie des modules LAB1 : csc.exe et l’outil ildasm.exe Assemblages à noms forts LAB2 : signature numérique Globalisation et assemblages satellites Les assemblages

Plan Notion de module Anatomie des modules LAB1 : csc.exe et l’outil ildasm.exe Assemblages à noms forts LAB2 : signature numérique Globalisation et assemblages satellites Les assemblages

Qu’est ce qu’un nom fort? Patrick Smacchia 2003 Assemblages à noms forts Qu’est ce qu’un nom fort? Le nom d’un assemblage est qualifié de fort ssi l’assemblage est signé numériquement. En conséquence, un assemblage à nom fort est mathématiquement infalsifiable. Concrètement, si une entité prétend avoir développée un assemblage qui a un nom fort, on a un moyen de vérifier si cela est vrai. Les assemblages L'architecture .NET : Introduction

Patrick Smacchia 2003 Assemblages à noms forts L’algorithme RSA L’algorithme RSA se base sur un ensemble de fonctions mathématiques bijectives. Chacune de ces fonctions est définie par la donnée de 2 nombres A et B: Si on connaît A, on peut calculer f(x) pour tout x. Si on connaît B, on peut calculer x pour tout f(x). Si on ne connaît pas B, on ne peut pas calculer x pour tout f(x). Applications: Echange de messages cryptés. Authentification d’un fichier par signature numérique. Les assemblages L'architecture .NET : Introduction

La signature numérique Patrick Smacchia 2003 Assemblages à noms forts La signature numérique Assemblage Foo1.exe Signature numérique = f(x) Signature numérique Assemblage Foo1.exe Manifeste Cles.snk Clé publique Manifeste A (Clé publique) B (Clé privée) Métadonnées de type Métadonnées de type Valeur de hachage = x Code IL Code IL Les assemblages L'architecture .NET : Introduction

sn.exe ; jeton de clé publique Patrick Smacchia 2003 Assemblages à noms forts sn.exe ; jeton de clé publique L’algorithme de hachage (SHA-1 ou MD5) produit une valeur d’une vingtaine d’octets. L’utilitaire sn.exe permet de produire des couples clé privé (436 octets) clé publique (128 octets). L’attribut AssemblyKeyFile permet de référencer le fichier contenant les clés. Le nom fort de l’assemblage ne contient pas la clé publique mais un jeton de clé publique, sur 8 octets. b03f5f7f11d50a3a jeton de Microsoft. b77a5c561934e089 jeton de l’ECMA. Les assemblages L'architecture .NET : Introduction

Patrick Smacchia 2003 Assemblages à noms forts Signature retardée Le fichier contenant les clés publique/privé doit rester confidentiel. Pour éviter de fournir ce fichier aux développeurs, sn.exe (option -p) permet de produire un fichier ne contenant que la clé publique. La signature est rajoutée à l’assemblage ultérieurement avec sn.exe (option –R). Les assemblages L'architecture .NET : Introduction

Plan Notion de module Anatomie des modules LAB1 : csc.exe et l’outil ildasm.exe Assemblages à noms forts LAB2 : signature numérique Globalisation et assemblages satellites Les assemblages

Plan Notion de module Anatomie des modules LAB1 : csc.exe et l’outil ildasm.exe Assemblages à noms forts LAB2 : signature numérique Globalisation et assemblages satellites Les assemblages

Définitions Globalisation et assemblages satellites Patrick Smacchia 2003 Globalisation et assemblages satellites Définitions Une culture = association une langue/ un pays fr-FR en-US en-UK … La plupart des applications doivent être utilisable par des personnes issues de cultures différentes. C’est la globalisation d’une application. Pour gérer la globalisation, .NET autorise d’accompagner une application avec des assemblage spéciaux, un par culture. Ce sont es assemblages satellites. Chaque assemblage satellite contient les ressources pour sa culture, chaîne de caractères, images… Les assemblages L'architecture .NET : Introduction

Editer les ressources Globalisation et assemblages satellites Patrick Smacchia 2003 Globalisation et assemblages satellites Editer les ressources Il existe trois formats de fichier pour contenir les ressources: Des fichiers textes .txt, qui ne contiennent pas d’image (utilisé lors du développement). Des fichiers XML .resx qui peuvent contenir des images encodées en base64 (utilisé lors du développement). Visual Studio .NET est adapté à l’utilisation des fichiers .resx. Des fichiers binaires .resources utilisés à la compilation. On passe d’un format à un autre avec l’utilitaire resgen.exe : resgen.exe en-US\Chaines.txt en-US\Chaines.en-US.resources Avec l’option /resource de csc.exe on peut aussi insérer des ressources directement dans l’assemblage avec du code mais ceci est déconseillé. Les assemblages L'architecture .NET : Introduction

Compiler un assemblage satellite Patrick Smacchia 2003 Globalisation et assemblages satellites Compiler un assemblage satellite Un assemblage satellite ne contient pas de code. Il faut le compiler avec l’outil al.exe qui va construire un fichier d’extension .dll contenant les métadonnées d’assemblage: al.exe /out:en-US\Chaines.Resources.dll /c:en-US /embed:en-US\Chaines.en-US.resources Lors du déploiement, les assemblages satellites doivent être dans un répertoire nommé par la culture. Avec l’option /resource de csc.exe on peut aussi insérer des ressources directement dans l’assemblage avec du code (et ainsi se passer des assemblages satellites) mais ceci est déconseillé. Les assemblages L'architecture .NET : Introduction

Exploiter les ressources Patrick Smacchia 2003 Globalisation et assemblages satellites Exploiter les ressources Il faut utiliser la classe System.Resources.ResourceManager prévue à cet effet: ... Assembly A = Assembly.Load("chaines.resources,culture=en-US"); ResourceManager RM = new ResourceManager("chaines.en-US",A); string s = RM.GetString("Bonjour"); Console.WriteLine(s); System.Drawing.Image Im = (Image) RM.GetObject("UneImage"); string s = (string) RM.GetObject("Bonjour"); Les assemblages L'architecture .NET : Introduction

Question? Mots clés : module, module ressource, manifeste, métadonnées de types, métadonnées d’assemblages, jeton de métadonnées, attribut .NET d’assemblage, nom fort, RSA, signature numérique, signature retardée, jeton de clé publique, ressource, globalisation, culture Acronymes : al.exe : Assembly Linker csc.exe : C# compiler sn.exe : strong name resgen.exe : resource génerator Les assemblages