在采用这种方法时,您应该考虑以下几点:
- 您的特定需求与重点
特定框架的
- 了解
框架(内部和在
市场)
- 学习曲线
框架,以及它在更广泛的开发者社区中的接受度和支持度。
很多人都高度评价 Spring MVC,但如果 IOC 对您来说是新手(或者您不认同这个概念),这可能比您想“一次性”咬掉更多。
另一个成熟的选择是 Struts(尽管我强烈建议使用 Struts 2 进行新开发)。
需要警惕的一点是“框架移植”操作的规模和范围。如果您的应用程序迫切需要进行认真的结构重组,那么您很可能最终基本上从头开始,并将现有业务逻辑的大块挂在基于框架的骨架上。时间/金钱/资源(和机会成本!)不应该被低估,你应该确定管理层真的会买账,这样你就不会在中途被拔掉插头。在这里“测量三次,一次切割”真的很重要,并确保你咬掉了一大块你可以咀嚼的工作——从“遗留应用程序”到“使用所有新技术的全新的最先进的应用程序” " 坦率地说,最好分阶段完成,而不是一次性完成。
了解应用程序的大小和相对复杂性以及它的基本性质(它是一个非常 Web-UI 密集型应用程序,还是一个执行大量工作的后台系统?)会很有帮助,以便使关于特定框架的更好建议:尽管您当然可以在任何给定框架上构建大多数 web 应用程序,但有些应用程序更倾向于一个方向而不是另一个方向(例如,Struts 和 Wicket 的关注点完全不同)
此外,在现有应用程序旁边尝试几个候选平台并没有错。虽然我对你当前应用的技术背板一无所知,除非你做了一些非常奇怪的事情,否则很可能安装一个或多个框架并在你现有的应用程序旁边进行试验(例如,针对它们编写新功能,或重写部分使用它们的现有代码,然后将该代码挂钩到后端)。这将让您进行实验并“在购买前尝试”。我建议让您的团队在一个或多个“候选名单”框架候选者上试一试,以了解它在实践中的工作方式。顺便说一句,这并不是一种糟糕的重构方式:逐渐用新框架替换旧功能。
最后(我认为)建议:仔细查看您的数据模型及其接口。这通常是真正的小精灵所在的地方,无论您希望使用哪种框架都可以做到这一点。我强烈考虑将其作为您的#1 重构目标,而不是采用特定框架。强大的数据模型将使实施任何框架(和处理升级)变得更加容易......并且如果您的管理层改变了您的方向并最终因任何原因延迟框架升级,重构数据模型所花费的时间将会得到回报。
编辑:
考虑到您对产品形状的了解,我会加倍强调“非常非常小心”的建议。你现在所处的位置非常普遍(而且臭名昭著),并且已经吞噬了许多团队(和职业)。您需要来自链上和业务方面的利益相关者的强烈理解和支持,因为这将是一项艰巨的任务,从本质上讲,它需要的时间和成本都比您想象的要高。技术团队对成本和变更范围的清晰和现实的能力是成功的关键——如果你大大低估了你的预算、职业生涯,甚至可能危及业务本身。如果你高估了,你可能永远不会开始:)
一旦您得到管理层的大力支持和支持,一种方法就是真正将其视为一个全新的产品 - 将旧的东西进行维护,卷起袖子,开始设计替换系统您在之前的实施中获得的知识。在这种情况下,我将制定组件和数据交互 sans-framework,然后查看一组给定的候选框架将如何支持该实现。从框架开始可能会将您带到不自然的地方,并可能让您回到路上的类似地点。
一些著名的流行框架可供查看:
Struts2 - MVC /w AJAX support
Wicket - AJAX heavy
Struts1 - Granddaddy of pretty much all Java frameworks; worth a look
Spring MVC - Spring's IOC webframework