The .NET Framework provides a new platform for building applications that are easily
deployed and executed across multiple architectures and operating systems. This portability
is achievable only because of ongoing standardization through the ECMA and ISO
organizations. In this way, the framework offers independence to languages by supplying
an international standard called the Common Language Infrastructure (CLI).
The framework was designed to be installed on top of an operating system and
is divided into two main layers, as shown in Figure 1.1: a runtime environment called
the Common Language Runtime (CLR), similar to the Java Virtual Machine, and a large
library of classes called the Framework Class Library (FCL), which provides the required
services for modern applications.
Applications Development Tools for C#, J#, C++, VB, …
The bottom layer of the .NET Framework contains the CLR. The CLR provides the
runtime services to execute C# programs that have been translated into the CIL. The top
layer encapsulates all services in the FCL for user interface, control, security, data access,
Extensible Markup Language (XML), input/output, threading, and so on. User interface
(UI) services—both Window and Web Forms—support graphic interfaces and server-side
controls, respectively. ASP.NET provides control, security, sessioning, and configuration
for dynamic web pages. Data access by ADO.NET adds XML as an intermediate format for
data and supports connections to datasets using XML caches. The FCL also contains system
classes to manage I/O, execution threads, serialization, reflection, networking, collections,
diagnostics, debugging, and so on.
Applications and development tools are typically layered on top of the .NET Framework.
Visual Studio .NET, in particular, is a good example. It provides an integrated development
environment (IDE) that standardizes support for many programming languages,
including C#, J#, C++, and Visual Basic.
After the standardization of the C# and CLI specifications in December 2001,
Microsoft released the CLR as both a commercial implementation of the CLI runtime
virtual machine and a subset of the FCL. Since then, C# has become the programming
language of choice for developing applications in the .NET Framework. CLR, FCL, and the
C# compiler are all released as part of the .NET Framework Software Development Kit
(SDK), which is freely available from Microsoft at http://msdn.microsoft.com. At the time
of this writing, there are other .NET implementations in progress, such as the open-source
Mono and DotGNU projects. All these implementations include a C# compiler that extends
language availability to platforms other than Windows.
The C# code executed on this framework follows object-oriented development practices
defined by the Common Language Specification (CLS). The CLS defines a collaboration
standard between languages and object development practices. Obviously, some older
traditional programming languages, such as COBOL and Fortran, cannot exploit the full
characteristics offered by the CLS. The Common Type System (CTS) of the .NET Framework
represents a standardized set of basic data types that permit language interoperability.
In other words, the CTS defines the rules implemented in the CLR. The CLS supports
a (common) subset of the CTS in order to allow cross-language integration. Therefore,
a CLS-compliant component can be used by applications written in other languages.