В чем смысл Mono в Windows
Это может быть глупый вопрос...но я просто смотрел в проект Mono, и у них есть раздел об установке Mono на Windows. Но, поскольку Windows, очевидно, уже имеет .NET runtime, может ли кто-нибудь сказать мне, в чем именно смысл иметь Mono для Windows? Это помогает в кросс-платформенной разработке или что-то в этом роде?
12 ответов
поскольку Mono не реализует .Net 100% так же, как MS .Net Framework, хорошо, что вы можете протестировать Mono без необходимости запуска в Linux. Также Mono имеет привязки для создания форм с GTK, которые MS не поддерживает.
есть несколько функций Mono, которые .NET не имеет.
Mono высоки модульно. Вы можете разбить его на мелкие кусочки и только развернуть ровно те части, которые вам нужны. Не нужна система.В XML? Ладно, все кончено.
Mono встраивается. Вы можете разместить его внутри приложения C/C++, чтобы позволить пользователям создавать сценарии из безопасной управляемой изолированной среды. Самый известный пример этого-mod_mono, который размещает Mono внутри Apache веб-сервер, и как ASP.NET реализуется в Mono, например. Эта функция отлично сочетается с упомянутой выше модульностью.
Это уже упоминалось: статическая связь. и идет вместе с modularization.
компилятор как Служба-это еще один. Андерс Хейльсберг уже давно говорит об этом!--3-->долго времени, и может быть, просто, возможно, он будет готов к C# 5.0. Ну, Mono уже есть он и на самом деле имел это в течение многих лет.
Мигель де Икаса, ведущий разработчик Mono также имеет инициативу, которую он называет "объятия и Extend.NET", который расширяет CLI способами, которые (в настоящее время) невозможны с другими реализациями CLI (включая .NET). До сих пор, объятия и Extend.NET имеет три особенности.
Mono.Simd, который дает безопасный и контролируемый доступ к инструкциям SIMD базового процессора (например, SSE на Intel или AltiVec на PowerPC). Использованный для игр и Графика.
64-битные индексы массива, которые разрешены спецификацией ECMA, но Mono-единственная виртуальная машина, которая фактически предоставляет их. Используется в суперкомпьютерах.
и совсем недавно, продолжения. На самом деле это первый раз, когда Mono выходит за рамки спецификации: индексы длинного массива совершенно действительны в соответствии со спецификацией и Mono.Simd также работает на каждой CLI-совместимой реализации (хотя очень S-L-O-W), но моно.Tasklet должен специальная поддержка от виртуальной машины, которая не является частью CLI или .Сеть. Это используется для игровой логики и, например, во второй жизни.
Mono does some things the .Net doesn't.
например, mono поддерживает статическую компоновку, чтобы вы могли создавать, компилировать и распространять приложение, не требуя отдельного установщика времени выполнения. Если вы создали приложение, чтобы полагаться на mono, чтобы быть кросс-платформенным, есть несколько различий, и поэтому использование mono в Windows является большей гарантией совместимости..Net does some things that mono doesn't.
в BCL есть несколько мест, которые еще не портированы для mono. Если вы хотите приложение, которое будет работать на mac / linux вы, вероятно, хотите сначала разработать для mono, даже если вы делаете работу в windows.
Если вы хотите разработать кросс-платформенное приложение на C#, то использование реализации Microsoft не самая умная вещь, так как нет полностью совместимой Альтернативы для других платформ.
таким образом, использование Mono в Windows для разработки приложений гарантирует, что у вас будет мало проблем с переносом его на другую ОС (при условии, что вы избегаете других ям, таких как P/Invoke).
из моно технический FAQ:
почему поддержка Windows, когда вы можете запустить реальную вещь?
существуют различные причины:
поддержка Windows помогает нам идентифицировать портативные части Mono из непереносимых версий, помогая Mono стать более портативным в будущее.
Это помогает нам, так как мы можем изолировать проблемы в моногородах по разбиение проблемы (это проблема времени выполнения или проблема ОС?).
около половины участников Mono являются разработчиками Windows. У них есть много различных причин для внося вклад в усилия, и мы очень важно, чтобы эти разработчики запускают среду выполнения в Windows не заставляя их использовать новый операционная система.
Mono не сильно изменяет реестр windows, обновляет системные библиотеки DLL, установка DLL в Windows / System32 путь.
Это помогает Разработчики на базе Windows, чтобы проверить свой код под Mono перед развертыванием в Linux.
Mono и применения которые врезают Mono можно раскрыть без установщик (вы можете "xcopy" развернуть применение и необходимое Mono файлы без установки .NET время выполнения.)
некоторые люди использовали его, потому что им не разрешено устанавливать .Net framework на своих ПК с Windows из-за количества реестра и системных файлов, которые он делает. (В плотно контролируемых средах.)
Mono, с другой стороны, автономно содержится в программных файлах и записывает только раздел реестра с его путем (который не требуется запускать).
Я думаю, что это глупо, но это то, что нам сказали несколько пользователей.
Это в основном там, как помощь в разработке моно приложений для моно конкретных библиотек. Также за помощь в продвижении дела, чтобы разработчики могли работать в своей естественной среде при разработке для Mono.
хотя это не представляет широкого интереса, есть несколько случаев, когда mono имеет улучшения по сравнению со стандартной средой выполнения Microsoft. Мигель выступил с докладом о некоторых из них в PDC в этом году:
см. эти сообщения:
также, Даже если у вас есть программа, динамически связанная с Mono, вы можете скомпилировать ее .exe и Mono runtime на pendrive и goto другой компьютер без .NET / Mono установлен, и запустите эту программу на новом ПК без установки во время выполнения. ie, это приводит к портативным приложениям (особенно полезно в качестве портативных приложений USB pen drive) Это невозможно .Сеть. У вас должна быть установлена среда выполнения .NET определенным способом установки, т. е. среда выполнения, содержащая папку copy и paste not вероятный.
Я думаю, главная причина они сделали это, чтобы они могли работать .Net приложений на Mono и .Чистый бок о бок, чтобы сравнить их. Кроме того, есть несколько приложений, которые зависят от библиотеки Mono.
чтобы добавить к многочисленным причинам, упомянутым в других ответах, Mono для Windows может потребоваться установить на Wine, чтобы позволить запускать приложения .Net внутри Wine.