Assembly - PowerPoint PPT Presentation

1 / 35
About This Presentation
Title:

Assembly

Description:

Section 2: Concepts and Elements. Section 3: Assemblies at Buildtime ... Cache viewer as shell extension (shfusion.dll) Snap-In for Management Console (mscorcfg.msc) ... – PowerPoint PPT presentation

Number of Views:58
Avg rating:3.0/5.0
Slides: 36
Provided by: achimo
Category:
Tags: assembly

less

Transcript and Presenter's Notes

Title: Assembly


1
Assembly
  • Where it all gets physical

2
Objectives
  • Introduce concepts of assemblies
  • Discuss elements of assemblies
  • Show how to build assemblies
  • Runtime aspects

3
Contents
  • Section 1 Overview
  • Section 2 Concepts and Elements
  • Section 3 Assemblies at Buildtime
  • Section 4 Assemblies at Runtime

4
Section 1 Overview
  • Versioning and DLL conflicts must be resolved
  • Windows 2000 partially fixed DLL conflicts
  • New shared version still replaces the old
  • Physical units instead of logical
  • Easy installation/deinstallation procedures
    required
  • xcopy installation
  • Just delete the files!

5
Whats an Assembly
  • Runtime executable code IL
  • Single point of entry
  • Fundamental unit
  • Version control
  • Reuse
  • Scoping
  • Identity
  • Security permissions
  • Runtime metadata

6
Static and Dynamic Assemblies
  • Static
  • Generated by compilers
  • Loaded from disk or downloaded from the net
  • Dynamic
  • Built "on-the-fly"
  • From scripts or via Reflection.Emit
  • Can be transient

7
Assembly vs. Module
  • Module is compiled unit
  • Modules contain types and global methods
  • Assemblies contain modules
  • An assembly consists of modules and resources
  • Assembly manifest references files

8
Dependencies
  • Viewed as collection of exported resources
  • Independent of implementation
  • Assembly may depend on other assemblies
  • May import any public resource of other assembly
  • Types
  • Resource files
  • Etc.
  • Dependencies are recorded in the manifest
  • Resolved at runtime no static linking

9
Type Referencing
External Refs
Module1
ref null, TypeA, module1
ref null, TypeB, module2
AssemblyB
ref AssemblyB, TypeC, module3
AssemblyA
10
Assembly vs. Namespace
  • Namespaces are used to group names
  • Assemblies can contain several namespaces
  • Namespaces can be partitioned across assemblies
  • Types implemented twice are different!
  • Both must be included into project independently
  • Namespaces are imported in the source code
  • Assemblies are referenced by compiler switch

using System.Runtime.Remoting.Services
csc /rSystem.Runtime.Remoting.DLL ...
11
Section 2 Concepts and Elements
  • Elements of an assembly
  • Manifest
  • Versioning
  • Security
  • Physical representation
  • What's in it's name

12
Manifest Standard Elements
  • Manifest is table with info records
  • Manifest contains info about
  • Assembly name
  • Version information
  • Strong name information
  • Culture information
  • Processor and OS
  • Files that make up this assembly
  • References to types and resources
  • Exported and local types

13
Manifest Custom Elements
  • AssemblyCompany
  • AssemblyConfiguration
  • AssemblyCopyright
  • AssemblyDefaultAlias
  • AssemblyDescription
  • AssemblyInformationalVersion
  • AssemblyProduct
  • AssemblyTitle
  • AssemblyTrademark

14
Multi-File Assemblies
  • Association based on metadata within assembly
  • Not linked by the file system

Module1
Module2
Graph
Assembly Manifest
Module Manifest
Assembly.exe
Module2.dll
Graph.jpg
15
Versioning
  • Manifest carries version information
  • Compatibility version
  • Major, minor, build, revision 2.1.1254.0
  • Informational version
  • String stored in AssemblyInformationalVersion
  • References to other assemblies carry version info

16
Side-by-side execution
  • Run different versions simultaneously
  • Per machine
  • Or even per process
  • Requires special coding considerations
  • Issues with dependencies on machine resources
  • Process-wide resources

17
Security Considerations
  • Integrity of files is guaranteed by hash
    verification
  • Assembly carries permission requests
  • Security policy is applied to requests at load
    time
  • AuthentiCode digital signing
  • Strong names

18
Strong Names
  • Simple name accompanied by
  • Public key
  • Digital signature
  • Generated from assembly and private key
  • Prevent others from taking over your namespace
  • Protect version lineage
  • Assemblies with same strong name are identical
  • Versioning only works with strong named assemblies

