CatLogo
Recent Posts
ASP.NET Model View Controller-(MVC) Framework
Windows Communication Foundation (WCF)
The Top 10 Open-Source Customer Relationship Management Solutions
ASP.NET 3.5 LINQ (Language-Integrated Query)
Search Engine Optimization (SEO) - Targeted Website Traffic, Earning Money, gett
10 Important Tips for a fast loading Web Site
cat Archives
July 2010 (1)
June 2010 (1)
May 2010 (2)
April 2010 (2)
March 2010 (1)
February 2010 (2)
January 2010 (1)
December 2009 (1)
November 2009 (1)
October 2009 (1)
September 2009 (1)
July 2009 (2)
June 2009 (8)
May 2009 (5)
April 2009 (1)
March 2009 (3)
February 2009 (3)
January 2009 (4)
December 2008 (1)
November 2008 (5)
October 2008 (3)
September 2008 (4)
August 2008 (4)
July 2008 (1)
June 2008 (1)
IP,Trademarks,Copyrights and Domains Aggressively Protected by DNattorney.com
Copyright© 2000-2010. All rights
reserved CATT Technologies Ltd.
infocat@cattechnologies.com

Mono – the platform independent .NET

Mono is a software platform designed to allow developers to easily create cross platform applications. It is an open source implementation of Microsoft's .Net Framework based on the ECMA standards for C# and the Common Language Runtime. We feel that by embracing a successful, standardized software platform, we can lower the barriers to producing great applications for Linux. Mono can be run on Linux, BSD, UNIX, Mac OS X, Solaris and Windows operating systems.

The Mono runtime contains a just-in-time compilation (JIT) engine for a number of processors: x86, SPARC, PowerPC, ARM, S390 (in 32-bit and 64-bit mode), and x86_64, IA64 and SPARC for 64-bit modes. The runtime will perform a just-in-time compilation to the machine's native code which is cached as the application runs. It is also possible to pre-cache the native image before execution. For other supported systems not listed, an interpreter performs each byte code one by one without compiling the image to native code. In almost every condition the JIT method will outperform the interpreted method.

The Building blocks of Mono

There are several components that make up Mono:

C# Compiler - The C# compiler is feature complete for compiling C# 1.0 and 2.0 (ECMA), and also contains many of the C# 3.0 features, especially LINQ.

Mono Runtime - The runtime implements the ECMA Common Language Infrastructure (CLI). The runtime provides a Just-in-Time (JIT) compiler, an Ahead-of-Time compiler (AOT), a library loader, the garbage collector, a threading system and interoperability functionality.

Base Class Library - The Mono platform provides a comprehensive set of classes that provide a solid foundation to build applications on. These classes are compatible with Microsoft's .Net Framework classes.  Examples of libraries are mscorlib.dll, System.dll, System.Data.dll, System.Web.dll etc.

Mono Class Library - Mono also provides many classes that go above and beyond the Base Class Library provided by Microsoft. These provide additional functionality that is useful, especially in building Linux applications. Some examples are classes for Gtk+, Zip files, LDAP, OpenGL, Cairo, POSIX, etc.

Running ASP.NET in Mono

Mono has full support for ASP.NET 2.0. You can write a fully fledged ASP.NET 2.0 web application in mono with ASP.NET web forms and web services. Mod_Mono is an Apache 1.3/2.0/2.2 module that provides ASP.NET support for the web's favorite server, Apache (http://httpd.apache.org).

The module passes off requests for ASP.NET pages to an external program, mod-mono-server, which actually handles the requests. The communication between the Apache module and mod-mono-server is established using a UNIX socket or a TCP socket.

Windows Forms Applications in Mono

Windows.Forms is a binding developed by Microsoft to the Win32 toolkit. As a popular toolkit used by millions of Windows developers (especially for internal enterprise applications), the Mono project decided to produce a compatible implementation (Winforms) to allow these developers to easily port their applications to run on Linux and other Mono platforms.

Whereas the .Net implementation is a binding to the Win32 toolkit, the Mono implementation is written in C# to allow it to work on multiple platforms. Most of the Windows.Forms API will work on Mono, however some applications (and especially third party controls) occasionally bypass the API and P/Invoke straight to the Win32 API. These calls will likely have to change to work on Mono.

Other GUI toolkits in Mono

Unlike Microsoft .NET mono does supports more than one GUI toolkit. A small description of that is given bellow.

Gtk#

