У Mono есть несколько функций, которых нет у .NET.
Mono очень модульный. Вы можете разбить его на мелкие кусочки и развернуть точно те части, которые вам нужны. Не хотите System.Xml? Хорошо, это ушло.
Mono является встраиваемым. Вы можете разместить его в своем приложении C / C ++, чтобы позволить пользователям создавать сценарии из безопасной управляемой изолированной среды. Самым известным примером этого является mod_mono, который размещает Mono внутри веб-сервера Apache и, например, как ASP.NET реализован в Mono. Эта функция прекрасно сочетается с упомянутой выше модульностью.
Это уже упоминалось: статическое связывание. Также отлично сочетается с модуляризацией.
Компилятор как сервис - еще один. Андерс Хейлсберг говорил об этом в течение длинного времени, и возможно , просто возможно, он будет готов к C # 5.0. Ну, у Моно это уже есть, и оно было у него годами.
Мигель де Иказа, ведущий разработчик Mono, также имеет инициативу, которую он называет «Embrace and Extend.NET», которая расширяет CLI способами, которые (в настоящее время) невозможны для других реализаций CLI (включая .NET). Пока что Embrace и Extend.NET имеют три функции.
Mono.Simd, который обеспечивает безопасный и контролируемый доступ к инструкциям SIMD базового ЦП (например, SSE на Intel или AltiVec на PowerPC). Используется для игр и графики.
64 Индексы массива битов, которые разрешены спецификацией ECMA, но Mono - единственная виртуальная машина, которая фактически предоставляет их. Используется в суперкомпьютерах.
И совсем недавно, продолжения. Фактически это первый раз, когда Mono выходит за рамки спецификации: индексы длинных массивов полностью соответствуют спецификации, а Mono.Simd также работает с каждой реализацией, совместимой с CLI (хотя очень SLOW), но Mono.Tasklet нуждается в особой поддержке со стороны виртуальной машины, которая не является частью CLI или .NET. Это используется для игровой логики и, например, во Второй Жизни.