我应该在真正的项目中使用Mono吗?

有没有人使用过大型或中型项目的开源.NET实现Mono? 我想知道它是否适合现实世界的生产环境。 它稳定,快速,兼容,......足够使用? 将项目移植到Mono运行时需要花费很多努力吗?还是它确实足够兼容,只需运行已经为Microsoft运行时编写的代码即可?


我已经将它用于许多内部和商业项目,取得了巨大成功。 我的警告:

  • 写很多单元测试,并确保它们都通过单声道 - 这将为您节省很多麻烦。
  • 除非你绝对必须,否则不要使用他们的嵌入式API。 它该死的很容易使用,但它很不方便地垃圾收集有效的内存或泄漏你所有的内存。
  • 永远不要,永远,甚至接近SVN,除非没有选择,不要编译自己的。 在SVN中事情经常发生变化,如果你的项目非常庞大,很可能你最终会实现一些在发布版本上不起作用的东西。
  • 不要试着自己解决问题,使用IRC频道。 那里的人是有帮助的,你会在几天后为自己节约 - 不要犯同样的错误。
  • 祝你好运!

    编辑:我说不从源代码(发行版或SVN)编译你自己的原因是,它很容易配置它比释放二进制文件和隐藏错误,例如垃圾收集。

    编辑2:忘了回答你的问题的第二部分。 在我的情况下,我没有移植代码的问题,但我没有使用任何特定于MS的库(WinForms,ASP.NET等)。 如果你只使用System。*的东西,你会没事的。 除此之外,你可能会遇到问题。 虽然单声道2.0是相当稳固的。


    我发现Mono大多数与MS兼容。 因此,我只需使用MS进行编译,然后在任何地方运行,就像Java一样!

    Mono在Linux上的表现与MS非常接近,在某些情况下慢2倍,而在Windows上运行Mono时低5到10倍(但你应该坚持MS)。


    我有一些Mono的经验。

    纯.NET的东西(如业务逻辑,控制器或算法)可以移植,没有任何问题。 然而,奇怪的事情开始出现在与操作系统,UI,服务或持久性交互的组件中。 所以要准备一些调试和黑客行为。

    可能有帮助的事情:

  • 组件驱动开发 - 以便代码被Windows .NET和Mono重用,而差异则被隔离和测试)
  • 持续集成运行并根据Mono和MS.NET检查所有内容,以便尽可能快地发现可能的问题(也推荐自动部署和完整性检查)
  • Mono中没有太多用于shell开发的UI组件套件。
  • 当组件供应商说他的代码“与Mono兼容”时,它与“在Mono上运行并且受支持”不同。
  • 尽管目前有一些公司正在与Mono合作生产,但我仍然要等到因为:

  • 缺乏体面和商业支持的UI组件套件
  • 高效的垃圾回收问题
  • 不是最好的调试体验(与VS 2010中的历史调试器相比)
  • PS:如果有一家公司提供完全托管的云计算解决方案(不只是一个虚拟机,而更像是Hadoop等同于.NET的),那么尽管存在这些问题,我仍然会被迫跳入。

    链接地址: http://www.djcxy.com/p/52205.html

    上一篇: Should I use Mono on a real project?

    下一篇: Is .NET/Mono or Java the better choice for cross