MONO introduce 摘錄

以下部分摘自:http://www.mono-project.com/FAQ:_General,一切版權均屬於原作者及其授權協議。

What is Mono™ exactly?

The Mono Project is an open development initiative sponsored by Novell to develop an open source, UNIX version of the Microsoft .NET development platform. Its objective is to enable UNIX developers to build and deploy cross-platform .NET Applications. The project implements various technologies developed by Microsoft that have now been submitted to the ECMA for standardization.

The Mono Project has also sparked a lot of interest in developing C#-based components, libraries and frameworks. The most important ones, some of which were developed by the Mono team, are:

  • Gtk# (http://gtk-sharp.sf.net): Bindings for the popular Gtk+ GUI toolkit for UNIX and Windows systems. Other bindings are available: Diacanvas-Sharp and MrProject.
  • #ZipLib (http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx): A library to manipulate various kinds of compressed files and archives (Zip and tar).
  • Mono.Directory.LDAP / Novell.Directory.LDAP: LDAP access for .NET apps.
  • Mono.Data: We ship support for PostgreSQL, MySQL, Firebird, Sybase ASE, IBM DB2, SQLite, Microsoft SQL Server, Oracle, and ODBC data sources.
  • Mono.Cairo: Bindings for the Cairo (http://www.cairographics.org) rendering engine (Our System.Drawing is implemented on top of this).
  • Mono.Posix / Mono.UNIX: Bindings for building POSIX applications using C#.
  • Mono.Remoting.Channels.Unix: Unix socket based remoting
  • Mono.Security: Enhanced security and crypto framework
  • Mono.Math: BigInteger and Prime number generation
  • Mono.Http: Support for creating custom, embedded HTTP servers and common HTTP handlers for your applications.
  • Mono.XML: Extended support for XML
  • Managed.Windows.Forms (aka System.Windows.Forms): A complete and cross platform, System.Drawing based Winforms implementation.
  • Remoting.CORBA (http://remoting-corba.sourceforge.net/): A CORBA implementation for Mono.
  • Ginzu: An implementation on top of Remoting for the ICE (http://www.zeroc.com) stack

For a more complete list, see the Libraries and Software pages.

What is the difference between Mono and the .NET Initiative?

The ".NET Initiative" is a somewhat nebulous company-wide effort by Microsoft, one part of which is a cross-platform development framework. Mono is an implementation of the development framework, but not an implementation of anything else related to the .NET Initiative, such as Passport or software-as-a-service.

What technologies are included in Mono?

Mono contains a number of components useful for building new software:

  • A Common Language Infrastructure (CLI) virtual machine that contains a class loader, Just-in-time compiler, and a garbage collecting runtime.
  • A class library that can work with any language which works on the CLR. Both .NET compatible class libraries as well as Mono-provided class libraries are included.
  • A compiler for the C# language. In the future we might work on other compilers that target the Common Language Runtime.

Windows has compilers that target the virtual machine from a number of languages: (http://msdn.microsoft.com/net/thirdparty/default.asp#lang) Managed C++, Java Script, Eiffel, Component Pascal, APL, Cobol, Perl, Python, Scheme, Smalltalk, Standard ML, Haskell, Mercury and Oberon.

The CLR and the Common Type System (CTS) enables applications and libraries to be written in a collection of different languages that target the byte code This means for example that if you define a class to do algebraic manipulation in C#, that class can be reused from any other language that supports the CLI. You could create a class in C#, subclass it in C++ and instantiate it in an Eiffel program. A single object system, threading system, class libraries, and garbage collection system can be shared across all these languages.

How is Mono related to GNOME?

In a number of ways. This project was born out of the need of providing improved tools for the GNOME community, and will use existing components that have been developed for GNOME when they are available. Mono team members work actively on the Gtk# (http://www.mono-project.com/GtkSharp) project: a binding of the GNOME class libraries for .NET and Mono.

Is there any way how to connect DataAdapter to some Gtk# controls?

There is a sample file called "DbClient" in gtk-sharp/samples that you might to look at. It is a sample program in Gtk# that adds/updates/deletes information on a PostgreSQL database. When we have the new table/tree widgets, I am sure someone would write an adapter for System.Data (in Gtk2 the tree/list widgets are written using a view/model, so you only need to write a model that maps to the database). You can have a look at gtk-sharp/sample/DbClient, where there is a Gtk# application that uses System.Data. It does not use DataAdapter, but DataReader though.


http://www.mono-project.com/Mono_Rationale

http://www.mono-project.com/Roadmap

http://www.mono-project.com/Gui_Toolkits

http://www.mono-project.com/FAQ:_Winforms


以下摘自:http://www.mono-project.com/Gui_Toolkits

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 changed to work on Mono.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章