Mono vs Wine для производства
Для производства
Вы бы предпочли использовать Wine или Mono для запуска приложения.net в Linux OpenSuse 11.
6 ответов
Базовая установка для Wine не имеет среды выполнения.net, поэтому я бы выбрал Mono.
В подкасте stackoverflow № 61 один из главных разработчиков, Мигель де Икаса, заявляет, что mono готов к производству, и говорит, что он используется в производстве. Они также упоминают визуальный студийный плагин в подкасте, который помогает убедиться, что приложение готово для Mono. В этой статье о стековом потоке они чувствуют, что mono также готов к производству.
Я никогда не слышал таких заявлений о Wine для.NET. Так что я бы пошел с Моно.
Учитывая тот факт, что Mono может запускать приложение самостоятельно, я бы выбрал Mono. С точки зрения поддержки, это, вероятно, и лучший вариант. Otoh, если приложение.Net использует специфичные для Microsoft .Net части спецификации (запатентованный материал, о котором так много шума), у вас нет другого выбора, кроме как использовать Wine. Я даже не знаю, возможно ли это, хотя.
Учитывая, что Mono является проектом Novell, а Novell владеет SUSE, вы можете рассчитывать на хорошую производительность и поддержку Mono через OpenSUSE. Основываясь на моем опыте, Mono отлично справляется с реализацией CLR с несколькими исключениями из библиотеки. Поскольку между запуском кода.NET через Mono меньше уровней абстракции, чем при запуске чего-либо на базе Windows через WINE, я бы определенно использовал Mono.
Однако у меня возникнет один вопрос: будет ли это пользовательское приложение или предварительно упакованное приложение. В первом случае будет относительно легко обеспечить полную совместимость с Mono (и вы можете создать приложение, используя MonoDevelop, чтобы получить преимущество, хотя приложения, созданные с помощью Visual Studio, должны работать очень хорошо). Если последнее, вы можете посмотреть, есть ли у него история с Mono (некоторые вещи, такие как Telerik, сертифицированы для правильной работы через Mono) или есть вероятность использования библиотеки (такой как части MS DirectoryService), которая могла бы представить проблемы.
Есть ли причина, по которой он должен быть одним из этих двух? Оба относительно зрелые. Но это зависит от приложения, поэтому вам нужно будет их фактически установить и настроить с соответствующим приложением, чтобы увидеть производительность и совместимость для каждого из них. В большинстве случаев Mono может работать просто так, но ваше приложение может обладать этим небольшим количеством функциональности или может обнаруживать один глюк, который внезапно заставляет его ползти или зависать. То же самое для вина.
Я бы также рассмотрел виртуализацию как возможное решение; запуск приложения в Virtualbox на рабочей станции или в VMWare ESXi или Xen на соответствующих системах в "родной" среде обеспечит совместимость (если это приложение для рабочей станции, вы можете даже запустить его в бесшовном режиме, чтобы оно выглядело просто как другое приложение).
Если вы можете дать некоторую предысторию по рассматриваемому приложению, это может помочь.
Немного не по теме, но попробуйте взглянуть на Mono Migration Analyzer, MoMa.
MoMa - это инструмент, который вы можете использовать, чтобы проверить, будет ли приложение работать под Mono, и, если нет, выделить области, вызывающие проблемы. MoMa работает как на Windows, так и на Linux и очень проста в использовании.
Я использовал его только один раз, но это был простой способ увидеть, будет ли приложение работать или нет.