有人在大中型项目中使用过Mono(开源.NET实现)吗?我想知道它是否为现实世界和生产环境做好了准备.它是稳定的,快速的,兼容的,...够用了吗?将项目移植到Mono运行时需要付出很多努力吗?或者它真的有足够的really兼容性,可以直接接收并运行已经为Microsoft运行时编写的代码吗?
有人在大中型项目中使用过Mono(开源.NET实现)吗?我想知道它是否为现实世界和生产环境做好了准备.它是稳定的,快速的,兼容的,...够用了吗?将项目移植到Mono运行时需要付出很多努力吗?或者它真的有足够的really兼容性,可以直接接收并运行已经为Microsoft运行时编写的代码吗?
有两种情况需要考虑:(a)如果您正在移植一个现有的应用程序,并且想知道Mono是否足以完成这项任务;(b) 你开始写一些新代码,你想知道Mono是否足够成熟.
对于第一种情况,您可以使用Mono Migration Analyzer tool(MOMA)来判断您的应用程序距离在Mono上运行有多远.如果判断结果非常出色,您应该开始测试和质量保证,并准备发货.
如果您的判断结果是一份报告,其中突出了Mono中缺少的功能或在语义上存在显著差异的功能,那么您必须判断代码是否可以修改、重写,或者在最坏的情况下,您的应用程序是否可以在功能减少的情况下工作.
根据我们的MOMA基于用户提交的数据(这是来自记忆),大约50%的应用程序开箱即用,大约25%需要大约一周的工作(重构、修改),另外15%需要认真promise 重做你的代码块,而睡觉就是不值得移植,因为它们与win32Bundle 在一起太令人难以置信了.在这一点上,要么您从零开始,要么业务决策将推动使您的代码可移植的努力,但我们谈论的是数月的工作(至少从我们拥有的报告来看).
如果您从头开始,情况会简单得多,因为您将只使用Mono中提供的API.只要您继续使用受支持的堆栈(几乎是.NET2.0,加上3.5中的所有核心升级,包括LINQ和System.Core,再加上任何Mono跨平台API),您就会没事的.
每隔一段时间,你可能会在Mono中遇到bug或局限性,你可能需要解决它们,但这与任何其他系统都没有什么不同.
至于可移植性:ASP.NET应用程序更容易移植,因为这些应用程序对Win32几乎没有依赖性,甚至可以使用SQL server或其他流行的数据库(Mono有很多Bundle 的数据库提供程序).
Windows.Forms移植有时比较棘手,因为开发人员喜欢逃离.NET沙箱,并且P/调动他们的脑力来配置一些有用的东西,比如在wParam中更改光标闪烁速率(表示为以BCD形式编码的两个Bezier点).或者像这样的垃圾.