Есть ли у Mono место в мире предпринимательства?

22

Для корпоративных решений на базе Windows .NET иногда является лучшим выбором. Как на Mono смотрят предприятия, которые должны использовать Linux (или, скорее, предпочитают использовать Linux)? Предполагая, что разработчики не проблема, и они знакомы с .NET / Mono и другими возможными конкурентами, такими как Java.

Будет ли средняя / крупная компания запускать Mono на своих серверах в отличие от таких технологий, как Java? Вы знаете какую-нибудь такую ​​компанию?

Даниил
источник

Ответы:

22

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

У нас был внутренний проект, который мы разработали в .NET, и как только мы вошли в UAT, владелец бизнеса захотел открыть приложение для некоторых клиентов, а также для внутреннего персонала. Большинство наших внешних (DMZ) серверов основаны на Linux, и серверы Windows, которые находятся в DMZ, не подходили (слишком близко к емкости). Вместо покупки нового оборудования кто-то предложил запустить приложение на Mono. Мы провели пару дней, проводя собственное тестирование, а затем выпустили приложение в QA, а затем в UAT. У нас не было проблем.

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

Вальтер
источник
5
Хорошая история войны.
15

Я не использовал моно в коммерческих целях, но я использую его в частном порядке, потому что я работаю в компании Windows, но в частном порядке я пользователь Linux (поэтому я могу повторно использовать то, что я делаю на работе).

В целом, я согласен с Мигелем де Иказа, который говорит:

  • 25% приложений .NET работают из коробки с моно
  • еще 25% можно заставить работать в течение дня или меньше
  • еще 25% можно заставить работать в течение недели
  • Последние 25% требуют полного переписывания приложения (WinForms / COM)

Mono работает довольно хорошо, но есть некоторые проблемы:

  • Поддержка VB.NET только для .NET <= 2.0
  • Проверка подлинности Windows не реализована
  • WPF не реализован
  • Поддержка WCF неполная
  • Entity Framework не реализована и нет планов по реализации
  • «Веб-части ASP.NET» не реализованы
  • Нет поддержки COM-взаимодействия
  • Соединение Sybase для версии 15.5 (последняя) не работает
  • Ошибки и неполнота в библиотеке классов C # (например, XML содержит ошибки в моно <2.6)
  • Для управления веб-браузером в Linux требуется GTK #

Тогда второстепенные проблемы:

  • Windows Forms работают, но не всегда отображаются правильно
  • MonoDevelop не может проектировать формы окон
  • MonoDevelop «пошаговая» отладка не работает
  • Моносервис вылетает через 5 часов ...

Форма, что я могу сказать:

  • Веб-сервисы отлично работают
  • Если вы запускаете веб-приложение, оно работает довольно хорошо (если не использует веб-части).
  • Если вы запускаете WindowsForms, он не всегда будет выглядеть очень хорошо (если не сказать больше).
  • Не существует рабочего эквивалента для Microsoft Reporting Service (FYIreporting является наиболее близким к нему, но он медленный, глючный и очень неполный, плюс никакой активности больше года)
  • У вас будут проблемы, если вам нужно будет создать документы Word или Excel.

Если вы хотите разрабатывать .NET на Linux

  • Вы можете разработать ASP.NET там (отладка и пошаговая работа работает очень плохо)
  • Вы действительно не можете разрабатывать WinForms в Linux
  • Вам нужно использовать GTK # вместо WinForms

Другими словами:

  • Mono имеет свое место в запуске веб-приложений и веб-сервисов и почтовых серверов.
  • Но запуск приложений WindowsForms невозможен, вам нужно писать приложения с помощью GTK #
  • В нем отсутствует решение для создания отчетов и поддержка формата файлов MS (или, следовательно, рабочих библиотек).



Редактирование (обновление 2015 г.):
я хотел добавить, что к настоящему времени отладка с пошаговым выполнением работает превосходно, и вы можете использовать MonoDevelop для разработки веб-приложений для Linux, даже с зависимостями nuGet. Проблема с библиотеками Excel и Word также исчезла, а Entity-Framework теперь с открытым исходным кодом. Остальное в значительной степени "как есть" (не знаю, исправлен ли моно-сервис, но я бы на это надеялся).
Также улучшилось то, что теперь вы можете иметь текущие пакеты для своего дистрибутива, то есть вам не нужно ждать следующего выпуска, скажем, Debian / Ubuntu, пока вы не получите последнюю моно версию (без необходимости компилировать их самостоятельно). ). Это значительно экономит время.

Кроме того, с выпуском Roslyn поддержка VB.NET должна стать намного лучше в ближайшем будущем.

затруднительное положение
источник
У меня не было проблем с поддержкой Winforms в Mono. Конечно, результат не совсем художественный, но это потому, что он не работает в Windows.
Роберт Харви
3
Примечание: структура сущности теперь с открытым исходным кодом. Моно команда начала включать его в текущую версию разработки
linquize
@ Роберт Харви: Grantet, большая часть основных работ работает (например, кнопка, древовидная структура, текстовые поля, метки, даже сетки данных), но как только вы добавляете сплиттер, это «Не реализованное исключение».
затруднение
14

