从头开始扩展Java Web应用程序

我即将开始开发一个大型系统,并且我正在努力向哪个方向前进。 我之前已经完成了大量的Java Web应用程序,并且我有很多有关Servlet容器和GWT的经验以及Spring的一些经验。 问题在于我的大部分webapps被扔在了一起,仅仅是为了证明概念,我正在努力的是使用什么样的框架。 我需要同时拥有基于浏览器的应用程序和旨在支持从移动设备(现在的Android和iPhone)访问的Web服务。 理想情况下,我想设计这个系统的方式是,我不会为每个客户端(浏览器和电话)重写所有的servlet,尽管我不介意在那里进行一些小的检查来正确格式化数据。

另外,虽然我现在是唯一的开发者,但事实并非如此,我想设计一些能够在流量和开发人员方面都能很好地扩展的东西(不仅仅是一场噩梦保持)。

因此,我现在正在计划使用GWT来设计基于浏览器的界面,但我正在努力重新使用该代码来展示移动设备的界面(很可能是xml)。 我认为,使用GWT RPC可以让浏览器中的所有AJAX操作变得相对容易,但是可能会使手机难以生成xml。 另外,我喜欢使用像Hibernate这样的持久性和Spring Security来保证整个事情的想法。 再次,我不确定那些将会与GWT合作得如何(我认为Hibernate应该没问题...)

这里显然比我在这里介绍的更多,但我试图给你5分钟的概述。 我有点难过,想知道社区中的任何人是否有从这个地方开始的任何经验。 我试图做的事情是否有意义? 这是现实吗? 毫无疑问,我可以让所有这些框架都使用相同的语言,我只是想知道是否值得花时间与他们斗争。 另外,我是否错过了一个真正有益的框架?

预先感谢并对比较宽泛的问题感到遗憾...

克里斯


因为我有一些相关的经验,所以我会在这里非常具体。 并非我所写的所有内容都适用,但我希望能有所作为。

我的建议是将任何直接依赖任何框架的代码保留为“愚蠢”的尽可能。 如果可以的话,可以考虑这样的代码或多或少是一次性的(实施方面,暴露给客户的API合同当然需要稳定)。

关注什么使得你的应用程序具有独特性,并试图独立于GWT等。Facade模式是我可以推荐的 - 将应用程序特定的逻辑保留在一个背后,并通过为它呈现表示层来布局它,这对我们很好。 如果您的后端依赖于第三方基础架构(通过Web服务等),请使用适配器模式将这些依赖关系与代码分离。

在过去的5年中,我花费了大部分工作时间来构建与您在许多方面描述的内容相匹配的内容。 今天,它更多的是一个应用程序框架,然后是一个应用程序 - 它有几个不同的浏览器界面(WAP /标准Web + Ajax / Facebook应用程序),一个用于双向SMS使用的接口和一个用于厚移动客户端的REST / XML接口 - BREW ,iPhone,Android和黑莓。

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

使用多种不同的表示层框架(例如Wicket和Restlet在我们的例子中)并不成问题,只要这些代码保持精简并且业务规则不在其中(尽可能)。 没有什么说您的浏览器界面必须与您的移动客户端界面打包到同一个WAR中 - 使用Spring,您可以轻松地将多个Web应用程序连接到同一个外观。 这对我们很有帮助,特别是允许多个开发人员在应用程序的单独部分上工作。

在我看来,试图在表示层实现代码的最大重用会造成更多的伤害而不是好的。 这一直是我们应用程序中最不稳定的部分,超出了我们预期的范围。

链接地址: http://www.djcxy.com/p/1169.html

上一篇: scale Java webapp from the ground up

下一篇: Creating an appropriate index for a frequently used query in SQL Server