我有一个使用 Delphi 5 和 Paradox 开发的遗留桌面会计应用程序,我打算将其迁移到带有 SQL Server 的基于 Web 的 Silverlight(为了 UX)应用程序。
任何人都可以提出一种快速实施的方法吗?
我知道这是一个非常开放的问题,我不是在寻找具体的答案。相反,来自 SO 用户的意见/经验。
我主要关心的是迁移方法、可能的架构和设计模式(对于 SL,我知道 MVVM)实现。
我有一个使用 Delphi 5 和 Paradox 开发的遗留桌面会计应用程序,我打算将其迁移到带有 SQL Server 的基于 Web 的 Silverlight(为了 UX)应用程序。
任何人都可以提出一种快速实施的方法吗?
我知道这是一个非常开放的问题,我不是在寻找具体的答案。相反,来自 SO 用户的意见/经验。
我主要关心的是迁移方法、可能的架构和设计模式(对于 SL,我知道 MVVM)实现。
我的建议是在需要额外功能时使用 Silverlight 为您的应用程序创建“增值”附加功能和更新,直到您获得类似于完整产品的东西。
对我来说,开发 Silverlight 似乎需要很长时间,而且业务应用程序的 UX 并没有比 ASP.NET Ajax 得到很大改进(如果 Ajax 做得正确的话)。我想如果您今天坐下来在 Silverlight 中完全重新编写一个体面大小的应用程序,那么 Silverlight 将在您的开发完成之前结束生命(当然,除非您投入了一个庞大的团队)
如果您的业务逻辑与 UI 分离得很好,您可以从将代码“移植”到 Delphi Prism 而不是 C# 开始。这提供了更短的迁移路径。如果您的业务逻辑与 UI 紧密耦合(就像 10 到 15 年前经常发生的那样),那么从头开始重写所有内容可能是一个更好的主意。
一旦你在 Pascal 中启动并运行了所有代码,在反编译器的帮助下用 C# 重写它(如果你最后需要它)几乎是微不足道的。
迅速地?这是每个经理都想要的,但我对此表示怀疑。
您拥有根本不同的 UI 模型和不同的编程语言。除非这些应用程序很小,否则不太可能在任何短时间内手动转换它们(或者甚至您自己,因为 OP 似乎暗示“我打算”)。
Gartner Group 分析了手动迁移,并建议如果一切都“相似”,则实际转换率为 ~~ 150 行/天,这是可能的,因为您或多或少地直接从一个工作的、经过调试的应用程序进行翻译。(SLOC 中的应用程序有多大?)因此,如果您有 75,000 行代码,那么您最少需要 500 个工日。您可能会认为 Delphi 作为编程语言和 C# 是相似的。对于 Delphi UI 和 Silverlight,您无法合理地提出这种情况,因此这个估计值是一个下限。
有人说,“把它扔掉,从头开始重新编码”。除非您的生产力每天超过 150 行已调试的代码(经典的软件工程教科书会告诉您它比这要小得多),否则这将花费您更长的时间。通常它会失败,因为您最终忘记了当前程序中存在哪些功能,并在开发后期重新发现它们,或者在尝试重新部署后更糟。通常发生的情况是旧应用程序在构建新应用程序的同时继续发展(请记住,您距离新应用程序最少 500 个工作日!)并且新应用程序必须赶上这些变化。如果应用程序具有任何严重的规模(例如,一百万行),这通常会阻止新的应用程序可用。换一种方式来思考这个问题,“
我非常有偏见的观点(我构建了语言翻译工具)是最实用的方法之一是自动翻译。这也有其代价。无论有人告诉你什么,它们都不是现成的物品。您已经设置了翻译器,这也需要大量精力,但该精力与语言的大小和(UI)库功能成正比使用,而不是应用程序大小,因此随着程序变大,它会更有效。对于语言翻译部分,这仍然需要数百个工作日的编码和测试。不同之处在于,一旦设置好,您就可以将其应用于现有应用程序,无论大小,无论它处于何种状态。还有比这更多的复杂性,但这种方法克服了手动转换的“赶不上”问题,以及“无法获得足够的编码人员来手动翻译它”。
有关更多详细信息,请参阅我关于如何在语言之间进行翻译的答案。
如果您的应用程序相对较小,恕我直言,没有好的答案。手工翻译或重新编码可能是您唯一(丑陋的)选择。