C# 在mono上运行WinForm应用程序的真实成本?

C# 在mono上运行WinForm应用程序的真实成本?,c#,winforms,mono,C#,Winforms,Mono,我的公司有一个已经建立的WinForm应用程序,它正在WinXP上运行。应用程序使用DirectSound进行大量的声音处理 我的公司希望评估Mono,作为Vista/Win Server 2008每工作站成本的替代方案 我听说有不同的估计,从“它在Mono上很容易工作”到“在某些情况下需要数月的重新编码才能让WinForm应用程序在Linux上运行Mono” 有人对此有很好的现实经验吗? 一个好的链接参考? 在我开始测试之前,我想得到一个更好的想法 谢谢 WinForms部分将很简单,您可能只

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

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

我听说有不同的估计,从“它在Mono上很容易工作”到“在某些情况下需要数月的重新编码才能让WinForm应用程序在Linux上运行Mono”

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


谢谢

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

我在VS2005中编写了一些小应用程序,并轻松地将它们移植到Mono上。如果您进行了大量的P/invoke,那么您必须考虑到这一点,因为这些可能需要完全重写或重新思考


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

Mono可帮助您移动托管代码,但这无助于移动音频层

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

您必须研究哪种Linux API最适合您的音频应用程序

Lennart在音频上发表博客是一个很好的起点:


一旦您决定使用API,就像在Windows中一样,您必须p/调用适合您的API。

尽管Mono声称100%支持WinForms,但我的控件在Linux下的布局与Windows中的不同(可能是因为使用了一些不太常见的控件外观属性)。同意,您可能需要调整WinForms代码中的某些内容。我自己也看过。这就是为什么我说“声称支持”而不是“支持”。