La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Formation universitaire à.NET: Les assemblages Formation universitaire à.NET: Les assemblages © Patrick Smacchia © Patrick Smacchia/Microsoft.

Présentations similaires


Présentation au sujet: "Formation universitaire à.NET: Les assemblages Formation universitaire à.NET: Les assemblages © Patrick Smacchia © Patrick Smacchia/Microsoft."— Transcription de la présentation:

1 Formation universitaire à.NET: Les assemblages Formation universitaire à.NET: Les assemblages © Patrick Smacchia © 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 :

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

3 Les assemblages3 Notion de module Un assemblage est un concept logique. Un assemblage est un concept logique. Physiquement, un assemblage est constitué de plusieurs fichiers appelés modules. 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. Les modules peuvent soit contenir du code, soit contenir des ressources, soit les deux. Extensions des modules avec du code:Extensions des modules avec du code:.exe.dll.netmodule Extensions des modules sans code (appelés modules ressources) :Extensions des modules sans code (appelés modules ressources) :.resources.jpg.txt … Tous les modules dun assemblage doivent se situer dans le même répertoire. Tous les modules dun assemblage doivent se situer dans le même répertoire. Notion de module

4 Les assemblages4 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. 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. Inclusions logiques (et pas physique) de fichiers ressources dans un assemblage. Possibilité davoir un module par culture supportée. Possibilité davoir un module par culture supportée. Possibilité dutiliser un langage par module: un assemblage peut donc être écrit en plusieurs langages.NET. Possibilité dutiliser un langage par module: un assemblage peut donc être écrit en plusieurs langages.NET. Notion de module

5 Les assemblages5 Le module avec le manifeste Chaque assemblage a un module particulier: 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. 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 lassemblage, il commence toujours par charger ce module. Lorsque le CLR charge lassemblage, il commence toujours par charger ce module. Ce module est dextension ou. Il détermine donc si lassemblage est un exécutable ou une librairie. Aucun autre module ne peut avoir lextension ou. Ce module est dextension.exe ou.dll. Il détermine donc si lassemblage est un exécutable ou une librairie. Aucun autre module ne peut avoir lextension.exe ou.dll. Notion de module

6 Les assemblages6 Références entre assemblages Un assemblages peut utiliser des types ou des ressources définis dans un autre assemblage. 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. 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# Ex: Compilateur C# csc.exe csc.exe /r:Asm.dll /addmodule:Mod.netmodule Foo.cs Notion de module

7 Les assemblages7 Loutil al.exe : Assembly Linker al.exe : Assembly Linker Outil en ligne de commande. Outil en ligne de commande. permet de réunir des fichiers au sein dun même assemblage. al.exe permet de réunir des fichiers au sein dun même assemblage. ne fait que fabriquer un module dextension contenant le manifeste. al.exe ne fait que fabriquer un module dextension.dll contenant le manifeste. fabrique donc des assemblages sans code CIL. al.exe fabrique donc des assemblages sans code CIL. Ex: Ex: al.exe /out:en-US\Chaines.Resources.dll /c:en- US /embed:en-US\Chaines.en-US.resources Notion de module

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

9 Les assemblages9 Anatomie dun 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 dauto-description. 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 dauto-description. Un module qui contient du code peut aussi contenir des ressources (option de ) Un module qui contient du code peut aussi contenir des ressources (option /resources de csc.exe ) Anatomie des modules

10 Les assemblages10 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) Anatomie des modules

11 Les assemblages11 Les métadonnées dassemblages Deux types de métadonnées: Deux types de métadonnées: Les métadonnées de types, contenues dans tous modules contenant du code CIL.Les métadonnées de types, contenues dans tous modules contenant du code CIL. Les métadonnées dassemblages, contenues dans le manifeste.Les métadonnées dassemblages, contenues dans le manifeste. Les métadonnées dassemblages = 4 tables: Les métadonnées dassemblages = 4 tables: AssemblyDef: nom, version, culture…AssemblyDef: nom, version, culture… FileDef: une entrée par moduleFileDef: une entrée par module ManifestResourcesDef: une entrée par ressourceManifestResourcesDef: une entrée par ressource ExportedTypeDef: Une entrée par type publiqueExportedTypeDef: Une entrée par type publique Anatomie des modules

