Различия в разработке между .NET и Mono - PullRequest
24 голосов
/ 06 мая 2010

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

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

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

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

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

Ответы [ 8 ]

19 голосов
/ 07 мая 2010

Что 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 - это кроссплатформенный фреймворк, который «поддерживает» Microsoft CLR и библиотеки фреймворков.

5 голосов
/ 06 мая 2010

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

5 голосов
/ 06 мая 2010

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

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

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

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

1 голос
/ 07 мая 2010

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

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

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

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

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

1 голос
/ 06 мая 2010

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

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

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

1 голос
/ 06 мая 2010

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

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

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

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

0 голосов
/ 27 августа 2011

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

0 голосов
/ 07 мая 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...