在我们公司,我们开发和销售VB6应用程序,我们认为现在是时候将其迁移到.Net。
主要原因是:
我知道从头开始重写应用程序是迁移到.Net的最不推荐的方法。我完全赞同这一点!抛弃十多年的代码感觉是错误的,浪费金钱,我很难向我们的管理层推荐和证明它。
但是现在我没有看到另一种方法。
让我告诉你一些关于申请的内容:
就像我说它已经发展了十多年。已经有很多开发人员在开展这项工作,其中大多数都是当时没有经验的。我们从最初的团队中留下了一名开发人员。该应用程序是他的第一个也是最大的软件项目,到目前为止,他意识到过去15年中做出的许多架构决策都是错误的,其他人当时是正确的,但没有进行重构以满足其他部分的变更。应用程序等在某个时间点变得错误。此应用程序似乎是代码腐烂的展示示例。
我们正在讨论大约150个KSLOC的应用程序,所有这些都在一个可执行文件中。它使用大约15个外部DLL,其中一些是第三方ActiveX控件,其中一些是我们自己的.Net程序集。
向应用程序添加新功能仍然可以完成,但与其他.Net应用程序相比需要很长时间。原因是代码库中的每一个小变化都需要在整个地方进行更改。改变是可能的唯一原因是因为一个开发人员只知道应用程序的大部分依赖性和怪癖。你可能已经猜到了意想不到的副作用和错误率非常高。
我首先考虑迁移该应用程序是首先清理和重构,然后使用Artinsoft / Microsoft / WhoEver中的工具进行迁移/转换,然后再次重构以获得一个漂亮而干净的.Net应用程序。
但是我看到了一些问题:
因此。我认为,尽管从头开始重写需要花费大量的时间和资源,但它仍然是我们唯一的选择。
我错过了一个选项吗?您是否看到不必重写该应用程序的可能性?
答案 0 :(得分:1)
我建议您退后一步,阅读Brian Foote& Joseph Yoder(伊利诺伊大学)。它提供了一些建筑洞察力,可以解决您遇到的问题以及解决问题的方法。它的标题是“泥球大球”。 (请不要笑,这是一篇严肃的论文)。这是摘要:
虽然很多注意力集中在高级软件上 建筑模式,实际上是事实上的标准 软件架构很少被讨论。本文考察了 最经常部署的架构:MIG BALL OF MUD。一个大球 OF MUD是一个随意的,甚至是偶然的,结构化的系统。它的 组织,如果可以称之为,则更多地由权宜之计决定 而不是设计。然而,它的持久受欢迎程度不仅仅是指示性的 一般无视建筑。
这些模式探索了鼓励a的出现的力量 MUD的大球,以及这种方法的无可否认的有效性 软件架构。为了变得如此受欢迎,它必须这样做 对的东西。如果有更高尚的建筑方法 竞争,我们必须了解导致BIG BALL OF的力量 MUD是,并研究解决它们的替代方法。
BIG BALL OF MUD出现了许多其他模式。我们 依次讨论它们。这些模式背后有两个主要问题: 为什么这么多现有系统在架构上没有区别,并且 我们可以做些什么来改善它们?
顺便说一下,我认为你最好的选择是使用当前的应用程序作为你的要求,并使用适当的设计重写VB.NET或C#中的所有内容。
答案 1 :(得分:1)
当您拥有这样的应用程序时,有四个主要选项:
此外,通过自动迁移,您实际上可以比WinForms更进一步。还有一些工具可以使用现代架构将您的C#代码一直带到Web上。
当然,我为Mobilize.Net(以前的Artinsoft)工作,这是我的偏见。 我们已经在这方面工作了大约15年,并且已经看到过几十个客户在尝试重新编写他们的应用程序之后来找我们,并且经过数月甚至数年的努力而无法提供有效的应用程序而失败。