9

我公司有一个在 WinXP 上运行的现有已建立的 WinForm 应用程序。该应用程序使用 DirectSound 进行大量声音处理。

我的公司想评估 Mono,作为 Vista/Win Server 2008 的每个工作站成本的替代方案。

我听说过不同的估计,从“它可以在 Mono 上轻松运行”到“在某些情况下可能需要几个月的重新编码才能让 WinForm 应用程序在 Linux 上与 Mono 一起运行”。

有没有人对此有很好的现实世界经验?一个好的链接参考?在我承诺测试之前,我想有一个更好的想法。

谢谢!

4

2 回答 2

12

WinForms 部分将很简单,您可能需要做的很少,因为 Mono 现在声称支持 100% Winforms,但是所有 DirectSound 调用都必须重写以使用 Linux 上可用的 API,ALSA 是显而易见的选择。

我在 VS 2005 中编写了小应用程序,并轻松地将它们移植到 Mono。如果您做了很多 P/Invokes,那么您必须考虑到这一点,因为这些可能必须完全重写或重新考虑。

此外,请查看MOMA:“Mono 迁移分析器 (MoMA) 工具可帮助您确定将 .Net 应用程序移植到 Mono 时可能遇到的问题。它有助于查明平台特定调用 (P/Invoke) 和尚不支持的区域Mono 项目。”

于 2008-10-16T03:33:24.947 回答
6

Mono 可以帮助您移动托管代码,但它不会帮助您移动音频层。

遗憾的是,.NET 框架没有为音频处理提供全面的 API。它只是提供了一种播放小声音样本的方法,而且它甚至不是很好(参见 Jeroen 关于在 IKVM 下运行 C64 仿真器时出现音频间隙的帖子)。

您将不得不研究哪个 Linux API 最适合您的音频应用程序正在执行的操作。

Lennart Poettering 关于音频的博客文章是一个很好的起点:

http://0pointer.de/blog/projects/guide-to-sound-apis.html

一旦你决定了一个 API,就像在 Windows 中一样,你必须 P/Invoke 适合你的 API。

于 2008-10-19T16:08:26.403 回答