Free mag vol1 | Page 100

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).