进行实际应用,Mono 准备好了吗?

  • Abel Avram
  • 霍泰稳

2008 年 10 月 27 日

话题:.NET开源DevOps语言 & 开发架构

在技术问答网站Stack Overflow上,有人提问“Mono 的黄金时间来了吗?”。包括 Mono 项目创始人Miguel de Icaza在内的许多用户进行了回答,这些讨论对于判断在 Mono 上部署应用的时机很有帮助。

Miguel 的回答主要基于两个场景:

a)  假设你在移植现有的应用,对 Mono 是否能完成该任务有所疑虑;

b) 假设你计划写一些新代码,想了解 Mono 是否功能够好。

对于第一个场景,Miguel 建议先运行 Mono 迁移分析器工具,也就是 MoMA。如果 MoMA 没有提示异常或者异常比较少,那么就可以对现有应用进行移植。Miguel 提供了一些 MoMA 的分析状态报告:

根据印象中那些基于用户提交的 MoMA 状态报告,大约有 50% 的应用可以直接移植,25% 的需要一周的调整工作(比如重构,改编等),15% 的需要对你原有的代码进行大幅改动,其他的则不值得移植,因为它们和 Win32 绑定的太紧密。这时,不论是从头重做,还是基于商业考虑将代码变得可移植,都需要几个月的工作量(至少从我们现有的报告中看到是这样)。

据 Miguel 说,如果启动一个新项目的话,事情就简单许多:

如果你从头开始一个新项目,事情就很简单了,因为你只会用到 Mono 中现有的 API。只要你使用现有的支持平台(比如.NET 2.0,以及 3.5 中包括 LINQ 和 System.Core 在内的所有核心更新,和 Mono 所有的跨平台 API),那就万事大吉。

对于提问的问题,其他用户也表达了他们的观点,Jon Galloway 说:

对于.NET 2.0 功能来说,Mono 做得已经很好了。目前许多.NET 3.x 功能正在开发之中,还没有完成。

最近我在 SubSonic 上运行了 MoMA,只发现了一个问题——Nullable 类型的一个奇怪应用。那么大的代码库,能有这样的成绩很难得。

在语言层面,Mono 编译器完全遵从 C# 3.0 语言规范

Jonathan Holland 也提出了自己的观点:

在桌面端,如果你只是使用 GTK#,Mono 会工作的很好。对 Windows.Forms 的实现还有点问题(比如,不能使用 TrayIcon's),但已经进步很多了。另外,GTK# 是一个比 Windows 表单更好的工具包。

在 Web 端,Mono 实现了 ASP.NET 的绝大部分功能,大多数网站基于它都运行的很好。这儿的问题是找到一个在 Apache 上装有 mod_mono 的主机,或者自己去做,如果你有访问主机的权限。

另一个 Stack Overflow 用户 Daniel 指出:

如果你想使用 WPF,还需要再等一等,因为 Mono 目前还没有计划对它进行支持:http://www.mono-project.com/WPF

看上去 Mono 已经可以进行实际应用了,至少对新应用或者那些顺利通过 Moma 兼容性测试的应用如此。

查看英文原文:Is Mono Ready for Production?

.NET开源DevOps语言 & 开发架构