12 Les assemblages12 Les attributs.NET dassemblages Classes utilisables dans le code source pour positionner les informations relatives à lassemblage. Ces infos seront stockées dans les métadonnées dassemblage. Classes utilisables dans le code source pour positionner les informations relatives à lassemblage. Ces infos seront stockées dans les métadonnées dassemblage. Exemple dattributs dassemblage : Exemple dattributs dassemblage : AssemblyCompany AssemblyProduct AssemblyDescription AssemblyVersion AssemblyCulture AssemblyCopyright Exemple dutilisation: Exemple dutilisation: using System.Reflection; [assembly: AssemblyCompany("Lentreprise")] [assembly: AssemblyProduct("Le produit Anatomie des modules

13 Les assemblages13 Les métadonnées de types Contient des tables de définitions: 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: Contient des tables de références: AssemblyRef (Une entrée par assemblage utilisé par ce module) ModuleRef TypeRef MemberRef Contient des tas: 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) 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 Anatomie des modules

14 Les assemblages14. method /* */ public hidebysig static void Main() cil managed {.entrypoint // Code size 11 (0xb).maxstack 1 IL_0000: ldstr "Hello world!" /* */ IL_0005: call void [mscorlib/* */] System.Console/* F */::WriteLine(string) /* 0A00000E */ IL_000a: ret } // end of method Prog::Main using System; class Prog { public static void Main() { Console.WriteLine( "Hello world!"); } 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) 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) Anatomie des modules Conséquence: pas dadresse physiques dans lassemblage, indépendance totale face au matériel sous-jacent Conséquence: pas dadresse physiques dans lassemblage, indépendance totale face au matériel sous-jacent

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

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

17 Les assemblages17 Quest ce quun nom fort? Le nom dun assemblage est qualifié de fort ssi lassemblage est signé numériquement. Le nom dun assemblage est qualifié de fort ssi lassemblage est signé numériquement. En conséquence, un assemblage à nom fort est mathématiquement infalsifiable. 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. 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. Assemblages à noms forts

18 Les assemblages18 Lalgorithme RSA Lalgorithme 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: Lalgorithme 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 A, on peut calculer f(x) pour tout x. Si on connaît B, on peut calculer x pour tout f(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).Si on ne connaît pas B, on ne peut pas calculer x pour tout f(x). Applications: Applications: Echange de messages cryptés.Echange de messages cryptés. Authentification dun fichier par signature numérique.Authentification dun fichier par signature numérique. Assemblages à noms forts

19 Les assemblages19 La signature numérique Assemblages à noms forts Assemblage Foo1.exe Métadonnées de type Manifeste Code IL Assemblage Foo1.exe Métadonnées de type Manifeste Code IL Clé publique Signature numérique Valeur de hachage = x Signature numérique = f(x) Cles.snk A (Clé publique) B (Clé privée)

20 Les assemblages20 sn.exe ; jeton de clé publique Lalgorithme de hachage (SHA-1 ou MD5) produit une valeur dune vingtaine doctets. Lalgorithme de hachage (SHA-1 ou MD5) produit une valeur dune vingtaine doctets. Lutilitaire permet de produire des couples clé privé (436 octets) clé publique (128 octets). Lutilitaire sn.exe permet de produire des couples clé privé (436 octets) clé publique (128 octets). Lattribut permet de référencer le fichier contenant les clés. Lattribut AssemblyKeyFile permet de référencer le fichier contenant les clés. Le nom fort de lassemblage ne contient pas la clé publique mais un jeton de clé publique, sur 8 octets. Le nom fort de lassemblage ne contient pas la clé publique mais un jeton de clé publique, sur 8 octets. b03f5f7f11d50a3a jeton de Microsoft. b77a5c561934e089 jeton de lECMA. Assemblages à noms forts

21 Les assemblages21 Signature retardée Le fichier contenant les clés publique/privé doit rester confidentiel. Le fichier contenant les clés publique/privé doit rester confidentiel. Pour éviter de fournir ce fichier aux développeurs, (option ) permet de produire un fichier ne contenant que la clé publique. 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 à lassemblage ultérieurement avec (option ). La signature est rajoutée à lassemblage ultérieurement avec sn.exe (option –R ). Assemblages à noms forts

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

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

24 Les assemblages24 Définitions Une culture = association une langue/ un pays 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. Cest la globalisation dune application. La plupart des applications doivent être utilisable par des personnes issues de cultures différentes. Cest la globalisation dune application. Pour gérer la globalisation,.NET autorise daccompagner une application avec des assemblage spéciaux, un par culture. Ce sont es assemblages satellites. Pour gérer la globalisation,.NET autorise daccompagner 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… Chaque assemblage satellite contient les ressources pour sa culture, chaîne de caractères, images… Globalisation et assemblages satellites

25 Les assemblages25 Editer les ressources Il existe trois formats de fichier pour contenir les ressources: Il existe trois formats de fichier pour contenir les ressources: Des fichiers textes, qui ne contiennent pas dimage (utilisé lors du développement).Des fichiers textes.txt, qui ne contiennent pas dimage (utilisé lors du développement). Des fichiers XML qui peuvent contenir des images encodées en base64 (utilisé lors du développement). Visual Studio.NET est adapté à lutilisation des fichiers.Des fichiers XML.resx qui peuvent contenir des images encodées en base64 (utilisé lors du développement). Visual Studio.NET est adapté à lutilisation des fichiers.resx. Des fichiers binaires utilisés à la compilation.Des fichiers binaires.resources utilisés à la compilation. On passe dun format à un autre avec lutilitaire : On passe dun format à un autre avec lutilitaire resgen.exe : resgen.exe en-US\Chaines.txt en-US\Chaines.en-US.resources Avec loption de on peut aussi insérer des ressources directement dans lassemblage avec du code mais ceci est déconseillé. Avec loption /resource de csc.exe on peut aussi insérer des ressources directement dans lassemblage avec du code mais ceci est déconseillé. Globalisation et assemblages satellites

26 Les assemblages26 Compiler un assemblage satellite Un assemblage satellite ne contient pas de code. Il faut le compiler avec loutil qui va construire un fichier dextension.dll contenant les métadonnées dassemblage: Un assemblage satellite ne contient pas de code. Il faut le compiler avec loutil al.exe qui va construire un fichier dextension.dll contenant les métadonnées dassemblage: 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. Lors du déploiement, les assemblages satellites doivent être dans un répertoire nommé par la culture. Avec loption de on peut aussi insérer des ressources directement dans lassemblage avec du code (et ainsi se passer des assemblages satellites) mais ceci est déconseillé. Avec loption /resource de csc.exe on peut aussi insérer des ressources directement dans lassemblage avec du code (et ainsi se passer des assemblages satellites) mais ceci est déconseillé. Globalisation et assemblages satellites

27 Les assemblages27 Exploiter les ressources Il faut utiliser la classe : 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");... Globalisation et assemblages satellites

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


Télécharger ppt "Formation universitaire à.NET: Les assemblages Formation universitaire à.NET: Les assemblages © Patrick Smacchia © Patrick Smacchia/Microsoft."

Présentations similaires


Annonces Google