【问题标题】:Things to keep in mind during Application Migration: ColdFusion to Spring应用程序迁移过程中要记住的事情:ColdFusion 到 Spring
【发布时间】:2010-05-13 22:00:19
【问题描述】:

这个问题是关于迁移项目的。目前,遗留应用程序位于 ColdFusion 中,我们希望将其迁移到 Spring Framework。

所以我的主要问题是:

  1. 在考虑迁移项目时需要注意哪些事项?
  2. 在考虑从 ColdFusion 迁移到 Spring Framework 时,我需要牢记哪些具体事项?
  3. ColdFusion 如何与 Spring Framework 叠加?
  4. 在开始从 ColdFusion 到 Spring 的迁移项目之前,您建议自己熟悉哪些资源?

我知道有些人可能会认为这是一个非常开放的问题,但这是我的第一个迁移项目,我从未有过任何迁移项目的经验,以及在这里寻找一些有用的指导。

【问题讨论】:

  • 让我知道这个问题是否需要一些更新......这可能会让这更值得。
  • 为什么首先迁移?升级到 CF9 并使用现代 CF MVC 框架将过时的代码重构为 CFC 怎么样?
  • 迁移是一项要求,因此必须完成。

标签: java spring coldfusion migration


【解决方案1】:

移民项目充满危险。

第一个危险是,“这既昂贵又痛苦。让我们重建 一切从头开始,并实施任何新的想法或功能 任何营销人员/经理/程序员都使用结构化方法 等等等等等等……”这条路通向厄运,因为

1) 它的工作量是无限的,并且

2) 没有人真正知道旧系统的作用(最近看过规范吗?)因此,您最终会在新系统上线后重新发现旧系统,这会极大地损害组织的能力使用新软件完成其工作。通常实际上新系统永远赶不上旧系统,因此重写会死得很惨。

进行此类迁移的正确方法是:坚持保留功能,并转换现有系统。没有新的好东西、功能、方法。

这种坚持有其自身的问题:组织经常不得不做出一些改变 在发生迁移的窗口期间出于生存原因。

要解决这个问题,您确实需要一个自动迁移工具,以便“无功能更改”规则仅在实际转换期间适用,因此尽可能短。迁移工具的开发人员可以花一些时间来构建它并彻底测试转换工具;与此同时,本组织可以通过其惯用方法来增强遗留系统。当迁移工具准备就绪时......扣动扳机,转换代码,修补问题并测试结果系统的有效性。

系统迁移后,您可以考虑彻底重组或重塑,因为您知道基本功能仍然完好。

无论您为自动迁移工具选择什么,都需要注意它生成的代码在新环境中是可维护的。许多转换器实现了真正幼稚的一对一转换,并且生成的代码最终成为 legacy-foo-coded-in-new-bar,或者在幼稚的 COBOL 到 Java 转换之后可笑地称为“JOBOL”。转换工具必须复杂地映射语言结构。 (您可能想阅读这个关于PL/1 To Java Conversion 的 SO 讨论)。

您最大的麻烦可能是“测试”。目前的系统有完整的功能测试,对吧?呃,你没有任何功能测试吗?您将如何验证新系统是否正确执行旧系统?

这里的正确答案是构建遗留系统的输入输出行为测试,并将这些测试应用于遗留系统和迁移的系统。这是很多工作,没有人愿意做,更不用说付钱了。这是迁移失败的第二种方式。

发生的最后一件事是管理层严重资金不足,并且低估了完成这项工作所需的工作时间。通常与开发团队的谈判是这样的:

Mgr:  How long to do this?
Team:  Two years...?
Mgr:  BZZZT!  Wrong answer, try again...
Team:  One year?
Mgr:  BZZT! ..
Team: (Gulping) 6 months?
Mgr:  OK, get started.

请注意这里没有对工作的实际讨论。

在 6 个月结束时,将开始相互指责。经理:“我问你们,你们说6个月……”

你的旅程很艰难。仔细准备。坚持人们确实列出了所有问题,并且他们做出了可信的估计。如果您是第一次进行迁移,则您没有良好的基础进行此类估算;如果这是该组织的第一次,它没有根据来判断任何估计是否正确。

(完全披露:我有偏见。我已经构建自动化迁移工具 22 年了。查看B2 migration。)

【讨论】:

    【解决方案2】:

    很大程度上取决于您的 CFML 应用程序的现有结构。虽然有一个可用于 CFML 的框架与 Spring 的 IoC 部分非常匹配,但我怀疑您正在考虑从非结构化 CFML 应用程序迁移到 Spring Web,而不仅仅是 IoC 部分 - 而且您正在考虑从一种语言到另一种语言:CFML 到 Java。

    所以现实是:这不是一个迁移项目,而是一个彻底的重写。

    我知道您说过“迁移是一项要求”(原文如此),但我认为您需要更多地解释导致这种情况的原因,以便人们可以提供比“你疯了,不要这样做! " - 因为您提供的信息很少,没有人能够提供有用的答案。

    至于这种迁移的机制,如果您有一个使用 ColdSpring 的结构良好的 MVC CFML 应用程序,您可以将模型逐个迁移到 Java 并使用 Spring 的IoC 而不是 ColdSpring 用于 bean 管理(您希望 Spring 成为 ColdSpring 的父 bean 工厂,以便您的 CFML 代码的其余部分仍然可以访问新迁移的 bean)。

    将所有模型(和数据访问层)迁移到 Java/Spring 后,您将处理所有 .cfm 视图页面到 .jsp 视图页面的转换,并重写所有 CFML 控制器/侦听器(取决于在哪个 CFML 框架上使用)到 Spring Web 处理程序。

    这可能是一个庞大的项目——假设一个结构良好、由 MVC 框架支持的 CFML 应用程序已经使用 ColdSpring 来管理模型。

    我敢打赌,您一开始是一个非结构化的混乱(这就是为什么有迁移指令),在这种情况下,您的大型项目只会变得更加庞大。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 2016-05-26
      • 2012-04-08
      • 2011-02-10
      相关资源
      最近更新 更多