Mono: Mono is an open-source implementation of the .NET Framework and is cross platform. Mono is Sponsored by Xamarin. It is based on ECMA standards for C#. The core Mono environment is the basis of the Mono platform and additional components offer enchanced functionality like Window forms, Threading etc.

There are several components that make up Core Mono envionment are:

The Common Language Runtime(CLR): The CLR environment is also referred to as a managed environment, in which common services, such as garbage collection and security, are automatically provided. This provides an implementation of the CLR through an executable that invokes your .NET application with in the CLR environment.

GNOME, Mono, or Unix Libraries:The .NET Framework provides its own API called Windows Forms, which has been developed entirely using the .NET Framework and associated class libraries. This enables interoperability between any implementation of the CLI, so the same code will run the same on Microsoft's .NET implementation, on Mono's .NET implementation, and so on. One such example is the GNOME toolkit called Gtk#, which provides a set of C# bindings that can be used to develop GNOME-based applications. GtK+ is an Open Source, Free software designed specially for implementing user interfaces on a number of platforms like windows, linux etc.

.NET Class library Implementation: The Mono environment also includes a set of libraries that constitute the .NET class library implementation, which is the Mono implementation of the .NET class library. The .NET class library allow the developers to create Web Services, Web forms, window forms and build stand-alone components.

C# Compiler: The C# compiler is the core part of the Mono development environment. It produces executable (.exe) files, dynamic-link libraries (.dll), or code modules (.netmodule).

Assemblers and Disassemblers for IL: The IL disassembler and assembler form a toolset for serializing and deserializing managed PE files. The IL disassembler tool ILDASM.EXE is distributed with the .NET framework SDK. They form a perfectly complementary pair and the output of the IL disassembler can be fed to the IL assembler. The disassembler provides numerous viewing options that allow you to control the disassembly presentation. The IL assembler can define vtables and fixups. The data section of an image file generated by the class is a read/write section. The text section is emitted by the IL aasembler.


Additional components are:

Untitled-1.1.gif


Figure 1.1: view of the Mono components