Mono - это проект с открытым исходным кодом, направленный на внедрение.NET-совместимой технологии в мир открытого исходного кода. Эта технология включает в себя компилятор C# и Common Language Runtime.

Mono можно использовать для запуска приложений Microsoft .NET на платформах не от Microsoft. У него есть дополнительная цель - создать лучшую среду разработки для разработчиков программного обеспечения Linux.

Mono состоит из трех групп компонентов:

  1. Основные компоненты

  2. Моно /Linux/GNOME стек разработки

  3. Стек совместимости Microsoft

Основные компоненты включают компилятор C#, виртуальную машину для инфраструктуры общего языка и библиотеки базовых классов. Эти компоненты основаны на стандартах Ecma-334 и Ecma-335, что позволяет Mono предоставлять совместимую со стандартами бесплатную виртуальную машину с открытым исходным кодом CLI. Microsoft выпустила заявление, которое охватывает оба стандарта в рамках их лицензии Community Promise.

Стек разработки Mono/Linux/GNOME предоставляет инструменты для разработки приложений с использованием существующих библиотек GNOME, Free и Open Source. К ним относятся: Gtk# для разработки GUI, библиотеки Mozilla для работы с механизмом рендеринга Gecko, библиотеки интеграции Unix (Mono.Posix), библиотеки подключения к базам данных, стек безопасности и язык XML-схем RelaxNG. Gtk# позволяет приложениям Mono интегрироваться в рабочий стол Gnome как собственные приложения. Библиотеки баз данных обеспечивают связь с объектно-реляционной базой данных db4o, Firebird, Microsoft SQL Server (MSSQL), MySQL, Open Database Connectivity (ODBC), Oracle, PostgreSQL, SQLite и многими другими. Проект Mono отслеживает разработку компонентов базы данных на своем веб-сайте.

Стек совместимости Microsoft обеспечивает путь для переноса приложений Windows .NET в GNU/Linux. В эту группу компонентов входят ADO.NET, ASP.NET и Windows.Forms и другие. Поскольку эти компоненты не охвачены стандартами Ecma, некоторые из них по-прежнему подвержены патентным опасениям и опасениям.

Источник.