Game Development Reference
bridging this domain gap, it just wasn't the answer. This is one of the main reasons
Microsoft proposed .NET, a new computing platform that simplifies application
development in highly distributed environments.
Overview of .NET
There are two main components to Microsoft .NET: the Common Language
Runtime and the .NET Class Framework. Microsoft.NET is based around the idea
that code is in a managed environment; that is, it executes within a managed runtime
(known as the Common Language Runtime , or CLR for short). The CLR acts as a
barrier between managed applications (.NET) and the operating system. The CLR
also offers a much richer set of services than normally provided by the operating
system. The Common Language Runtime architecture is overviewed in Figure 2.1.
Figure 2.1 Overview of the Common Language Runtime architecture.
The Common Language Runtime manages code at execution time, providing core
services such as memory management, thread management, and remoting. The CLR
also enforces strict type safety and other forms of code accuracy that ensure secu-
rity and robustness.
In order to have a language-independent CLR, a liaison is needed to facilitate the
understanding of the language in the CLR. Every development tool for .NET com-
piles source code files to what is known as the Microsoft Intermediate Language,
(MSIL, or IL for short), as shown in Figure 2.2.
All development tools produce the same MSIL regardless of the programming lan-
guage, so all the CLR is required to do is understand the IL. Microsoft currently
provides CLR-compliant versions of C#, Visual Basic, C++, JScript, and Java. Since
any company can write a CLR-compliant language, third parties are introducing
many others like COBOL, Delphi, Python, APL, and Perl.