11
.NET Framework Introduction: Metadata Ketan Bibave

NET Framework Introduction: Metadata Ketan Bibave

Embed Size (px)

Citation preview

Page 1: NET Framework Introduction: Metadata Ketan Bibave

.NET Framework Introduction:Metadata

Ketan Bibave

Page 2: NET Framework Introduction: Metadata Ketan Bibave

Overview

• What is Metadata?

• How is Metadata?

• Structure of Metadata Tables

• Functions or benefits of Metadata

Page 3: NET Framework Introduction: Metadata Ketan Bibave

What is Metadata?– The .NET Framework makes component interoperation even

easier by allowing compilers to emit additional declarative information into all modules and assemblies. This information, called metadata, helps components to interact seamlessly.

– It also known as “self-contained” type library.

– Metadata is binary information describing your program that is stored in Managed module.

– Every type and member that is defined and referenced in a module or assembly is described within metadata.

Page 4: NET Framework Introduction: Metadata Ketan Bibave

How is Metadata?• Metadata stores the following information:

– Description of the assembly.• Identity (name, version, culture, public key).• The types that are exported.• Other assemblies that this assembly depends on.• Security permissions needed to run.

– Description of types.• Name, visibility, base class, and interfaces implemented.• Members (methods, fields, properties, events, nested types).

– Attributes.• Additional descriptive elements that modify types and members.

• All Metadata in the form of tables and all table internally in the forms of hexadecimal numbers.

• Metadata is of two type – DefType (Defined)– RefType (Referenced)

• There are only 15 tables divided into above two types of tables.

Page 5: NET Framework Introduction: Metadata Ketan Bibave

• Metadata Token– A metadata token is a four-byte number.– The top byte denotes the metadata table to which a particular token

refers (method, type, and so on). The remaining three bytes specify the row in the metadata table that corresponds to the programming element being described.

– If we define a method in C# and compile it into a PE file, the following metadata token might exist in the MSIL portion of the PE file• 0x06000004

– The top byte (0x06) indicates that this is a MethodDef token. The lower three bytes (000004) tells the common language runtime to look in the fourth row of the MethodDef table for the information that describes this method definition

– Metadata also stores information in four heap structures: » string, blob, user string, and GUID. » All the strings used to name types and members are stored in the string heap. » For example, a method table does not directly store the name of a particular

method, but points to the method's name stored in the string heap.

How is Metadata?

Page 6: NET Framework Introduction: Metadata Ketan Bibave

Structure of Metadata Tables

15 Type of Table

11 Defined Type

7 Module Type 4 Assembly Type

4 Reference Type

Page 7: NET Framework Introduction: Metadata Ketan Bibave

Structure of Metadata Tables: 11 Defined Type Table

Assembly Type AssemblyDef 0x20

FileDef 0x26

ExportedTypeDef 0x27

ManifestResourceDef 0x28

Module Type ModuleDef 0x00

TypeDef 0x02

FieldDef 0x04

MethodDef 0x06

ParamDef 0x08

PropertyDef 0x17

EventDef 0x14

Page 8: NET Framework Introduction: Metadata Ketan Bibave

Reference Type AssemblyRef 0x23

ModuleRef 0x1

TypeRef 0x01

MemberRef 0x0a

Structure of Metadata Tables: 4 Reference Type Table

Page 9: NET Framework Introduction: Metadata Ketan Bibave

Functions or benefits of Metadata• Metadata allows CLR to do Type Safe Verification and hence

metadata makes AppDomain possible.• CLR uses metadata for following operations

– For object lifetime maintenance and therefore metadata is responsible to automatic garbage collection.

– For serialization, deserialization, marshalling and Remote method Invocation using Network data transfer

– CLR does Introspection and Reflection.• IDE uses metadata for intellisense feature.• Metadata eliminates the need for Interface Definition Language

(IDL) files, header files, or any external method of component reference.

• Metadata enables .NET Framework languages to describe themselves automatically in a language-neutral manner

Page 10: NET Framework Introduction: Metadata Ketan Bibave

Functions or benefits of Metadata• Self-describing files

– Common language runtime modules and assemblies are self-describing.

– Metadata automatically provides the functionality of IDL in COM, so we can use one file for both definition and implementation.

• Language interoperability and easier component-based design.– We can create an instance of any class written in any managed

language without worrying about explicit marshalling or using custom interoperability code.

• Attributes– Attributes are used to control in more detail how your program

behaves at run time. – We can emit our own custom metadata into .NET Framework files

through user-defined custom attributes.

Page 11: NET Framework Introduction: Metadata Ketan Bibave

External References

• Gokhale Sir Notes.• Metadata and Self-Describing Components• Metadata and the PE File Structure• Run-Time Use of Metadata