В чем смысл Mono в Windows

Это может быть глупый вопрос … но я только что изучал проект Mono, и у них есть раздел об установке Mono в Windows. Но, поскольку в Windows, очевидно, уже есть среда выполнения .NET, может ли кто-нибудь сказать мне, в чем именно смысл использования Mono для Windows? Помогает ли это в кроссплатформенной разработке или что-то в этом роде?


Поскольку Mono не реализует .Net на 100% так же, как MS .Net Framework, хорошо, что вы можете протестировать на Mono без необходимости запускать Linux. Также Mono имеет привязки для создания форм с помощью GTK, которые MS не поддерживает.


67

У Mono есть несколько функций, которых нет в .NET.

Mono очень модульный. Вы можете разбить его на крошечные кусочки и развернуть точно только те части, которые вам нужны. Не хотите System.Xml? Хорошо, его больше нет.

Mono можно встраивать. Вы можете разместить его в своем приложении C/C ++, чтобы пользователи могли создавать для него сценарии из безопасной управляемой изолированной среды. Самый известный пример этого — mod_mono, который размещает Mono на веб-сервере Apache, и это то, как, например, ASP.NET реализован в Mono. Эта функция отлично сочетается с упомянутой выше модуляризацией.

Об этом уже упоминалось: статическое связывание. Также отлично сочетается с модуляризацией.

Compiler as a Service — еще один. Андерс Хейлсберг говорил об этом в течение давно времени, и возможно , просто возможно, он будет готов для C # 5.0. Что ж, у Mono он уже есть, и на самом деле он был в течение многих лет.

Мигель де Икаса, ведущий разработчик 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. Это используется для игровой логики и, например, в Second Life.

Улучшите этот ответ
ответил 16 апр., 23:04
добавить комментарий |

У Mono есть несколько функций, которых нет в .NET.

Mono очень модульный. . Вы можете разбить его на крошечные кусочки и развернуть точно только те части, которые вам нужны. Не хотите System.Xml? Хорошо, его больше нет.

Mono можно встраивать. Вы можете разместить его в своем приложении C/C ++, чтобы пользователи могли создавать для него сценарии из безопасной управляемой изолированной среды. Самый известный пример этого — mod_mono, который размещает Mono на веб-сервере Apache, и это то, как, например, ASP.NET реализован в Mono. Эта функция отлично сочетается с упомянутой выше модуляризацией.

Об этом уже упоминалось: статическое связывание. Также отлично сочетается с модуляризацией.

Compiler as a Service — еще один. Андерс Хейлсберг говорил об этом в течение давно времени, и возможно , просто возможно, он будет готов для C # 5.0. Что ж, у Mono он уже есть, и на самом деле он был в течение многих лет.

Мигель де Икаса, ведущий разработчик 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. Это используется для игровой логики и, например, в Second Life.


24

Mono делает некоторые то, чего нет в .Net.

Например, mono поддерживает статическое связывание, поэтому вы можете создавать, компилировать и распространять свое приложение, не требуя отдельного установщика времени выполнения. Если вы создали приложение, полагающееся на кроссплатформенность моно, есть некоторые отличия от .Net, и поэтому использование моно в Windows является большей гарантией совместимости.

.Net кое-что делает. это моно не.

В BCL есть несколько мест, которые еще не портированы для моно, например, WPF и Winforms.

Если вам нужно приложение, которое будет также работайте на mac/linux, вы, вероятно, захотите сначала разработать для моно, даже если вы делаете большую часть работы в Windows.


Примечание. все это предшествует .Net Core/Standard.

Улучшите этот ответ
отредактировано 20 июня ’20 в 9:12
Сообщество ♦
111 серебряный значок
ответил 15 апр. ’09 в 13: 23
  • 1
    Статические ссылки — одна из самых важных вещей Я слышал, что Mono в Windows используется для. — Бенджамин Атин 15 апр. ’09 в 13:33
добавить комментарий |

Mono делает некоторые вещи, которых нет .Net.

Например, mono поддерживает статическое связывание, поэтому вы можете создавать, компилировать и распространять свое приложение, не требуя отдельного установщика во время выполнения. Если вы создали приложение, полагающееся на кроссплатформенность моно, есть некоторые отличия от .Net, и поэтому использование моно в Windows является большей гарантией совместимости.

.Net кое-что делает. этот моно — нет.

В BCL есть несколько мест, которые еще не портированы для моно, например, WPF и Winforms, среди прочих.

Если вам нужно приложение, которое также будет работать на mac/linux, которое вы, вероятно, захотите сначала разработать для моно, даже если вы делаете большую часть работы в Windows.


