Подтвердить что ты не робот

Различия в развитии между .NET и Mono

Я просматриваю Mono и .NET С#, и в будущем, когда проект будет разработан, нам понадобится запустить код на серверах Linux. На данный момент я смотрел ASP.NET MVC и Mono.

Я запускаю дистрибутив Ubuntu и хочу сделать разработку для веб-приложения, некоторые из других разработчиков используют Windows и запускают другие элементы .NET с Visual Studio.

Что Mono не предоставляет, что Visual Studio делает?

Если при запуске этого в Linux позже мы не должны использовать MonoDevelop?

Есть ли сторонние инструменты или надстройки, которые могут быть проблемой с Mono позже?

4b9b3361

Ответ 1

Что Mono не предоставляет, что Visual Studio делает?
MonoDevelop, по-видимому, вы имеете в виду здесь. MonoDevelop предлагает кросс-платформенную разработку на Linux, Mac OS X, Windows на базе GTK. Однако он не так полирован, как Visual Studio, по понятным причинам - это 3 человека, которые делают это, а не сотни. Он имеет некоторые приятные функции, особенно его архитектуру плагина управления версиями. Однако, поскольку Visual Studio Express является бесплатным, для Windows это не так много преимуществ.

Он использует тот же формат .csproj и .sln, что и Visual Studio, однако формат документов XML отличается.

Если при запуске этого в Linux позже мы не будем использовать MonoDevelop?
Как я уже упоминал выше, форматы проекта являются взаимозаменяемыми.

Есть ли сторонние инструменты или надстройки, которые могут быть проблемы с Mono позже?
В отличие от Visual Studio, для Monodevelop нет большого количества надстроек. Те, которые вы используете в Monodevelop, вообще не будут влиять на ваши файлы .csproj, поскольку все, что Visual Studio не может прочитать, обычно игнорирует.


Как говорили люди, не путайте Mono для MonoDevelop. MonoDevelop - это IDE для Mono, который первоначально появился (разветвлено) SharpDevelop.

Mono - это платформа кроссплатформенной платформы, которая "обезумевает" библиотеки CLR и библиотеки Microsoft.

Ответ 2

У меня нет большого опыта в этой области, но...

В "Монопроектная дорожная карта" представлен обзор новых, предстоящих и не представленных в Mono функций по сравнению с MS.NET. Даже там, где Mono имеет те же классы, что и .NET, обратите внимание, что совместимость не на 100% (хотя обычно это их цель). Я не уверен, существует ли полный список вещей, отсутствующих в Mono.

MonoDevelop теперь доступен как для Windows, так и для Linux, поэтому вам, вероятно, лучше всего использовать его. Тем не менее, MonoDevelop, похоже, использует тот же формат файла проекта, что и Visual Studio и SharpDevelop, поэтому вы можете сделать попытку смешивания IDE.

Конечно, при использовании сторонних .NET-библиотек обратите внимание, что многие из них не были протестированы с помощью моно, и, в частности, все, что использует P/Invoke, не будет работать в Mono для Linux. Однако большинство несовместимостей с mono незначительны, и если вы придерживаетесь библиотек с открытым исходным кодом, вы всегда можете исправить любые несовместимости, с которыми вы сталкиваетесь.

Ответ 3

Вы также можете посмотреть Mono Tools для Visual Studio. Это позволяет вашим разработчикам визуальной студии ориентироваться и тестироваться с помощью моноплатформы.

Ответ 4

Вы хотите всегда иметь поддержку и/или в первую очередь использовать программное обеспечение на Linux, правильно? На самом деле это вопрос, который я попросил разработчиков Mono на конференции немного назад, и это в основном сводилось к тому, что вы хотите с ним сделать.

Если вы хотите, чтобы он всегда работал в Linux, используйте Mono. Если вы только заботитесь о Windows, то используйте Visual Studio.

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

К сожалению, я не знаю ответа на точные лимиты/преимущества Mono vs..NET, кроме того, что .NET еще впереди, а Mono играет в догоняющем режиме или о разных аддонах.

Ответ 5

Если вы можете помочь, рекомендуется избегать реализации Mono Remoting. Кажется, что некоторые неожиданные икоты и отладка не прямолинейны.

У нас был очень тяжелый продукт Remoting, который мы пытались подключить к Mono, чтобы мы могли поддерживать Linux. Из-за невозможности решения проблем Remoting нам в конечном итоге пришлось отказаться от наших попыток полностью поддержать Linux.

Предостережение: мои переживания могут быть устаревшими. См. Комментарии ниже

Ответ 6

Если ни один из ваших разработчиков не должен разрабатывать Mono для определенных функций, я предлагаю вам использовать Visual Studio для Windows. Затем проверьте приложения на Mono с помощью

  • Моно-инструменты для Visual Studio
  • вручную скопируйте исполняемые файлы поверх
  • проверьте код на Linux и создайте в MonoDevelop.

Лично я испытал много мелких проблем, когда я пробовал третий путь, но, к счастью, я способен найти обходные пути.

Только когда вы касаетесь Mono, вы знаете, какая часть вашего приложения должна быть настроена.

http://www.mono-project.com/Start

Ответ 7

Вам не нужно MonoDevelop для запуска программы ASP.NET в Linux, создания общей папки на вашем сервере разработки (VMWare'd или реального), часто проверяйте, чтобы вы могли легко обойти то, что отсутствует в Mono

Тот же подход, который я использую в своей программе .NET Remoting, я размещаю на сервере Ubuntu. Но я делаю наоборот, так как я программист соло, я создаю общую папку на своей машине разработки Windows, а затем получаю доступ к этой общей папке на тестовом сервере Ubuntu (vmware'd). В материалах ASP.NET, если изменения не отразятся на вашем тестовом сервере Ubuntu, в Terminal просто коснитесь файла Web.Config на тестовом сервере Ubuntu. то есть touch Web.Config, а затем обновите страницу

Ответ 8

Mono имеет полностью функциональную реализацию ASP.NET. Это включает полную поддержку веб-форм ASP.NET и веб-служб. Это по существу означает, что более или менее любое приложение ASP.NET, которое вы разработали с использованием .NET Framework, будет работать с Mono. Очевидно, что могут потребоваться изменения, такие как изменения доступа к данным, удаление любых опираясь на типы BCL.NET Framework. Моно-Oracle-пользователи -Net Programming С#: ubuntu 11.04