19
Strong Name Utility
  • sn.exe provides options for
  • Signature generation
  • Generate public/private key pair
  • Key management
  • Signature verification
  • Setting Cryptographic Service Provider (CSP)

sn k keyFile.snk
20
Assigning a Strong Name
  • Need to have a public-private key pair
  • Using attributes
  • Using al (assembly linker)

assemblyAssemblyKeyFile("sgKey.snk")
assemblyAssemblyKeyName("AContainer")
al myModule.dll /keyfilesgKey.snk ...
21
Delaying Strong Name Assignment
  • Access to private key might be restricted
  • Delayed (or partial) signing reserves space in
    file
  • Actual signing is deferred
  • Process works as follows
  • Developer works with public key file only
  • Verification must be switched off
  • Full signing must be applied later

assemblyAssemblyKeyFile(pubKey.snk")
assemblyAssemblyDelaySign(true)
sn Vr myAssembly.dll
sn R myAssembly.dll fullKey.snk
22
Using Strong Named Assemblies
  • Consumer of strong named assembly uses token
  • Token is portion of public key
  • Runtime verifies strong name signature
  • Referencing usually transparent
  • Compiler inserts token of referenced assembly
  • Dynamic loading requires explicit notion

gt sn t myDll.DLL Assembly.Load(myDll,Version1.
0.0.1,Cultureneutral,PublicKeyToken9b35aa32c18
d4fb1)
23
Section 3 More Tools and Deployment
  • Assembler ilasm
  • Disassembler ildasm
  • Global Assembly Cache
  • Installation

24
Assembler ilasm
  • "Assembles" IL streams into loadable files
  • Generates the metadata
  • Output can be disassembled by ildasm
  • No optimizations made

25
Dis-Assembly ildasm
  • "Disassembles" assemblies (or modules) into IL
  • Output can be reassembled by ilasm
  • GUI for examining an assembly
  • Manifest
  • Metadata
  • IL code

26
Global Assembly Cache Advantages
  • Using the GAC has advantages
  • Performance improvements
  • Integrity checking
  • File security
  • Versioning
  • Automatic pickup of Quick Fixes
  • Additional search location

27
Installation
  • Private vs. shared assemblies
  • Private assemblies deployed in local directory
  • Shared assemblies stored in Global Assembly Cache
  • Cache viewer as shell extension (shfusion.dll)
  • Snap-In for Management Console (mscorcfg.msc)

gacutil i myAssembly.DLL
28
Section 4 Assemblies at Runtime
  • Loading an assembly
  • Concept of Application Domain
  • JITting an assembly
  • PreJITting an assembly

29
Loading an Assembly
  • Assembly is Portable Executable (PE) file ...
  • ... with CLR related information added
  • Runtime aware environment loads assembly directly
  • Unaware operating system loads assembly as PE
  • Entry point stub that loads and calls CLR
  • CLR examines addtional header information

30
Application Domain
  • Concept for application isolation
  • Provide isolation at lower cost than processes
  • AppDomains are created by the runtime host
  • AppDomain is created for each application
  • Direct references between AppDomains disallowed
  • Requires proxies or copied objects

31
Loader Optimization
  • Assembly is SingleDomain by default
  • Each AppDomain loads and compiles assembly
  • Assembly can be marked for MultiDomain use
  • Assembly is compiled once
  • Mapped into all referencing AppDomains
  • A copy is available for each process
  • References to static data is indirected
  • Assembly is unloaded when process ends
  • MultiDomainHost
  • Copy of code is hosted in each AppDomain

32
Just-In-Time Compilation
  • MSIL is made for compilation
  • Needs some per-method analysis
  • Code is compiled when needed
  • Compilation on a per-method base
  • Code that is not called is not compiled
  • Loader creates stub for each method
  • First step Verification of type safety
  • JITted code is not persisted

33
PreJITting with ngen
  • Complete compile at installation time
  • PreJITted assembly is installed in GAC
  • Speeds up loading time significantly
  • Both IL and native image are loaded
  • No verification needed
  • Native image is not used...
  • ...When module version ID of IL is different
  • ...If the same applies to any dependencies
  • ...Assembly binding policy has changed
  • Fallback to normal JIT process

34
Summary
  • Assemblies as logical DLLs
  • Anatomy of an assembly
  • Units of versioning
  • Strong names
  • Installation in Global Assembly Cache
  • Loading and Compiling

35
Questions?
Write a Comment
User Comments (0)
About PowerShow.com