Примечание: все это предшествует .Net Core/Standard.


13

Из технических часто задаваемых вопросов Mono:

Зачем нужна поддержка Windows, если вы можете запустить настоящую вещь ?

Существуют различные причины:

Поддержка Windows помогает нам отличать переносимые части Mono от непереносимых его версий, h elping Mono станет более портативным в будущем.

Это помогает нам, поскольку мы можем изолировать проблемы в Mono, разбив проблему на разделы (это проблема времени выполнения или проблема ОС?).

Около половины участников Mono — разработчики Windows. У них есть много разных причин для участия в этих усилиях, и мы считаем очень важным разрешить этим разработчикам запускать среду выполнения в Windows, не заставляя их использовать новую операционную систему.

Mono не сильно модифицирует реестр Windows, обновляет системные библиотеки DLL, устанавливает библиотеки DLL в путь Windows/System32.

Это помогает разработчикам на базе Windows тестировать свой код в Mono перед развертыванием в Linux..

Mono и приложения, которые встраивают Mono, могут быть развернуты без установщика (вы можете «xcopy» развернуть свое приложение и необходимые файлы Mono без установки среды выполнения .NET).

Улучшите этот ответ
ответил 17 апр. ‘ 10 в 2:08
добавить комментарий |

Из технических часто задаваемых вопросов Mono:

Зачем нужна поддержка Windows, когда можно запустить настоящую вещь?

Есть разные причины:

Поддержка Windows помогает нам отличать переносимые части Mono от непереносимых его версии, помогающие Mono стать более портативными в будущем.

Это помогает нам, поскольку мы можем изолировать проблемы в Mono, разбив проблему на разделы (это проблема времени выполнения или проблема ОС?).

Около половины участников Mono — разработчики Windows. У них есть много разных причин для участия в этих усилиях, и мы считаем очень важным разрешить этим разработчикам запускать среду выполнения в Windows, не заставляя их использовать новую операционную систему.

Mono не сильно модифицирует реестр Windows, обновляет системные библиотеки DLL, устанавливает библиотеки DLL в путь Windows/System32.

Это помогает разработчикам на базе Windows протестировать свой код в Mono перед развертыванием в Linux.

Mono и приложения, которые встраивают Mono, могут быть развернуты без установщика (вы можете «xcopy» развернуть свое приложение и необходимые файлы Mono без установки среды выполнения .NET).


12

Если вы хотите разработать кросс-платформенное приложение в C #, то использование реализации Microsoft — не самое разумное решение, поскольку для других платформ нет полностью совместимой альтернативы.

Таким образом, использование Mono в Windows для разработки приложений гарантирует, что у вас не возникнет проблем с переносом его в другую ОС (при условии, что вы избегаете других ям, таких как P/Invoke).

Улучшите этот ответ
отредактировано 15 апреля 2009 г., 13:22
Ричард Эв
48. 1k5454 золотых знака180180 серебряных знаков272272 бронзовых знака
ответ дан 15 апр ’09 в 16: 21
добавить комментарий |

Если вы хотите разработать кроссплатформенное приложение на C #, то использование реализации Microsoft — не самое разумное решение, так как полностью совместимая альтернатива для других платформ.

Таким образом, использование Mono в Windows для разработки приложений гарантирует, что у вас не возникнет проблем с переносом его на другую ОС (при условии, что вы избегаете других ям, таких как P/Invoke).


8

Некоторые люди использовали его, потому что они им не разрешено устанавливать .Net framework на их ПК с Windows из-за большого количества файлов реестра и системных файлов. (В жестко контролируемых средах.)

Mono, с другой стороны, самодостаточен в Program Files и записывает только ключ реестра с путем, в котором он находится (что не обязательно для запуска) .

Я думаю, что это немного глупо, но об этом нам сказали несколько пользователей.

Улучшите этот ответ
ответил 15 апр. 2009 в 14:57
добавить комментарий |

Некоторые люди использовали его, потому что им не разрешено устанавливать платформу .Net на свои ПК с Windows из-за количества реестра и системные файлы убирают. (В жестко контролируемых средах.)

Mono, с другой стороны, самодостаточен в Program Files и записывает только ключ реестра с путем, в котором он находится (что не обязательно для запуска) .

Я думаю, что это немного глупо, но это то, что нам сказали несколько пользователей.


4

В основном он используется в качестве помощи при разработке приложений Mono для конкретных библиотек Mono. Также за помощь в продвижении дела, чтобы разработчики могли работать в своей естественной среде при разработке для Mono.

