在单声道上运行WinForm应用程序的实际成本是多少?

时间:2008-10-16 02:44:31

标签: c# winforms mono

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

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

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

有没有人对此有过良好的现实体验? 一个很好的链接参考? 在我开始测试之前,我想得到一个更好的想法。

谢谢!

2 个答案:

答案 0 :(得分:12)

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

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

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

答案 1 :(得分: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。