我有一个在专用 Windows 服务器上运行的 .NET 应用程序。它不需要很多资源,服务器花费了我们很多钱。所以我们决定把这个应用程序移到我们的主 Linux 服务器上。
我知道在 Linux 上运行 Windows 程序的方法有很多种——wine、mono、许多虚拟化技术,如 Xen 和 Virtual Box。我想知道哪一个最适合这种情况,当我需要在已经有自己的东西的 linux 机器上运行轻量级 Windows 应用程序时。
我有一个在专用 Windows 服务器上运行的 .NET 应用程序。它不需要很多资源,服务器花费了我们很多钱。所以我们决定把这个应用程序移到我们的主 Linux 服务器上。
我知道在 Linux 上运行 Windows 程序的方法有很多种——wine、mono、许多虚拟化技术,如 Xen 和 Virtual Box。我想知道哪一个最适合这种情况,当我需要在已经有自己的东西的 linux 机器上运行轻量级 Windows 应用程序时。
对于服务器应用程序来说,wine 不是一个好的选择。
如果应用程序当前可以使用 mono 当前提供的 .Net 框架的子集运行,那么 Mono 可能是最佳选择。如果应用程序不是您的,那么这将不是一个好方法,因为除非他们正式支持单声道,否则您不太可能从供应商那里获得支持。不过,这将是比虚拟化更轻量级的选择。
我的直觉反应是使用 VM 解决方案,尽管这可能需要额外的系统资源。VMWare 有一个工具可以将物理 Windows 机器迁移到我过去成功使用的虚拟机(我们遇到的唯一问题是迁移大型机器所需的时间长度以及之后必须重新激活 Windows),所以这可能是你的阻力最小的路径。
攻击它的最佳方法可能是通过推理,所以这是我将采取的 Mono 步骤:
我使用 Mono 取得了一些成功(也有一些失败)。
作为开始 Mono 有MoMA:
至少这会告诉你它不会在没有改变的情况下在 Mono 上工作。如果您可以访问源代码,或者您可以对其进行更改以使其正常工作,尽管这会导致更大的测试损失。
嗯,Mono 可能是最轻量级的选择,具有最好的系统集成。它还具有最高的兼容性问题风险。
我的建议:
先试试单声道。如果你不能让它工作,你可能不得不使用虚拟化。我听说过关于 Xen 的好消息,但其他的也不错。尝试您已经在使用的虚拟化解决方案(如果有的话)可能是有意义的。
如果你不能使用单声道,你应该使用虚拟化。
我从 3 年开始使用 xen - 效果很好。
但是带有 libvirt 和 virt-manager 的 kvm 很容易安装 - 试一试。