Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于从头开始设计大规模JavaWebApp的建议_Java_Spring_Gwt - Fatal编程技术网

关于从头开始设计大规模JavaWebApp的建议

关于从头开始设计大规模JavaWebApp的建议,java,spring,gwt,Java,Spring,Gwt,我即将开始开发一个大规模的系统,我正在努力朝着哪个方向前进。我以前做过很多Java web应用程序,对servlet容器和GWT有很多经验,对Spring也有一些经验。问题是,我的大多数网络应用程序都是为了证明概念而拼凑在一起的,而我正在苦苦挣扎的是使用哪套框架。我需要一个基于浏览器的应用程序和一个支持移动设备(Android和iPhone)访问的web服务。理想情况下,我希望以这样一种方式设计这个系统,即我不会为每个客户端(浏览器和电话)重写所有servlet,尽管我不介意在其中进行一些小检查

我即将开始开发一个大规模的系统,我正在努力朝着哪个方向前进。我以前做过很多Java web应用程序,对servlet容器和GWT有很多经验,对Spring也有一些经验。问题是,我的大多数网络应用程序都是为了证明概念而拼凑在一起的,而我正在苦苦挣扎的是使用哪套框架。我需要一个基于浏览器的应用程序和一个支持移动设备(Android和iPhone)访问的web服务。理想情况下,我希望以这样一种方式设计这个系统,即我不会为每个客户端(浏览器和电话)重写所有servlet,尽管我不介意在其中进行一些小检查以正确格式化数据

此外,虽然我现在是唯一的开发者,但这不一定是未来的情况,我想设计一款在流量和开发者数量方面都具有良好伸缩性的产品(这不仅仅是一场维护的噩梦)

因此,我现在正计划使用GWT设计基于浏览器的界面,但我正在努力解决如何使用该代码为移动设备提供界面(很可能是xml)。我认为,使用GWT-RPC可以相对容易地在浏览器中实现所有AJAX,但可能会使为移动电话生成xml变得困难。此外,我喜欢使用Hibernate之类的工具来实现持久性,并使用Spring安全性来确保整个过程的安全。再一次,我不确定它们与GWT的配合程度(我认为Hibernate应该很好…)

显然,这方面的内容比我在这里介绍的要多得多,但我试着给大家5分钟的概述。我有点困惑,想知道社区里是否有人有过从这里开始的经验。我想做的有意义吗?现实吗?我毫不怀疑我可以让所有这些框架都使用相同的语言,我只是想知道是否值得花时间与它们抗争。还有,我是否错过了一个真正有益的框架

提前感谢,并为相对广泛的问题感到抱歉


克里斯

由于我有一些相关的经验,我在这里将非常具体。并非我将要写的所有内容都适用,但我希望有些东西能适用

我的1。建议是让任何直接依赖于任何框架的代码尽可能“愚蠢”。如果可以的话,考虑这些代码或多或少是一次性的(实现明智,API合同暴露给客户需要稳定)。 关注是什么使您的应用程序独特,并尝试使其独立于GWT等。这是我可以推荐的—将特定于应用程序的逻辑保留在一个逻辑后面,并通过连接表示层将其公开,这对我们很有帮助。若您的后端依赖于第三方基础设施(通过web服务等),那个么使用将这些依赖关系从代码中分离出来

在过去的5年里,我把大部分的工作时间都花在了构建一个在很多方面都符合你描述的东西上。如今,它更多的是一个应用程序框架,而不是一个应用程序——它有几个不同的浏览器界面(WAP/标准web+ajax/Facebook应用程序),一个双向SMS使用界面,以及一个用于厚移动客户端(BREW、iPhone、安卓和黑莓)的REST/XML界面

对于框架,为了持久性,我们使用了Hibernate。所有不同的代码都用Spring绑定在一起。浏览器界面已经从Struts(1.x)移植到Wicket。SMS和移动客户端接口构建在Restlet之上

使用多个不同的表示层框架(比如我们的例子中的Wicket和Restlet)并不是一个问题,只要代码保持精简并且业务规则不在其中(尽可能)。没有什么可以说你的浏览器界面必须和你的移动客户端界面打包在同一场战争中——有了Spring,你可以很容易地用同一个外观连接多个web应用程序。这对我们很有帮助,特别是在允许多个开发人员处理应用程序的良好隔离部分方面


在我看来,试图在表示层实现代码的最大重用弊大于利。这一直是我们应用程序中最不稳定的部分,超出了我们所能预料到的。

不要关闭这个问题,这是一个关于在开始一个大型项目之前要考虑哪些问题的有效问题。谢谢您的深入回答。我认为你提出了一些非常好的建议,对我帮助很大。我真诚地感谢你的经历!