Улучшите этот ответ
ответил 15 апр., 13:21
  • 1
    Что такое «естественная среда»? Окна могут быть вашей естественной средой. У меня есть несколько сред, все они довольно искусственные, но мне подходят. 🙂 — Мартин Салиас 20 окт., 2010 в 11:53
добавить комментарий |

В основном он используется в качестве помощи при разработке приложений Mono для конкретных библиотек Mono. Также за помощь в продвижении дела, чтобы разработчики могли работать в своей естественной среде при разработке для Mono.


3

Хотя это не вызывает всеобщего интереса, там Это несколько случаев, когда в моно есть улучшения по сравнению со стандартной средой выполнения Microsoft. Мигель рассказал о некоторых из них на PDC в этом году:

См. Эти сообщения:

  • Видео презентации
  • Поддержка SIMD и игры
Улучшить этот ответ
ответил 15 апр. ’09 в 13:24
добавить комментарий |

Хотя это не вызывает большого интереса, есть несколько случаев, когда в моно есть улучшения по сравнению со стандартной средой выполнения Microsoft. Мигель рассказал о некоторых из них на PDC в этом году:

См. Эти сообщения:

  • Видео презентации
  • Поддержка SIMD и игры

2

также, даже если у вас есть программа, динамически связанная с Mono, вы можете иметь скомпилированную среду выполнения .exe и Mono на флеш-накопителе и перейти на другой компьютер без установленного .NET/Mono и запустить эту программу на новом ПК без какой-либо среды выполнения установка. то есть, это приводит к переносным приложениям (особенно полезным в качестве переносных приложений для USB-накопителей). Это невозможно с .NET. У вас должна быть установлена ​​среда выполнения .NET определенным способом установщика, т. Е. Среда выполнения, содержащая копирование и вставку папки, невозможна.

Улучшите этот ответ
ответил 22 сентября 2010 г., 06:23
добавить комментарий |

Также, даже если у вас есть программа, динамически связанная с Mono, вы можете иметь скомпилированные исполняемые файлы .exe и Mono на флеш-накопителе и перейти на другой компьютер с .NET/Mono не установлен, и запустите эту программу на новом ПК без установки среды выполнения. то есть, это приводит к переносным приложениям (особенно полезным в качестве переносных приложений для USB-накопителей). Это невозможно с .NET. У вас должна быть установлена ​​среда выполнения .NET определенным способом установщика, т. Е. Среда выполнения, содержащая копирование и вставку папки, невозможна.


1

Я думаю, основная причина, по которой они это сделали это сделано для того, чтобы они могли запускать приложения .NET в Mono и .NET параллельно для их сравнения. Кроме того, есть несколько приложений, которые зависят от библиотек Mono.

Улучшите этот ответ
ответил 16 апр. ’09 в 23:08
добавить комментарий |

Я думаю, что основная причина, по которой они это сделали, заключается в том, что они могут запускать приложения .NET на Mono и .NET бок о бок для сравнения их. Кроме того, есть несколько приложений, которые зависят от библиотек Mono.


0

В дополнение к многочисленным причинам, упомянутым в других ответах, может потребоваться установка Mono для Windows в Wine, чтобы разрешить запуск приложений .Net внутри Wine.

Улучшить этот ответ
ответил 17 октября 2012 г., 10:44
добавить комментарий |

Чтобы добавить к многочисленным причинам, упомянутым в других ответах, Mono для Windows может потребоваться установить в Wine, чтобы разрешить запуск приложений .Net внутри Вино.


-7

Не дает вам получить Запутался в сети!

Улучшите этот ответ
15 апр. ’09 в 13:23
  • 1
    Странно, что никто не упомянул, что mono является открытым исходным кодом (это правда?). Я уверен, что для некоторых это имеет значение. — Рольф 20 янв. ’14 в 16:24
добавить комментарий |

Как не запутаться в сети!



Зачем устанавливать Mono в Windows

Я читал, что Mono — это реализация .Net Framework для платформ, отличных от Windows. Следовательно, это должно позволить вам использовать ту же библиотеку и прочее.

В чем тогда смысл установки Mono в Windows?
Разве код, разработанный для других платформ, не полностью совместим с. Net, и, следовательно, я смогу скопировать и вставить его в Visual Studio, а затем скомпилировать?

Спасибо!


Во многих случаях действительно важно установить Mono в Windows. Это зависит от того, чего вы ждете от Mono. Один из таких случаев — когда вы хотите разработать интерфейс командной строки и разработать код на нескольких платформах, включая Windows, при этом Windows является вашей основной платформой разработки.

