The Microsoft .NET Framework consists of a library of classes called the Framework Class
Library
(FCL) and a Common Language Runtime (CLR) that provides a managed code execution
environment
with features such as just-in-time compilation, type verification, garbage
collection,
and code access security. By offering these features, the CLR provides a development
environment
that improves programmer productivity and reduces common programming
errors.
For an excellent description of the .NET Framework and its core architecture, see CLR via
C#, Third Edition by Jeffrey Richter (Microsoft Press, 2010).
The CLR is implemented as a classic COM server whose code resides in a standard user-
mode
Windows DLL. In fact, all components of the .NET Framework are implemented as standard
user-mode Windows DLLs layered over unmanaged Windows API functions. (None of the
.NET Framework runs in kernel mode.)
Figure 1-1 illustrates the relationship between these components: