前世今生

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当道,NO MVC的更多相关文章

  1. 【ASP.NET Core】MVC模型绑定——实现同一个API方法兼容JSON和Form-data输入

    在上一篇文章中,老周给大伙伴们大致说了下 MVC 下的模型绑定,今天咱们进行一下细化,先聊聊模型绑定中涉及到的一些组件对象. ------------------------------------- ...

  2. Asp.Net Mvc 使用WebUploader 多图片上传

    来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...

  3. .Net Core MVC 网站开发(Ninesky) 2.4、添加栏目与异步方法

    在2.3中完成依赖注入后,这次主要实现栏目的添加功能.按照前面思路栏目有三种类型,常规栏目即可以添加子栏目也可以选择是否添加内容,内容又可以分文章或其他类型,所以还要添加一个模块功能.这次主要实现栏目 ...

  4. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  5. ASP.NET Core MVC/WebAPi 模型绑定探索

    前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...

  6. ASP.NET Core 中文文档 第四章 MVC(3.8)视图中的依赖注入

    原文:Dependency injection into views 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:孟帅洋(书缘) ASP.NET Core 支持在视图中使用 依赖 ...

  7. 开源:Taurus.MVC 框架

    为什么要创造Taurus.MVC: 记得被上一家公司忽悠去负责公司电商平台的时候,情况是这样的: 项目原版是外包给第三方的,使用:WebForm+NHibernate,代码不堪入目,Bug无限,经常点 ...

  8. Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)

    背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...

  9. Taurus.MVC 2.0 开源发布:WebAPI开发教程

    背景: 有用户反映,Tausus.MVC 能写WebAPI么? 能! 教程呢? 嗯,木有! 好吧,刚好2.0出来,就带上WEBAPI教程了! 开源地址: https://github.com/cyq1 ...

随机推荐

  1. php的self this parent的区别

    {一}PHP中this,self,parent的区别之一this篇 面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能.利用OOP的思想进行P ...

  2. 洛谷P1725琪露诺(单调队列优化dp)

    P1725 琪露诺 题目描述 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精.某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来.但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸.于是琪 ...

  3. [BZOJ1821][JSOI2010]部落划分

    感觉学了这么久还是有那么一丢丢进步的...上个学期看到这道题,虽然早就学过并查集和二分了但还是一点思路都没有,现在可以秒切了呢 思路就是二分+并查集,有些人说是生成树,其实它没有变成树,只是运用了生成 ...

  4. Web Api跨域登录问题

    最近项目第一次尝试使用web api,照搬了一般mvc的Forms登录方式,在和前端对接的时候出现一个问题: 前端使用ajax调用登录接口完成登录后,再调用别的接口,被判断为未登录. 如果直接在浏览器 ...

  5. 改善用户体验 Web前端优化策略总结

    前端是庞大的,包括HTML.CSS.Javascript.Image.Flash等等各种各样的资源.前端优化是复杂的,针对方方面面的资源都有不同的方式.那么,前端优化的目的是什么? 1. 从用户角度而 ...

  6. P1796 汤姆斯的天堂梦_NOI导刊2010提高(05)

    题目描述 汤姆斯生活在一个等级为0的星球上.那里的环境极其恶劣,每天12小时的工作和成堆的垃圾让人忍无可忍.他向往着等级为N的星球上天堂般的生活. 有一些航班将人从低等级的星球送上高一级的星球,有时需 ...

  7. C# 如何实现WinForm程序自重启(重新启动自己)

    重启的时间间隔方法 private void Restart() { Thread thtmp = new Thread(new ParameterizedThreadStart(run)); obj ...

  8. python--1、入门

    python的创始人为吉多·范罗苏姆(Guido van Rossum). python在2017年统计的所有语言排名中处于第四名,稳步上升状态. python应用领域: WEB开发(Django框架 ...

  9. Android Studio and Gradle安装心得

    安装基于Eclipse 的ADT一段时间,感觉确实有很多功能不足,通过网上资料,决定改向AS. AS下载了最新的2.3版本,它不分64位与32位,网上说有单独版是瞎扯蛋.只要启动不同的EXE就行了. ...

  10. T-SQL查询高级--理解SQL SERVER中非聚集索引的覆盖,连接,交叉和过滤

      写在前面:这是第一篇T-SQL查询高级系列文章.但是T-SQL查询进阶系列还远远没有写完.这个主题放到高级我想是因为这个主题需要一些进阶的知识作为基础..如果文章中有错误的地方请不吝指正.本篇文章 ...