Назад | Перейти на главную страницу

Как перенести приложение Windows на машину с Linux?

У меня есть приложение .NET, работающее на выделенном сервере Windows. Ресурсов не так много, а сервер стоит больших денег. Поэтому мы решили переместить это приложение на наш основной сервер Linux.

Я знаю, что есть много способов запуска программ Windows в Linux - вино, моно, многие методы виртуализации, такие как Xen и Virtual Box. Я хочу знать, какой из них наиболее подходит для ситуации, когда мне нужно запустить облегченное приложение Windows на Linux-машине, в котором уже есть свои собственные вещи.

Для серверных приложений вино не будет хорошим выбором.

Mono, вероятно, был бы лучшим вариантом, если бы приложение могло работать в настоящее время с подмножеством .Net framework, который в настоящее время предоставляет mono. Если приложение не принадлежит вам, это не лучший вариант, поскольку вы вряд ли получите поддержку от своего поставщика, если он официально не поддерживает моно. Однако это будет более легкий вариант, чем виртуализация.

Моя интуиция здесь - использовать решение виртуальной машины, несмотря на дополнительные системные ресурсы, которые для этого могут потребоваться. У VMWare есть инструмент для переноса физических машин Windows на виртуальные машины, который я успешно использовал в прошлом (единственная проблема, с которой мы столкнулись, заключалась в том, сколько времени потребовалось для переноса большой машины и необходимости повторно активировать Windows впоследствии), так что это может быть ваша путь наименьшего сопротивления.

Лучший способ атаковать это, вероятно, с помощью дедукции, поэтому вот шаги Mono, которые я бы предпринял:

У меня были некоторые успехи (и некоторые неудачи) с использованием Mono.

Для начала у Mono есть МоМА:

Инструмент Mono Migration Analyzer (MoMA) поможет вам определить проблемы, которые могут возникнуть при переносе вашего .Net-приложения на Mono. Он помогает точно определять вызовы, специфичные для платформы (P / Invoke), и области, которые еще не поддерживаются проектом Mono.

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

Что ж, Mono, вероятно, самый легкий вариант с лучшей системной интеграцией. Это также имеет самый высокий риск проблем с совместимостью.

Мой совет:

Сначала попробуйте Mono. Если вы не можете заставить его работать, вам, вероятно, придется использовать виртуализацию. Я слышал много хорошего о Xen, но и другие тоже хороши. Вероятно, имеет смысл попробовать решение виртуализации, которое вы уже используете, если оно есть.

Если вы не можете использовать моно, вам следует использовать виртуализацию.

Пользуюсь xen с 3 года - работает очень хорошо.

Но установить kvm с libvirt и virt-manager очень просто - попробуйте.