我们正在考虑重新编写已经使用了4年多的Java业务管理Web服务。该软件的内部架构全部是自定义构建的,并且表示层和业务逻辑的分离很差。同样,整体模型层已经证明它无法有效地跟上不断变化的业务逻辑和需求的重构。在我计划完成这项任务时,我一直在寻找可用的框架,以便使应用程序对雇用的新开发人员和更改业务逻辑更加友好。我以前从未使用struts或JSF,但是在一个简短的概述方法中阅读它们,乍一看我们也没有过多的印象,但是我发现JSF更有趣。
首先两个框架似乎都集中在MVC模式的Controller和View部分。让您在模型/业务层上做任何事情。 (我是对的吗?)
通过返工,我们希望能够聘请外部承包商来帮助加快返工,因此找到统一的开发方法对于确保代码质量和减少不一致性和加速时间非常重要。
那么你对可能有助于这项工作的框架,实践等有什么建议。我真的不想用自定义框架重新发明轮子,并在以后找到类似情况。
答案 0 :(得分:2)
在采用这种方法时,您应该考虑以下几点:
很多人都高度评价Spring MVC,尽管如果IOC对你来说是新手(或者你不买这个概念),这可能比你想要“一下子”咬掉一点。
另一个成熟的选择是Struts(虽然我强烈建议使用Struts 2进行新开发)。
要注意的一件事是尺寸和尺寸。 “框架移植”操作的范围。如果您的应用程序迫切需要进行严格的结构重组,那么您很可能最终会从头开始并将现有业务逻辑的大块放在基于框架构建的框架上。时间/金钱/资源(和机会成本!)不应该被低估,你应该确定管理层真正购买,所以你不会把你的插头拉到中途。在这里“测量三次并减少一次”真的非常重要,并确保你可以咀嚼一大堆你可以咀嚼的工作 - 从“遗留应用”转变为“使用所有新技术的全新最先进的应用程序” “坦率地说,最好分阶段完成,而不是一次完成。
了解尺寸和尺寸会很有帮助。应用程序的相对复杂性以及它的基本性质(它是一个非常网络UI密集型应用程序,还是一个可以完成大量工作的后台系统?),以便对特定框架提出更好的建议:尽管你当然可以构建最多任何给定框架上的webapps,有些在一个方向上比另一个方向更倾斜(例如,Struts和Wicket有一个非常不同的焦点)
此外,在现有应用程序旁边尝试几个候选平台并没有错。虽然我对你当前应用的技术背板一无所知,除非你做了一些非常奇怪的事情,否则很可能安装一个或多个框架并与现有应用程序一起进行实验(例如,针对它们编写新功能,或重写部分内容)使用它们的现有代码,然后将该代码挂钩到后端)。这将让您进行实验并“在购买之前尝试”。我建议让你的团队对一个或多个“短名单”框架候选人进行调整,以了解它在实践中的运作方式。顺便说一下,这不是一种可靠的重构方法:逐步用新框架替换旧功能。
最后(我认为)一条忠告:看起来很长&很难对你的数据模型及其接口。这通常是真正的小精灵所在的地方,而且不管你想要什么样的框架。我强烈考虑将其作为您的#1重构目标,而不是采用特定框架。一个强大的数据模型将使实现任何框架(和处理升级)变得更加容易......如果您的管理层改变了方向并最终因任何原因推迟了框架升级,那么重构数据模型所花费的时间将会得到回报。 / p>
修改强>
鉴于您对产品形状的评论,我会对“非常非常小心”的建议进行双重考虑。你现在所在的地方非常普遍(而且臭名昭着)并且已经吃掉了许多团队(和职业)。你需要强烈的理解和来自利益相关者和业务方面的利益相关者的支持,因为这将是一项休假,其本质上将需要更长的时间和更长的时间。成本比你想象的要多。技术团队能够对这些变化的成本和范围保持清醒和现实的能力是成功的关键 - 如果你低估了你的预算,职业和潜在的业务本身。如果你高估了,你可能永远不会开始:)
一旦您获得管理层的强烈支持和支持,一种方法就是将此作为一个全新的产品 - 将旧的东西放在维护上,卷起袖子,开始设计所有替换系统您在之前的实施中获得的知识。在这种情况下,我将编写组件和数据交互sans-framework,然后查看给定的候选框架集将如何支持该实现。从框架开始可能会导致你到不自然的地方,并可能让你回到路边的类似地方。
一些众所周知的流行框架:
Struts1 - Granddaddy of pretty much all Java frameworks; worth a look
答案 1 :(得分:0)
如果您喜欢JSF并希望使用它,我建议使用JBoss Seam。你也可以使用Spring,但我认为使用JBoss Seam可以更轻松地使用JSF。我现在使用它差不多1年了,效果很好。如果您想将流程作为业务流程进行管理,可以尝试使用JBPM(以及Seam)。
如果您想了解有关敏捷方法的更多信息,以便改进方法和实践,请先了解敏捷宣言http://agilemanifesto.org/。然后开始尝试像XP或Scrum这样的既定方法。
但是要花点时间,开始尝试一种改变而不是混淆自己
答案 2 :(得分:0)
JSF允许您专注于组件,而基于JSP的解决方案则不如此。你仍然会发现自己编写了许多jsp'ized html的东西,而使用JSF解决方案,你真的不需要。
将RichFaces或IceFaces看作lib。 RichFaces使得AJAX类型的东西变得非常容易。只需将标记<a4j:support event="onkeyup" reRender="output"/>
添加到标准JSF控件即可。在上面的示例中,在控件的keyup事件中,它将重新呈现区域<a4j:region
或另一个JSF Richfaces标记。没什么比这更简单了。