Basic components of .NET platform
What are the basic
components of .NET platform?
The
basic components of .NET platform (framework) are:
Common Language Runtime
(CLR):
The most important part of the .NET Framework is the .Net
Common Language Runtime (CLR) also called .Net Runtime in short. It is a
framework layer that resides above the Operating System and handles/manages the
execution of the .NET applications. Our .Net programs don’t directly
communicate with the Operating System but through CLR
MSIL (Microsoft
Intermediate Language) Code:
When we compile our .Net Program using any .Net compliant
language like (C#, VB.NET, C++.NET) it does not get converted into the
executable binary code but to an intermediate code, called MSIL or IL in short,
understandable by CLR. MSIL is an OS and H/w independent code. When the program
needs to be executed, this MSIL or intermediate code is converted to binary
executable code, called native code. The presence of IL makes it possible the
Cross Language Relationship as all the .Net compliant languages produce the
similar standard IL code.
Just In Time Compilers
(JITers)
When
our IL compiled code needs to be executed, CLR invokes JIT compilers which
compile the IL code to native executable code (.exe or .dll) for the specific
machine and OS. JITers in many ways are different from traditional compilers as
they, as their name suggests, compile the IL to native code only when desired
e.g., when a function is called, IL of function’s body is converted to native
code; just in time of need. So, the part of code that is not used by particular
run is not converted to native code. If some IL code is converted to native
code then the next time when its needed to be used, the CLR uses the same copy
without re-compiling. So, if a program runs for sometime, then it won’t have
any just in time performance penalty. As JITers are aware of processor and OS
exactly at runtime, they can optimize the code extremely efficiently resulting
in very robust applications. Also, since JITer knows the exact current state of
executable code, they can also optimize the code by in-lining small function
calls (like replacing body of small function when its called in a loop, saving
the function call time). Although, Microsoft stated that C# and .Net are not
competing with languages like C++ in efficiency, speed of execution, JITers can
make your code even faster than C++ code in some cases when program is run over
extended period of time (like web-servers).
Framework Class Library
(FCL)
.NET
Framework provides huge set of Framework (or Base) Class Library (FCL) for
common, usual tasks. FCL contains thousands of classes to provide the access to
Windows API and common functions like String Manipulation, Common Data
Structures, IO, Streams, Threads, Security, Network Programming, Windows
Programming, Web Programming, Data Access, etc. It is simply the largest
standard library ever shipped with any development environment or programming
language. The best part of this library is they follow extremely efficient OO
design (design patterns) making their access and use very simple and
predictable. You can use the classes in FCL in your program just as you use any
other class and can even apply inheritance and polymorphism on these.
Common Language
Specification (CLS)
Earlier
we used the term ‘.NET Compliant Language’ and stated that all the .NET
compliant languages can make use of CLR and FCL. But what makes a language
‘.NET compliant language’? The answer is Common Language Specification (CLS).
Microsoft has released a small set of specification that each language should
meet to qualify as a .NET Compliant Language. As IL is a very rich language, it
is not necessary for a language to implement all the IL functionality, rather
it meets the small subset of it, CLS, to qualify as a .NET compliant language,
which is the reason why so many languages (procedural and OO) are now running
under .Net umbrella. CLS basically addresses to language design issues and lays
certain standards like there should be no global function declaration, no
pointers, no multiple inheritance and things like that. The important point to
note here is that if you keep your code within CLS boundary, your code is
guaranteed to be usable in any other .Net language.
Common Type System (CTS)
.NET
also defines a Common Type System (CTS). Like CLS, CTS is also a set of
standards. CTS defines the basic data types that IL understands. Each .NET
compliant language should map its data types to these standard data types. This
makes it possible for the 2 languages to communicate with each other by
passing/receiving parameters to/from each other. For example, CTS defines a
type Int32, an integral data type of 32 bits (4 bytes) which is mapped by C#
through int and VB.Net through its Integer data type.
Garbage Collector (GC)
CLR also contains Garbage Collector (GC) which runs in a
low-priority thread and checks for un-referenced dynamically allocated memory
space. If it finds some data that is no more referenced by any
variable/reference, it re-claims it and returns the occupied memory back to the
Operating System; so that it can be used by other programs as necessary. The
presence of standard Garbage Collector frees the programmer from keeping track
of dangling data.

Comments
Post a Comment