Моя компания разрабатывает крупное настольное приложение .NET и выпускает версии для Linux, работающие на Mono, поэтому я бы сказал, что для корпоративных решений на базе Windows определенно есть место для Mono.

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

Адам Лир
источник
Да, вы должны контролировать, какую моно версию использовать. Один поставляется с дистрибутивами Linux, как правило, довольно старый, поэтому в нем больше ошибок. Мы время от времени отправляем его из ветки git mono-2-10, чтобы уменьшить количество ошибок, и мы знаем, какие возможные ошибки может возникнуть в нашей программе.
Linquize
3

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

Это, очевидно, оставляет открытой возможность того, что в будущем они будут требовать лицензионных сборов или просто предъявят иск за нарушение патента. Маловероятно, что то или другое произойдет из-за того, как они ведут себя сейчас, но большинству корпораций не нравится такая неопределенность, особенно когда речь идет о потенциальных обязательствах и связанных с этим издержках.

Джон Хопкинс
источник
3
Насколько я понимаю, спецификация CLR / C # не является проприетарной, и Mono реализует эту спецификацию без особой (если вообще таковой) зависимости от исходного источника .NET.
Адам Лир
5
@ Анна: Возможно, я не являюсь экспертом в этих вопросах, но я почти уверен, что Mono все еще подвержен риску, независимо от того, насколько мало он зависит от исходного источника .NET. Это из-за патентов Microsoft (которые могут быть применены с моно копированием кода Microsoft или без него). Я думаю, что FSF кратко изложил эту проблему здесь: fsf.org/news/2009-07-mscp-mono
Адам Пейнтер
3

Я не думаю, что там есть много места для Моно:

Java уже является установленной платформой для Linux, с огромным сообществом и множеством библиотек и инструментов корпоративного качества, как коммерческих, так и открытых. Я не вижу смысла выбирать Mono над Java при запуске нового проекта, ориентированного на Linux (или Mac), если нет каких-то особых обстоятельств (см. Ответ Уолтера).

Младен Ябланович
источник
7
Одной из причин этого может быть то, что C # - это просто более зрелый, лучше разработанный язык, чем Java, с которым проще и проще работать. Это звучит как очень веская причина для меня.
Конрад Рудольф
3
@Konrad: Это верно для последних версий C # (они начинались примерно одинаково, но развиваются намного быстрее, чем Java). К сожалению, мой опыт подсказывает, что предприятия редко выбирают язык по существу. С другой стороны, и .NET, и JVM предлагают альтернативные языки, возможно, лучше спроектированные, чем и C #, и Java, поэтому я бы не стал отдавать предпочтение друг другу на этом основании.
Младен Ябланович
Если бы Mono был доступен ранее, мы бы рассмотрели .Net / Mono для нашей среды. Однако этого не произошло, поэтому теперь мы идем по пути Java. Мы можем выполнить некоторую работу в .Net / Mono, но основной средой является Java, и ожидается, что она останется такой в ​​течение достаточно долгого времени. Будучи кем-то, кто работает в обоих направлениях, я не получаю бешенство Java от C # ers. Они очень похожи. Язык C # немного лучше, но библиотеки Java и дополнительные языки JVM лучше. Как платформы в целом, они почти равны. Материал библиотеки для меня важнее, так что я мог бы даже дать дань Java.
Брайан Кноблаух
1
Mono позволяет использовать C # в Linux. C # имеет так много синтаксического сахара, чтобы облегчить развитие.
Linquize
2015: Java - гражданин второго сорта на OS X (Mac). Mono прекрасно работает на OS X (хотя WinForms все еще работает медленно и безобразно). А с OmniSharp вы можете получить всевозможные инструменты редактирования качества IDE в редакторах не-IDE (Sublime, Atom, Vim, Emacs).
Кент А.
1

Перед использованием mono, мы должны убедиться, что в программе нет жестко закодированного '\' для строки пути (используйте префикс Path.Combine ()) или "COM" (просто принимайте строку вместо целого числа) для последовательного порта.

Что работает хорошо:

  • Консольное приложение
  • Веб-приложение

Возникли проблемы:

  • WinForms не стабильный: случайный сбой.
  • Языковая поддержка: Сообщество может не знать все языки, особенно диалекты для некоторых стран / городов. Соответствующие локали / сопоставления могут быть пропущены.
  • Редко используемые методы могут иметь несовместимое поведение с .NET.
  • xsp поддерживает только HTTP 1.0. В настоящее время ему не хватает поддержки HTTP 1.1.
  • Управление браузером не работает хорошо.

Лучше использовать моно внутри (например, система ERP) в качестве контролируемой среды.

linquize
источник
0

Mono - отличная альтернатива, если у вас уже есть код .NET, который должен работать в кроссплатформенной среде. Mono довольно широко используется в деловом мире специально для решения этой самой проблемы.

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

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

tylerl
источник