此外,尽管我现在是唯一的开发人员,但未来的情况并不一定如此,我想设计一些在流量和开发人员数量方面都能很好地扩展的东西(不仅仅是一场噩梦)维持).
所以我现在正在计划使用GWT来设计基于浏览器的界面,但我正在努力解决如何重用该代码以呈现移动设备的界面(很可能是xml).我认为使用GWT RPC会使浏览器中的所有AJAX变得相对容易,但可能会使手机生成xml变得困难.另外,我喜欢使用Hibernate等持久性和Spring Security来保护整个事物的想法.再一次,我不确定那些与GWT合作的程度如何(我认为Hibernate应该没问题……)
显然,这比我在这里介绍的要多得多,但我试着给你5分钟的概述.我有点难过,想知道社区中是否有人从这个地方开始有任何经验.我想做的事情有意义吗?这是现实的吗?我毫不怀疑我可以让所有这些框架说同一种语言,我只是想知道是否值得花时间与他们战斗.另外,我错过了一个真正有益的框架吗?
在此先感谢并抱歉相对广泛的问题……
克里斯
解决方法
我的建议是将任何直接依赖于任何框架的代码保持为“愚蠢”.如果可以,请考虑这些代码或多或少的一次性(实现明智,暴露给客户的API合同当然需要稳定).
专注于使您的应用程序独一无二的东西,并尝试使其独立于GWT等.我可以推荐facade pattern – 将特定于应用程序的逻辑保留在一个并通过将表示层连接到它来公开它对我们有用.如果您的后端依赖于第三方基础架构(通过Web服务等),请使用adapter pattern将这些依赖项与您的代码分离.
在过去的5年里,我花了大部分的工作时间来构建与你在很多方面描述的东西相匹配的东西.今天它更像是一个应用程序框架,然后是一个应用程序 – 它有一些不同的浏览器界面(WAP /标准web ajax / Facebook应用程序),一个用于双向SMS使用的界面,以及一个用于胖移动客户端的REST / XML界面–BREW,iPhone,Android和Blackberry.
说到框架,为了持久性,我们使用了Hibernate.所有不同的代码都与Spring捆绑在一起.浏览器界面已从Struts(1.x)移植到Wicket. SMS和移动客户端接口构建在Restlet之上.
使用多个不同的表示层框架(例如我们的Wicket和Restlet)并不是问题,只要该代码保持精简并且业务规则不受其限制(尽可能).没有任何内容表明您的浏览器界面必须与移动客户端界面打包在同一个WAR中 – 使用Spring,您可以轻松地连接多个具有相同外观的Web应用程序.这对我们很有帮助,特别是允许多个开发人员处理隔离良好的应用程序.
在我看来,尝试在表示层中实现代码的最大重用已经造成了更多的弊大于利.这一直是我们应用程序中最不稳定的部分,超出了我们的预期.