逐一将表单转换为.NET,然后通过COM-Interop从VB6应用程序调用这些表单,这是一个好主意吗?
这样做的好处是,在整个过程结束时,您只需将VB6应用程序的“外壳”转换为新的.NET应用程序,而所有表单都已准备好在.NET中使用。
是否有更好的策略?
逐一将表单转换为.NET,然后通过COM-Interop从VB6应用程序调用这些表单,这是一个好主意吗?
这样做的好处是,在整个过程结束时,您只需将VB6应用程序的“外壳”转换为新的.NET应用程序,而所有表单都已准备好在.NET中使用。
是否有更好的策略?
如果是我,我会直接撕掉创可贴。因为在应用程序中加入一个中间状态 [.NET表单和COM-interop] 只会增加不必要的复杂性而没有任何好处。
有很多关于转换策略的建议。
你所描述的逐步方法会增加额外的工作量,因为你将尝试让VB6和.Net代码共存,除了最简单的应用程序之外,这种方法充满了问题。在未来的某个时候,你可能会遇到一个致命的问题。
我建议采用以下方法(基于成功将600,000行VB6应用程序迁移到.Net):
确保你现有的VB6代码库已经正确地进行版本控制和标记。 为你的VB6代码库编写回归测试,最好是自动化的。 以已知的VB6代码标签基线作为单个实体迁移到.Net。你的客户继续使用VB6版本。 在迁移后的代码上运行回归测试。 当所有测试都通过后,将任何自原始VB6基线以来发生的VB6更改应用于.Net代码。 交付给UAT,然后上线。
你会一次只处理一个表格,使用你的系统并发地使用一个或两个数据模型进行大规模复杂数据转换吗?显然这样做会带来麻烦和复杂性。对于大规模数据转换的最佳实践是以最短的停机时间将整个数据模型带到所需的最终状态。同样的道理也适用于大规模代码转换。分阶段地进行长期转换只会增加劳动成本和技术风险。
在我看来,更好的方法是制定.NET代码的最终开发和架构标准,然后投资于一个过程,帮助您以符合这些标准并准确保留遗留业务规则和功能行为的方式高效地重写系统。长期过渡和复杂的混合/中间解决方案最多只是权宜之计,最坏的情况下会导致业务问题和项目失败--应该避免。更好的方法将使您能够将遗留软件以内部一致、独立和良好形式的部分交付到新平台上。此外,以较少、较大的部分交付迁移将比许多小部分更有效率,更少干扰。
使这种方法可行的关键是使用下一代VB6/COM/ASP到.NET工具,允许您迭代地校准、定制和验证自动重写过程,平衡自动转换与手动工作。Great Migrations提供的工具专门设计用于支持这种方法。我们称之为“工具辅助重写”。我们已经在几个大型迁移项目上使用了这种方法,包括将VB6/COM的应用程序组合升级到重新设计的C#/.NET,其代码行数达到了1.2M。
免责声明:我为Great Migrations工作。