Metadata -
When we compile code it emits IL and Metadata. Metadata is set of table which contains information of what is defined in modules(types and members) and what module references(imported types and members).
Importance of Metadata -
Removes the dependency of header and library files when compiling. It has all the information of defined types and referenced types.
Metadata field allows an object's field to be serialized into memory block, and deserialized to create the object back.
Metadata allows garbage collector to track the lifetime of objects. Garbage collector can defined the type of the object, and from metadata it can check what all other types using this object.
Metadata is also useful for CLR's code verification process.
IL(Intermediate language) - code the compiler produced as it compiles the source code.
IL is typeless, means add instruction for 32 bit and 64 bit machine will be same.
Metadata and IL both are part of modules. CLR doesn't work with module, it works with assembly.
Assembly is logical grouping of one or more modules. There are different tools available which combines modules and create assembly out of it.
Manifest - IT is another set of metadata tables which describes files that make up assembly, exported types, resources or data files associated with the assembly.
JIT- Just in Time -
Once we write any code compiler will convert that code into IL. But the IL will not directly run on machine. This IL is first compiled into machine language by .NET just in time compiler and then will run.
you can always say the first time execution of any command on any machine will take time, but once its been run, then any further use of the same method will be fast, as instead of compiling the same method again, JIT will take the machine code directly, in order to do so, it maintains some kind of dynamic cache.
Unsafe Code - Code which is allowed to directly access the memory addresses and manipulate bytes at those addresses.
obfuscator utility - IL is very high level language. It is always possible to reverse engineer the code from given IL. If we want to distribute your assembly and dont want anyone to reverse engineer it, then you can use obfuscator utility, which will scramble the names of all private symbols in your assembly's metadata.(It is also not 100% secure, because then also its possible to create source code from IL).
FCL- Framework class libraries - set of assemblies contains thousands of type definition.
CLR - Common language runtime
CTS - Common Type System. CLR is all about types. Types exposes functionality to your application and other types. CLS defines all the types that CLR can understand. It also specifies rules for type visibility and access to the member of a type.
CLS - Common language specification. Minimum set of feature that every CLR language should implement. Because of CLS different languages can talk with each other.
Managed Code can call unmanaged function - using Kernel32.dll and user32.dll, its always possible to call unmanaged component from your managed code.
Unmanaged code can use a managed type- lot many unmanaged code requires you to supply COM component for the code to work. You can always write these COM component in managed language and them use it in unmanaged code.
When we compile code it emits IL and Metadata. Metadata is set of table which contains information of what is defined in modules(types and members) and what module references(imported types and members).
Importance of Metadata -
Removes the dependency of header and library files when compiling. It has all the information of defined types and referenced types.
Metadata field allows an object's field to be serialized into memory block, and deserialized to create the object back.
Metadata allows garbage collector to track the lifetime of objects. Garbage collector can defined the type of the object, and from metadata it can check what all other types using this object.
Metadata is also useful for CLR's code verification process.
IL(Intermediate language) - code the compiler produced as it compiles the source code.
IL is typeless, means add instruction for 32 bit and 64 bit machine will be same.
Metadata and IL both are part of modules. CLR doesn't work with module, it works with assembly.
Assembly is logical grouping of one or more modules. There are different tools available which combines modules and create assembly out of it.
Manifest - IT is another set of metadata tables which describes files that make up assembly, exported types, resources or data files associated with the assembly.
JIT- Just in Time -
Once we write any code compiler will convert that code into IL. But the IL will not directly run on machine. This IL is first compiled into machine language by .NET just in time compiler and then will run.
you can always say the first time execution of any command on any machine will take time, but once its been run, then any further use of the same method will be fast, as instead of compiling the same method again, JIT will take the machine code directly, in order to do so, it maintains some kind of dynamic cache.
Unsafe Code - Code which is allowed to directly access the memory addresses and manipulate bytes at those addresses.
obfuscator utility - IL is very high level language. It is always possible to reverse engineer the code from given IL. If we want to distribute your assembly and dont want anyone to reverse engineer it, then you can use obfuscator utility, which will scramble the names of all private symbols in your assembly's metadata.(It is also not 100% secure, because then also its possible to create source code from IL).
FCL- Framework class libraries - set of assemblies contains thousands of type definition.
CLR - Common language runtime
CTS - Common Type System. CLR is all about types. Types exposes functionality to your application and other types. CLS defines all the types that CLR can understand. It also specifies rules for type visibility and access to the member of a type.
CLS - Common language specification. Minimum set of feature that every CLR language should implement. Because of CLS different languages can talk with each other.
Managed Code can call unmanaged function - using Kernel32.dll and user32.dll, its always possible to call unmanaged component from your managed code.
Unmanaged code can use a managed type- lot many unmanaged code requires you to supply COM component for the code to work. You can always write these COM component in managed language and them use it in unmanaged code.