把成熟的代码从.NET 移植到 Mono

阅读数:2166 2011 年 11 月 23 日

话题:.NETC#语言 & 开发

现有的应用程序代码代表了一个开发者在时间和金钱上的大量投入。理想情况下,现有代码可以通过某种平台相关的接口结合起来,这种接口提供了一个快速方案,帮助利用原有的资源。但在实践中,这种转换平台的做法并不总是容易的,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 的官方发布修正相关问题。

查看英文原文:Migrating Established Code From .Net to Mono