当我看到标题时,我只是想潜伏,成为著名的 PB 偏执狂。那好吧。感谢您的信任投票,伯纳德。
我的第一个建议是摒弃自欺欺人的语言。如果我吃了一半“精简版”芝士蛋糕,我仍然会看不到我的腰带。迁移可能只需要 10 分钟。您将要做的是重写。 时间需要作为重写来衡量。 风险需要作为重写来衡量。并且设计工作应该作为重写来衡量。
是的,我说的是设计努力。 “迁移”让人联想到通过某个黑匣子抽取代码的图像,其中的翻译反映了从另一边出来的原始代码。您是否想复制 1994 年犯下的相同设计错误,而您多年来一直忍受?即使有优秀的代码,我猜 PowerBuilder 中优秀的设计选择在 C# 中可能是糟糕的设计选择。直接转换是否忽略了平台的力量和优势?在接下来的 15 年里,您会忍受忽视良好 C# 设计的后果吗?
抛开那些咆哮不谈,因为你没有提到你“迁移到 .NET”的动机,所以很难建议你可能需要哪些选项来降低重写的风险。如果您的管理层只是简单地认为 PowerBuilder 开发人员闻起来很糟糕并且需要从办公室中删除,那么在重写时祝您好运。
如果您只是想部署 Windows 窗体、Web 窗体、程序集或 .NET Web 服务,或利用 .NET 库,那么正如 Paul 所提到的,迁移到 11.0 或 11.5 可以让您实现目标,并且努力接近迁移。 (我建议再次审查并确保您已经为新平台设计了一个好的设计,尤其是 Web 窗体,但这种工作应该比重写要小得多。)如果您想部署 WPF 应用程序,我知道一年的等待时间很长,但研究 PowerBuilder 12 可能是值得的。如果正确使用,WPF 功能可能会将 PowerBuilder 置于独特而强大的位置。
如果保证将来会进行重写(淋浴似乎更便宜),您可能需要分阶段进行转换。 DataWindow.NET 使您可以随身携带 DataWindows。 (我本周的宠物理论是,PowerBuilder 开发人员认为 DataWindow 是理所当然的,直到他们必须重现内置的所有功能。)能够放弃预先存在的、预先测试的、多行的、可滚动的、最小的资源消耗、可打印、数据绑定的动态 UI,生成具有内置逻辑记录锁定和数据库错误转换为事件的最小 SQL,进入新应用程序是一大优势。
您还可以通过将 PowerBuilder 代码转换为可由 .NET 应用程序使用的东西来分阶段进行转换。如前所述,您可以使用现有的 PB 10 生成 COM 对象,但必须移动到 11.0 或 11.5 才能生成程序集。这个值可能取决于您的应用程序的分区程度。如果您的业务逻辑在 GUI 事件和函数中蜿蜒而行,而不是被划分为非可视对象(也称为自定义类),那么它的价值可能是有问题的。尽管如此,这是一个设计faux pas,可能应该在完全转换为 C# 之前修复;这可以在保持 PowerBuilder 应用程序的同时完成,作为分阶段和全面转换的初步步骤。
毫无疑问,我宁愿看到您继续使用 PowerBuilder。失败了,我希望看到你成功。请记住,一旦你吃了第一口,you'll have to finish it。
祝你找到那条腰带好运,
特里。
我看到您提到将“核心组件”迁移到 .NET 以开始。正如您现在可能猜到的那样,我认为分阶段的方法是一个明智的决定。现在“核心”的定义可能是有争议的,但相反的观点又如何呢?值得深思? (显然,这周开始节食是错误的。)根据 PB 现在的位置,很难根据应用程序功能(例如,PB 中的应收账款,C# 中的应付账款)在 PB 和 C# 之间划分您的应用程序。一个可能起作用的部门是 GUI 与业务逻辑。如前所述,将业务逻辑从 PB 中抽取到 C# 可以使用的可执行文件中已经成为可能。用 C# 构建 GUI,从 PB 复制 DataWindows 并将业务逻辑作为 COM 对象或程序集抽出,怎么样?反过来,要在 PB 中使用 .NET 程序集,您要么必须升级到 11.x 并迁移到 Windows 窗体,要么将它们放在 COM callable wrapper 中。
或者,只需在 PowerBuilder 中培训您的 C# 开发人员。这可能只是谣言,但我听说新的 PowerBuilder 营销标语将是“如此简单,即使是 C# 开发人员也可以使用它”。 ;-)