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

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