A .net framework architecture is basically divided into three layers.
The First Layer
It is composed of High Level Languages. Here all the languages of .net framework reside as C#, VB, F#, Java Script etc. More than 70 languages are present in .net framework, that is why it is a cross-language-platform.
The Second Layer
This is where the code from any language and all languages of .net is converted to intermediate language code (IL). This is a code which is least readable by humans and which is then further converted to machine code (eg: assembly language code) by CLR. To convert the high level language code to assembly code three components are present in this second layer as follows,
- CLS (common language specification)
It consists of all the rules that satisfy all language compilers targeting CLR. This makes sure to produce a code that can be hosted by CLR.
- CTS (common type system)
It consists of and describes all the data types to be used by all the .net languages.
- FCL (Framework class library)
It is also known as BCL (base class library). It is common for all the .net languages and applications. It provides classes and functions to be used in all .net languages and applications.
Now in this layer the code is converted to intermediate language (IL) code. This code will now go to the third layer.
The Third Layer
The third layer consists of CLR (Common Language Runtime) or JIT (Just In Time) compiler. The code which runs here is known as the managed code. Programs running under CLR are provided memory management and thread management by CLR. Here the CLR /JIT will convert the (IL) intermediate language code to machine code which will be then executed by the hardware.