前世今生
B/S开发经历了几个时代,现在已经是后MVC时期了。
MVC体现了分层和解耦合的概念,从功能和理念上都做出过巨大贡献,使Java B/S开发在面对大型项目时从容不迫,说成是上个十年Java B/S开发领域的核心技术也不为过。
目前,大家对MVC运用的十分纯熟,对MVC中各个组件也能各得其所,得体的使用。MVC是把好锤子,但现在时代变了,手里拿着锤子,就更要清醒,确认是否每个问题都是“钉子”。
时代变了
时代变了,即使是企业应用开发领域,也更明确地提出“用户体验”和“性能”的问题。
MVC架构应对这两个问题有那些力不从心的地方呢?
首先,用户体验的核心是V,主要体现在数据架构、交互逻辑和展现方式上。而在MVC框架中,C才是主导,V是被动的,让送货小弟挑大梁,即使他有这能力,也协调不动。理念、流程、架构上都不顺,事情也很难做好。
其次,MVC是基于视图渲染的,并把视图渲染结果作为传输对象的,存在多余的数据传输,性能不好。
所谓性能优化,就是找出没必要做的事情,去掉,少做无用功,把好钢都用在刀刃上。
MVC处理流程中“以视图渲染结果为传输对象”这个环节是个明显的痛脚。
( 当然,也可以说json等方式也是视图等一种,但json的消费者依然是HTML视图。像C分前端控制器和控制器,V也分前端视图和后端视图。概念上太复杂了。)
No MVC不是说不要MVC了,而是不要把他当核心的理念。
应需而生
没有谁比谁更先进,只是在确定的应用场景下,哪个比哪个更合适。
看一下下面的架构。
从理念上看:
绿色背景部分是系统的展现层,也是系统的“核心”,是整个程序的主导,体现“用户体验”优先的概念。
设计开发系统时,先把这部分做出来,而且做好随时优化改进的准备。
HTML、CSS和JavaScript三个小兄弟当上老大啦?真正老大不是他们,但他们真的成为老大的亲随、心腹了。
名正则言顺,做事再也不用挚手指脚了,这样“用户体验”才能真正做出来。
仅仅风华绝代是不够的,还需要真正解决问题。
前端有两类需要,一类是有数据要取,这时候同后台说,“我要什么什么,快拿过来,赶紧的”,另一类是有数据要存起来,这时候跟后台说,“这些物件给妥妥放好了,出了岔子拔掉你皮”。
两种情况都只传输最必要的数据。如果采用JSON格式,在真正的数据外部做了格式化包装,但这些包装体现了数据的格式,也是必要的,只是存在改进的空间。
从性能上看:前段页面保存在各种缓存中,基本是毫秒级体验。业务数据是动态的,只能从后台实时获取,这部分数据传输已经做到最精简了,传输过程中还可以配置压缩,是最优化的情况。
后台要怎么做
分层和MVC还是需要的。
但需要针对性设计:
首先,获得前台输入的时候,简单类型的参数,需要在Controller方法里可以直接获取。如果前端post了一个JavaScript对象过来,也要能直接转换为Java Object(可以自己定义一个类型,做封装)。转换的性能和易用性要做到极致。如果用Spring MVC的话,重新实现HandlerMethodArgumentResolver试试。
其次,返回的时候,Controller方法应该可以直接返回简单类型数据,返回对象数据应该自动转换为JSON格式,方便前段JavaScript使用。
最后,URL风格方面:可以通过@PathVariable实现标准的REST风格。
分享到:
相关推荐
设计 REST 风格的 MVC 框架
Spring MVC REST Demo
当然,REST不光限于web service,网页服务也可以RESTful,微软的ASP.NET MVC框架提供了直接的REST支持。 有关.net,MVC实现REST风格的方法请参见张善友老师的博客:...
本文内容包括:术语设计目标集成IoC设计请求转发集成模板引擎设计拦截器渲染扩展小结参考资料传统的JavaEEMVC框架如Struts等都是基于Action设计的后缀式映射,然而,流行的Web趋势是REST风格的架构。尽管使用Filter...
This one hundred page book focuses exclusively on how you can best use the ASP.NET MVC 4 Framework to build world-class REST services using the Web API. It sets aside much of what the ASP.NET MVC ...
使用Spring MVC 构建RESTFul 风格的开发DEMO,
使用Spring MVC创建REST服务简单例子
使用Spring MVC3基于注解的形式实现的REST小例子 部署运行: 1. 将工程导入eclipse 2. 添加tomcat属性 工程(右键)——> tomcat project——> update context 3. 启动tomcat 4. 在浏览器中输入...
spring mvc基础开发 最基础类 一目了然 适合初学者
rest-mvc
用Crystal语言编写的REST API和MVC入门工具包。 这是使用编写的项目。 请享用! 入门 这些说明将获得在您的计算机上运行的用于开发和测试目的的项目的副本。 先决条件 该项目需要 ()。 发展历程 要启动琥珀色...
SPRING-MVC-MQ-CXF-REST_Demo
该实例展示了 spring3 REST 的使用方法,以及同一种内容,多种不同方式展示的实现,例如同一 User 信息,可以展示为:xml,json,html三种不同的格式。可以参考这篇文章:http://badqiu.javaeye.com/blog/552806
通过spring 3.0 的mvc 实现rest功能,代码是myeclipse工程,包括依赖包
使用Spring MVC 搭建Rest服务 文档
运行好,调试好的spring3.0 mvc_rest_demo.war ****************************** * 运行说明 ****************************** 1. 直接部署dist/springmvc_rest_demo.war至tomcat并启动服务器 2. 访问...
spring mvc 包括 实现各种结构url 和get post 方式 跳转传参 提交等实例,有注释 是初学springmvc 必备入门级 参考.只需5分钟,看了代码就能让你掌握 spring mvc rest 的各种实现
The book requires a basic knowledge of Java, Spring and the web, but no prior exposure to REST. Table of Contents Chapter 1. Introduction to REST Chapter 2. Spring MVC Primer Chapter 3. RESTful ...
使用Rest Assured和Mockmvc进行Spring mvc集成测试.zip