В принципе, вы могли бы это сделать. он использует только .NET в Windows (с Visual Studio или нет), протестируйте его в Window, а затем протестируйте на какой-либо другой платформе (ах). Вам не нужно перекомпилировать ваши сборки, сделанные в Windows. В идеале это может работать и часто слова. В реальных случаях это может вызвать проблемы. Причина проста: Mono не совместим на 100%; и он даже не должен быть на 100% совместимым, хотя во многих случаях совместимость очень хорошая. Например, WPF и другие части .NET FCL никогда не разрабатывались для Mono. Предполагается, что BCL полностью совместим, а также ряд некоторых нестандартных частей FCL, таких как System.Windows.Forms (да, эти сборки не являются частью стандарта ECMA для окружающей среды). Однако есть некоторые несовместимые элементы, особенно в FCL, который не является частью BCL. Я даже помню один случай, когда люди сообщали о некотором поведении .NET как об ошибке, которая была исправлена ​​в Mono, что является своего рода несовместимостью (;-)). И я увидел некоторые ошибки реализации в Mono, которых я не нашел в .NET, поэтому мне пришлось применить некоторые обходные решения.

Из-за этих несовместимостей один из эффективных методов работа в Windows будет использовать как .NET, так и Mono. Две среды выполнения полностью изолированы, потому что приложения запускаются по-разному:

 :: для .NET для Windows: someApplication.exe :: для Mono на всех платформах: mono someApplication.exe 

Вот что вы можете сделать: разработать код в Windows, протестировать его в .NET для Windows, а затем повторно протестировать в Mono для Windows. После этого последнего шага поведение вашего кода в Mono для Windows будет максимально приближено к ожидаемому поведению в Mono на других платформах, но только если другие продукты, от которых зависит ваш продукт, также установлены на обеих платформах, в одинаковых или совместимых версиях. .

—SA

Пожалуйста, зарегистрируйтесь или войдите, чтобы проголосовать.

Решение 1

Принять решение Отклонить решение
Это теория, да — и по большому счету это правда.

Но … Я пытался разработать код для запуска веб-сайта под linux/mono с .NET в Windows в качестве среды разработки, и это было упражнение в чистое разочарование. То, что хорошо работало при разработке, терпело неудачу при переносе на веб-хостинг выпуска. Хорошо, это было пару лет назад, и ситуация, возможно, значительно улучшилась, и, возможно, использовались некоторые из «менее распространенных» .NET framework, но это было достаточно плохо, что я отказался от веб-хостинга (несмотря на то, что идеально во всех остальных отношениях) и переехал на мой текущий хост, на котором работают Windows и .NET на своих серверах.

Возможно, если бы я установил Mono на свою машину разработки, я бы не так расстроился — Я не знаю. И, возможно, теперь Mono полностью совместим, и у меня не было бы таких проблем. Но мое время достаточно ценно для меня, чтобы сказать «Слон!» и не трогать моно снова, если мне действительно, действительно не нужно.

Постоянная ссылка
Комментарии
Думаю, вы исказили качество Mono или хотя бы выразили предвзятое мнение. Раньше это не было так неприятно, и я бы не сказал, что у вас вообще не будет никаких проблем. Мой последний проект Mono был не так давно, у меня были проблемы. Вместе с тем, ряд совместимых сборок я создал давно, когда только что представили .NET v.3.5; и я бы сказал, что даже тогда Mono работал достаточно хорошо.
—SA

Это теория, да — и по большому счету это правда.

Но … Я попытался разработать код для запуска веб-сайта под linux/mono с помощью. NET в Windows в качестве среды разработки, и это было упражнением в полном разочаровании. То, что хорошо работало при разработке, терпело неудачу при переносе на веб-хостинг выпуска. Хорошо, это было пару лет назад, и ситуация, возможно, значительно улучшилась, и, возможно, использовались некоторые из «менее распространенных» .NET framework, но это было достаточно плохо, что я отказался от веб-хостинга (несмотря на то, что идеально во всех других отношениях) и переехал на мой текущий хост, на котором работают Windows и .NET на своих серверах.

Возможно, если бы я установил Mono на свою машину разработки, я бы не так расстроился — Я не знаю. И, возможно, теперь Mono полностью совместим, и у меня не было бы таких проблем. Но мое время достаточно ценно для меня, чтобы сказать «Слон!» и больше не трогать моно, если мне действительно, действительно не нужно.

Оцените статью
logicle.ru
Добавить комментарий