CHAPTER 1 THE PHILOSOPHY OF .NET
Table 1-4. Partitions of the CLI
Partitions of ECMA-335
Meaning in Life
Partition I: Concepts and
Architecture
Describes the overall architecture of the CLI, including the rules of
the CTS and CLS, and the mechanics of the .NET runtime engine.
Partition II: Metadata Definition
and Semantics
Describes the details of .NET metadata and the assembly format.
Partition III: CIL Instruction Set
Describes the syntax and semantics of CIL code.
Partition IV: Profiles and Libraries Gives a high-level overview of the minimal and complete class
libraries that must be supported by a .NET distribution.
Partition V: Debug Interchange
Format
Describes a standard way to interchange debugging information
between CLI producers and consumers.
Partition VI: Annexes
Provides a collection of odds-and-ends details such as class library
design guidelines and the implementation details of a CIL compiler.
Be aware that Partition IV (Profiles and Libraries) defines only a minimal set of namespaces that
represent the core services expected by a CLI distribution (e.g., collections, console I/O, file I/O,
threading, reflection, network access, core security needs, XML data manipulation). The CLI does not
define namespaces that facilitate web development (ASP.NET), database access (ADO.NET), or desktop
graphical user interface (GUI) application development (Windows Presentation Foundation or Windows
Forms).
The good news, however, is that the mainstream .NET distributions extend the CLI libraries with
Microsoft-compatible equivalents of ASP.NET implementations and ADO.NET implementations (and so
on) in order to provide full-featured, production-level development platforms. To date, there are two
major implementations of the CLI (beyond Microsoft’s Windows-specific offering). Although this text
focuses on the creation of .NET applications using Microsoft’s .NET distribution, Table 1-5 provides
information regarding the Mono and Portable .NET projects.
Table 1-5. Open Source .NET Distributions
32
Distribution
Meaning in Life
www.mono-project.com
The Mono project is an open source distribution of the CLI that
targets various Linux distributions (e.g., SuSe, Fedora), Mac OS X, iOS
devices (iPad, iPhone), Android devices, and (surprise!) Windows.
www.dotgnu.org
Portable.NET is another open source distribution of the CLI that runs
on numerous operating systems. Portable.NET aims to target as many
operating systems as possible (e.g., Windows, AIX, Mac OS X, Solaris,
all major Linux distributions).