zoukankan      html  css  js  c++  java
  • 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风格。






  • 相关阅读:
    mysql表结构同步
    关于Java8中lambda约简函数reduce的一个计算问题
    激烈的歌曲有助于编程
    今天刷了数据解构与算法这门课 感觉略有收获
    我有一个好朋友 他的名字叫刘洋 他的ID是北极的大企鹅 他的技术不错 他渴望成为架构师 猎头们路过可以去他的博客看看
    缓存雪崩,缓存击穿,缓存穿透
    celery
    Redis
    django 缓存的使用
    base64 加密
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6899659.html
Copyright © 2011-2022 走看看