GTK# is a .NET binding for the Gtk+ toolkit. The toolkit is written in C for speed and compatibility, while the GTK# binding provides an easy to use, object oriented API for managed use. It is in active development by the Mono project, and there are various real-world applications available that use it (Banshee (http://banshee-project.org/Main_Page), F-Spot (http://f-spot.org/Main_Page), Beagle (http://beagle-project.org/Main_Page), MonoDevelop (http://www.monodevelop.com/Main_Page)).

Qyoto

The Qyoto/Kimono languages bindings allow C# and any other .NET language to be used to write Qt/KDE programs. The bindings are auto generated directly from the Qt/KDE headers, greatly reducing the maintenance effort. KDE doxygen comments are automatically converted to the xml based C# style of comment format.

Cocoa#

CocoaSharp is aimed at .Net/Mono developers that want to allow their users to have a native Mac OS X application experience. CocoaSharp allows developers to call Cocoa APIs in native C# code.

wxNet

wxNet is a .NET binding for the wxWindows cross-platform toolkit.

MonoDevelop - the Mono IDE

MonoDevelop is an open source integrated development environment for the Linux platform, primarily targeted for the development of software that uses both the Mono and Microsoft .NET framework. MonoDevelop integrates features similar to that of Eclipse and Microsoft's Visual Studio such as Intellisense, source control integration, and an integrated GUI and Web designer. MonoDevelop integrates a GTK# GUI designer called Stetic. It currently has language support for C#, Java, Boo, Nemerle, Visual Basic.NET, CIL, C and C++.

In late 2003, a few developers from the Mono community began migrating SharpDevelop, a successful .NET open source IDE from System.Windows.Forms on Windows to Gtk# on Linux. Being an early fork of SharpDevelop, MonoDevelop has very little in common architecturally from recent SharpDevelop releases.

Over time, the MonoDevelop project was absorbed into the rest of the Mono project and is actively maintained by Novell and the Mono community. Since Mono 1.0 Beta 2, MonoDevelop is bundled with Mono releases.

Little dive into the history of Mono

Miguel de Icaza became interested in .NET technology as soon as the .NET documents came out in December 2000. After looking at the byte code interpreter, he realized that there were no specifications for the metadata. In February 2001 de Icaza asked for the missing information on the metadata file format in the .NET mailing lists and at the same time started to work on a C# compiler written in C#, as an exercise in C#. In April 2001 ECMA published the missing file format, and at GUADEC (April 6 – April 8, 2001) de Icaza demonstrated the features of his compiler (which by then was able to parse itself).

Internally at Ximian there was much discussion about building tools to increase productivity: making it possible to create more applications in less time and therefore reduce time and cost of development. After a feasibility study, which clearly stated that it was possible to build the technology, Ximian reassigned staff from other projects and created the Mono team. Lacking the resources to build a full .NET replacement on their own, they formed the Mono open source project, which was announced on July 19, 2001 at the O'Reilly conference.

Almost three years later, on June 30, 2004 Mono 1.0 was released.

The logo of Mono features a monkey, mono being the Spanish word for monkey. The name relates to the monkeys and apes that are a central theme within Ximian, such as the GNOME Project foot, the Bonobo project (a OLE/COM like library used in GNOME created by Ximian) which is a species of ape related to chimpanzees and humans, the Novell Evolution (formerly Ximian Evolution) Project, and the Ximian logo itself. The Mono FAQ claims that the origin of the name is "We like monkeys." For what it may be worth, "Ximian" is near-homophone of simian.

Current status and roadmap

Mono's current version is 2.0 (as of October 6, 2008). This version provides the core API of the .NET Framework as well as support for Visual Basic.NET and C# versions 2.0 and (partially) 3.0. LINQ to objects and XML is part of the distribution, but not LINQ to SQL. C# 3.0 is now the default mode of operation for the C# compiler. Windows Forms 2.0 is also now supported.

Implementation of .NET Framework 3.0 is under development under an experimental Mono subproject called Olive, but the availability of a Mono framework supporting .NET 3.0 is still not planned yet.

An open source implementation of Silverlight, called Moonlight, is now underway and is included since Mono 1.9. The Silverlight .NET implementation is currently still a work in progress, a Silverlight 1.0 compatible Beta version being planned for end of 2008, and an alpha version for Silverlight 2.0 for June 2009.

Mono has all the core features of the .net and can run all the basic web applications or desktop applications. As mono is a true cross platform implementation of .NET it can now create applications in Windows and can deploy them in Linux.

Posted by: Anirban Ganguly

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)
Name:
Email Address:
Url:
Comments:
  catOpinions