移动Web应用程序的服务器端架构

11
在我工作过的大多数桌面Web应用程序中,都需要一个服务器端Web框架。 服务器端Web框架(如Struts、Spring MVC等)具有一种用于处理请求的控制器,以及用于生成动态内容的模板引擎(Velocity、JSP等)。
现在我开始开发移动Web应用程序,所有讨论都围绕着选择UI框架(jQuery Mobile、jQTouch、Sencha Touch等),但我没有看到任何关于实际处理HTTP请求或生成HTML、CSS和JavaScript的服务器端情况的讨论。
这是否意味着大多数移动Web应用程序不使用服务器端Web框架…也就是说,服务器提供静态内容,大部分交互行为都是用JavaScript编码的,而唯一的服务器端代码是JavaScript客户端加载的REST服务?
如果我想使用服务器端Web框架会有什么问题?会面临什么问题?有人推荐一个既是生产平台又不会“妨碍”jQuery Mobile等移动UI框架的Web框架吗?
注意:我与之合作的开发人员主要来自企业Java背景,但我不会将其限制在仅Java-based web frameworks上。还有其他以Java为根源的框架可以考虑(如Grails、Lift等)。
2个回答

13
一个好问题,我会这样回答。当前的趋势是将很多互动性构建到前端中。原因有几个。有些人这样做是因为这是新事物,而另一些人这样做是因为他们试图复制桌面体验。最终,任何给定的Web项目只有一个目标,那就是创建最佳和最可持续的用户体验。
话虽如此,应该避免使用服务器端技术,这些技术可以为您生成前端,但不使用jQuery。今天超过45%的网站使用jQuery,如果您选择其他东西,您将立即与主流移动框架相抵触。(GWT,IceFaces,我在看着你们)。
可能最安全和最灵活的方法要么是使用基于Spring的实现,要么是Prime Faces。Spring Mobile值得一看。Prime Faces实际上实现了jQuery Mobile,并且可以使用Theme Roller进行主题设置。
一般来说,只要您推送良好的标记,后端框架(如果有)并不重要。浏览器并不关心,用户关心的是良好的体验。因此,请选择能让开发人员满意的后端,只要不妨碍即可。
至于前端框架,它们的流行度正在增加,因为它们往往规范了移动应用程序的一些最佳实践。有许多jQuery Mobile与Sencha vs jQTouch的比较。我会让您自己决定哪个最适合您的项目,但肯定会使用jQuery Mobile或Sencha,因为这些框架的支持社区非常庞大,您不太可能像那些尝试从头开始构建移动站点而没有经验的人一样显得粗糙。这很令人沮丧。我的个人推荐是jQuery Mobile,因为它涵盖了如此广泛的设备,并且(只要您坚持标准的页面模型),即使在最糟糕的功能手机上也会优雅地降级,但在智能手机上看起来仍然很棒。
针对您提出的问题,只使用RESTful设计并使用JavaScript加载所有内容并管理状态。现在有很多人在这样做,这确实是一种快速的体验,但您将立即限制可以使用它的人群,只有移动浏览器支持良好的JavaScript的人才能使用。您将只考虑支持iOS、Android 2.2+、BlackBerry 6+和Windows Phone 7+。其他人可能会在查看您的网站时遇到重大困难。在采用这种实现之前,请仔细考虑您的受众。如果您的网站没有JavaScript无法正常工作,而您的主要客户都在企业界...当最新的黑帽大会揭示了公司手机中的弱点,并且出于保守的风险缓解(偏执症),他们向每个人的手机推送了禁用JavaScript的安全策略时,会发生什么?这种事情经常发生。因此,请考虑您的受众。

0

看看ItsNat,它邀请您在客户端JavaScript中思考,但在Java中编码并在服务器上执行,生成相同的JS代码到客户端。

与GWT的区别在于,Java W3C DOM代码在服务器上执行,并自动生成JS,而GWT在客户端执行,服务器数据必须传输到客户端。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接