В чем смысл Моно на Windows
Это может быть глупый вопрос...но я просто смотрел в проект Mono, и у них есть раздел об установке Моно на Windows. Но, поскольку Windows, очевидно, уже имеет .NET runtime, может ли кто-нибудь сказать мне, в чем именно заключается смысл наличия Mono для Windows? Это помогает с кросс-платформенной разработкой или что-то еще?
12 ответов:
поскольку Mono не реализует .Net 100% так же, как MS .Net Framework, хорошо, что вы можете протестировать на Mono без необходимости запуска на Linux. Также Mono имеет привязки для создания форм с GTK, которые MS не поддерживает.
есть несколько особенностей моно имеет, что .NET не делает.
моно имеет модульную структуру. Вы можете разбить его на мелкие кусочки и только развернуть ровно те части, которые вам нужны. Не нужна система.Xml? Ладно, все прошло.
моно-это встраиваемый. Вы можете разместить его в своем приложении C/C++, чтобы пользователи могли создавать сценарии из безопасной управляемой изолированной среды. Самый известный пример этого-mod_mono, который размещает Mono внутри Apache веб-сервер, а это как ASP.NET реализуется в моно, например. Эта функция отлично сочетается с упомянутой выше модульностью.
Это уже упоминалось: статическое связывание. и отлично сочетается с модуляризацией.
компилятор как сервис-это еще один. Андерс Хейльсберг уже давно говорит об этом долго времени, и может быть, просто, возможно, он будет готов к C# 5.0. Ну, моно уже есть это, и на самом деле было это в течение многих лет.
Мигель де Икаса, ведущий разработчик Mono также имеет инициативу, которую он называет "объятия и Extend.NET", который расширяет CLI способами, которые (в настоящее время) невозможны с другими реализациями CLI (включая .NET). до сих пор объятия и Extend.NET имеет три особенности.
моно.Simd, который обеспечивает безопасный и контролируемый доступ к инструкциям SIMD базового процессора (например, SSE на Intel или AltiVec на PowerPC). Использованный для игр и Графика.
64-битные индексы массива, которые разрешены спецификацией ECMA, но Mono-единственная виртуальная машина, которая их фактически предоставляет. Используется в суперкомпьютерах.
и совсем недавно, продолжение. На самом деле это первый раз, когда моно выходит за рамки спецификации: индексы длинных массивов совершенно действительны в соответствии со спецификацией и моно.Simd также работает на каждой CLI-совместимой реализации (хотя и очень S-L-O-W), но моно.Tasklet должен специальная поддержка от виртуальной машины, которая не является частью CLI или .NET. это используется для игровой логики и, например, в Second Life.
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).
от моно технические вопросы и ответы:
зачем поддерживать Windows, когда вы можете запустить реальную вещь?
есть несколько причин:
поддерживая окна помогают нам определить портативные части моно от не портативных версий, помогая моно стать более портативным в будущее.
Это помогает нам, так как мы можем изолировать проблемы в моногородах по разбиение проблемы (это проблема времени выполнения или проблема с ОС?).
около половины участников Mono являются разработчиками Windows. У них есть много различных причин для внося свой вклад, и мы очень важно, чтобы эти разработчики запускают среду выполнения в Windows не заставляя их использовать новый операционная система.
Mono не сильно изменяет реестр windows, обновляет Системные DLL, установка библиотек DLL в Windows / System32 путь.
Это помогает Разработчики на базе Windows, чтобы проверить свой код под Моно перед их развертыванием в Linux.
моно и приложения, которые встраивают моно могут быть развернуты без установщик (вы можете "xcopy" развернуть ваш применение и необходимое моно файлы без установки .NET время выполнения.)
некоторые люди использовали его, потому что они не могут установить .Net framework на своих ПК с Windows, из-за количества реестра и системных файлов, которые он делает. (В плотно контролируемых средах.)
Mono, с другой стороны, является самодостаточным в программных файлах и записывает только раздел реестра с его путем (который не обязательно запускать).
Я думаю, что это немного глупо, но это то, что несколько пользователей сообщили нам.
Это в основном там, как помощь в разработке моно приложений для моно конкретных библиотек. Также за помощь в продвижении дела, чтобы разработчики могли работать в своей естественной среде при разработке для Mono.
хотя это не представляет широкого интереса, есть несколько случаев, когда mono имеет улучшения по сравнению со стандартной средой выполнения Microsoft. Мигель выступил с докладом о некоторых из них в PDC в этом году:
Смотрите эти сообщения:
также, Даже если у вас есть программа, динамически связанная с Mono, вы можете скомпилировать ее .exe и Mono runtime на pendrive и goto другой компьютер без .NET / Mono установлен, и запустить эту программу на новом ПК без установки во время выполнения. т. е., это приводит к портативным приложениям (особенно полезно в качестве портативных приложений USB pen drive) Это невозможно с помощью .NET. у вас должна быть установлена среда выполнения .NET определенным способом установки, т. е. среда выполнения, содержащая папку copy and paste not вероятный.
Я думаю, что основная причина, по которой они это сделали, заключается в том, что они могут запускать приложения .NET на Mono и .NET бок о бок, чтобы сравнить их. Кроме того, есть несколько приложений, которые зависят от библиотеки Mono.