2010-06-13 80 views
7

我即将开始开发一个大型系统,我正在努力向哪个方向前进。我之前已经完成了大量的Java Web应用程序,并且我有很多有关Servlet容器和GWT的经验以及Spring的一些经验。问题在于我的大部分webapps被扔在了一起,仅仅是为了证明概念,我正在努力的是使用什么样的框架。我需要同时拥有基于浏览器的应用程序和旨在支持从移动设备(现在的Android和iPhone)访问的Web服务。理想情况下,我想设计这个系统的方式是,我不会为每个客户端(浏览器和电话)重写所有的servlet,尽管我不介意在那里进行一些小的检查来正确格式化数据。另外,虽然我现在是唯一的开发者,但事实并非如此,我希望设计一些能够在流量和开发人员方面都能很好地扩展的东西(isn'只是一场噩梦来维持)。从头开始设计大型Java Web应用程序的建议

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

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

在此先感谢和抱歉的比较广泛的问题...

克里斯

+0

不要关闭它,这是一个有效的问题,在开始构建大型项目之前需要考虑的要点。 – 2010-06-13 03:30:13

回答

3

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

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

关注什么让你的应用程序具有独特性,并尝试使其独立于GWT等。facade pattern是我可以推荐的东西 - 将应用程序特定的逻辑保持在一个后面,并通过为它呈现表示层来布线我们很好。如果您的后端依赖于第三方基础设施(通过网络服务等),请将这些依赖关系从代码中与adapter pattern分离。

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

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

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

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

+0

感谢您的深入解答。我想你已经提出了一些非常棒的建议,这对我有很大的帮助。我真诚感谢您的体验! – 2010-06-14 19:13:42