将一个应用从Delphi迁移到Silverlight C#

3

我有一个使用Delphi 5和Paradox开发的传统台式会计应用程序,我打算将其迁移到基于Web的Silverlight(出于用户体验考虑)应用程序,并配合使用SQL Server。

有人能建议一种快速实现此事的方法吗?

我知道这是一个非常泛泛的问题,我不需要具体的答案,而是希望来自SO用户的意见和经验。

我的主要关注点是迁移方法,可能的架构和设计模式(对于SL,我知道MVVM)。


1
我也非常感兴趣。我有一个需要迁移的传统Winform应用程序,同时考虑使用Silverlight。非常关注能够快速迁移。MVVM有很多恐怖故事,需要花费很长时间才能完成。 - e36M3
@e36M3:我认为,你使用WinForms应用程序会更好,因为你可能可以重复使用大部分代码,至少也可以重复使用一些代码。但对于我来说,这是完全重新编写的情况 :-( - Numan
3个回答

1

我的建议是,在需要额外功能时,使用Silverlight创建“增值”附加组件和更新应用程序,直到您拥有类似完整产品的东西。

对我来说,开发Silverlight似乎需要很长时间,并且对于商业应用程序的用户体验与ASP.NET Ajax相比并没有显著改进(如果Ajax被正确地执行)。我想象一下,如果您今天坐下来完全重新编写一个相当大的Silverlight应用程序,那么在您完成开发之前,Silverlight将会终止生命周期(除非您当然向其投入了大量团队)。


1
如果您的业务逻辑与 UI 良好分离,建议先将代码迁移到 Delphi Prism 而非 C#,这样可以提供更短的迁移路径。如果您的业务逻辑与 UI 紧密耦合(就像 10-15 年前经常发生的情况),那么从头开始重写可能是一个更好的选择。
当您将所有代码用 Pascal 完成并运行后,如果需要最终将其重写为 C#,凭借反编译器的帮助几乎是微不足道的。

1

快速?这是每个经理都想要的,但我怀疑。

您拥有根本不同的UI模型和不同的编程语言。 除非这些应用程序很小,否则不太可能在短时间内手动转换它们(即使您自己打算按“我打算”)。

Gartner Group已分析了手动迁移,并建议如果一切“类似”,实际转换率为〜150行/天,这是可能的,因为您正在从一个工作的、调试过的应用程序上进行更或多或少直接的翻译。(SLOC中的应用程序有多大?)因此,如果您有75,000行代码,至少需要500人天。 您可以提出Delphi作为编程语言和C#相似的情况。对于Delphi UI和Silverlight,您无法合理地提出这种情况,因此这个估计是较低的下限。

有人会说,“只需扔掉它并从头开始重新编码”。除非你的生产力超过每天150行调试代码 [经典软件工程文本会告诉你这个数字要小得多],否则这将需要更长时间。通常它会失败,因为最终你会忘记当前程序中存在哪些功能,并且在开发后期或更糟糕的是尝试部署后才重新发现它们。通常情况下,旧应用程序在新应用程序构建时继续发展(记住,距离新应用程序至少还有500个人日!),而新应用程序必须赶上这些变化。如果应用程序具有任何重要规模(例如一百万行),则通常会阻止新应用程序成为可用的应用程序。另一种思考方式是,“建立原始应用程序需要多长时间?”和“为什么建立替代品会变得容易得多?”结果因人而异,如果你能创造奇迹,就不同了。

我非常有偏见的观点(我建造语言翻译工具)是自动化翻译是最实用的方法之一。这也有其成本,无论别人告诉你什么,它们都不是现成的产品。您必须设置翻译器,这也需要很多精力,但是这种精力与使用的语言和(UI)库功能的大小成比例,而不是应用程序的大小,因此随着程序变得越来越大,它更加有效。仅针对语言翻译部分,编写和测试仍需数百个人日。区别在于,一旦设置完成,您可以将其应用于任何大小和状态的现有应用程序。还有更多的复杂性,但是这种方法克服了手动转换的“无法赶上”问题和“无法获得足够的编码人员进行手动翻译”的问题。

有关更多详细信息,请参见我的如何在语言之间进行翻译的答案

如果您的应用程序相对较小,则我认为没有好的答案。手动翻译或重新编码可能是您唯一的(丑陋)选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接