现有的应用程序代码代表了一个开发者在时间和金钱上的大量投入。理想情况下,现有代码可以通过某种平台相关的接口结合起来,这种接口提供了一个快速方案,帮助利用原有的资源。但在实践中,这种转换平台的做法并不总是容易的,Patrick Smacchia 最近的文章《Real world feedback on a .Net to Mono migration》就他把现有的.NET 代码移植到Mono 平台上的经历给出了一些有用的想法。
Smacchia 提到他的公司最近把他原先的产品 NDepend (为.NET 平台而写的)移植成一个新的产品 JavaDepend ,这个新的产品运行在 Windows 和 Linux 的 Mono 上面。总的来说,他认为这次的移植非常成功,使用 Mono 平台帮他重用了大约 90% 的现有代码。
值得注意的是,有些工具可以简化平台移植的工作。Mono 的 Migration Analyzer (MoMA)可以用来查找 Mono 尚未支持的与平台相关的代码以及使用了.NET 特性的代码。正如它的主页所说的,Migration Analyzer 可能产生一些错误的结果,也无法捕获所有的潜在问题。但是,Smacchia 对 MoMA 的表现非常满意。MoMA 识别出来的最大问题和 NDepend 所用的第三方 GUI 库有关。为了避免分别维护 Windows 和 Linux 的 GUI 代码,开发者选择了使用包装类,它们可以把自有的 GUI 代码映射到标准的.NET 组件。
Smacchia 对 Mono 的 GDI+ 有着极高的评价,特别强调道“Mono 的 GDI+ 实现非常胜任!太棒了!我必须祝贺 Mono 组…”。最后,有一些 Windows Form 组件(DataGridView/ListView 和 RichTextBox)在 Mono 上表现不够稳定。不过,Mono 项目的开源性质允许开发者针对他们的需要进行特定修改,而不必等待 Mono 的官方发布修正相关问题。
评论