REST当道,NO MVC

前世今生

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风格。






原文地址:https://www.cnblogs.com/brucemengbm/p/6899659.html