如何将 Windows 应用程序移动到 Linux 机器?

如何将 Windows 应用程序移动到 Linux 机器?

我在专用 Windows 服务器上运行了一个 .NET 应用程序。它不需要太多资源,而且服务器花费我们很多钱。所以我们决定将此应用程序移至我们的主要 Linux 服务器。

我知道在 Linux 上运行 Windows 程序有很多方法 - wine、mono、许多虚拟化技术,如 Xen 和 Virtual Box。我想知道当我需要在 Linux 机器上运行轻量级 Windows 应用程序时,哪种方法最适合这种情况,因为 Linux 机器已经有自己的内容。

答案1

嗯,Mono 可能是最轻量级的选项,具有最佳的系统集成度。但它的兼容性问题风险也最高。

我的建议:

首先尝试 Mono。如果无法使其工作,则可能需要使用虚拟化。我听说过 Xen 的好评,但其他的也不错。如果有虚拟化解决方案,尝试一下您已经在使用的虚拟化解决方案可能是有意义的。

答案2

对于服务器应用程序来说,wine 不是一个好的选择。

如果应用程序目前可以使用 mono 当前提供的 .Net 框架子集,那么 Mono 可能是最佳选择。如果应用程序不是您的,那么这不是一个好方法,因为除非供应商正式支持 mono,否则您不太可能获得供应商的支持。不过,与虚拟化相比,它是一种更轻量级的选择。

我的直觉是使用 VM 解决方案,尽管这可能需要额外的系统资源。VMWare 有一个工具可以将物理 Windows 计算机迁移到 VM,我过去曾成功使用过该工具(我们遇到的唯一问题是迁移大型计算机所需的时间太长,并且之后必须重新激活 Windows),因此这可能是您阻力最小的途径。

答案3

解决它的最佳方法可能是通过推理,因此以下是我将采取的 Mono 步骤:

我在使用 Mono 时有过一些成功(也有过一些失败)。

作为开始 Mono 有纽约现代艺术博物馆

Mono 迁移分析器 (MoMA) 工具可帮助您识别将 .Net 应用程序移植到 Mono 时可能遇到的问题。它有助于查明特定于平台的调用 (P/Invoke) 和 Mono 项目尚不支持的领域。

至少这会告诉你,如果不做任何修改,它将无法在 Mono 上运行。如果你有权访问源代码,或者你可以修改它,这样它就可以运行,尽管这会导致更大的测试损失。

答案4

如果您不能使用单声道,则应该使用虚拟化。

我使用 xen 已有 3 年了 - 效果非常好。

但是带有 libvirt 和 virt-manager 的 kvm 非常容易安装 - 尝试一下吧。

相关内容