把成熟的代碼從.NET移植到Mono
現有的應用程序代碼代表了一個開發者在時間和金錢上的大量投入。理想情況下,現有代碼可以通過某種平臺相關的接口結合起來,這種接口提供了一個快速方案,幫助利用原有的資源。但在實踐中,這種轉換平臺的做法并不總是容易的,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
來自: InfoQ