Dot Net Basics
Before the Existence of .Net we were developing application using VB 6 (Visual Basic),C++ etc.When we develop an Application that is a non .Net Application and compile that application using language compiler we know that an assembly gets generated which may be in .dll or .exe, This native code(.exe or .dll) is in native code(Machine code) as the operating system can understand only 0 and 1 that is the reason why compiler is used
This demerit of this application execution is that this Application code is native to only the specified operation system (The OS on which this application runs) If we try to run this on different Operating system it fails because this Machine level code (native code or object code)is native to that operating system on which it is compiled.
NOW lets see how a .Net Application Executes:
.Net supports multiple programming languages like C#,F#,VB, C++ others. If we have a compiler implemented we can use any language. When we use any of these language and develop a .net application and compile it we get an assembly (.dll or .exe) as well but this assembly does not contain native code it contains Intermediate Language(IL) this is the major difference between a .net assembly and pre .net assembly but operating systems can only understands 0’s and 1’s so if we run this IL directly over the OS it will not run that is why there needs to be some body who will convert the Intermediate language to Machine language which OS can understand and this will be done by the run time environment CLR(Common language Runtime) when .net framework is installed two most important thing get installed one is Class libraries framework and CLR.
The IL does not run directly it executes within the CLR inside the CLR we have one more important component known as JIT Compiler(Just in time Compiler) and generates native code which can be understood by the OS. So the basic advantage is Portability( that is the application will run on any operation system which has a .net framework installed).