浅谈Java Web经典三层架构和MVC框架模式

Posted 爱吃 香菜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈Java Web经典三层架构和MVC框架模式相关的知识,希望对你有一定的参考价值。

从前端到后端整体架构做一个分析,通过这个分析更清楚的了解一下具体的前后端架构。以下三个架构属于三种架构,有共同点,但是并不是从属关系。

01 MVC模型

MVC是一种模型概念,绝大多数架构都是根据他来实现的,但是并不完全遵循,每个层之间也没有特别明确的界限。

View泛指用来向用户提供展示的部分的代码。

要将数据展示到View上,是要做绘制的。也就是前端页面。为了画一个很棒的界面,你需要关注布局、色彩、绘制的质量、动画逻辑……小心翼翼的让界面表现的很符合人类的直觉。当然,随着技术的进步,很多绘制渲染的技术都被抽象化了,View的具体绘制工作大大的减轻了。

Model泛指模型,它代表整个系统中表达数据的部分。

前端页面的东西需要作为一个model来存放在数据库。

比如:数据库里记录了数据产品ID=1的名字是abc,但是业务代码写了“if(prodId == 1) name = ‘def’"这种代码,并对上层提供了产品数据的接口。Model和View不一定能一一对应上。实际上他们之间总是有复杂的关系。比方说一个产品的基本信息、历史价格、最近成交记录、评论、关注信息在Model层面看来是不同的数据表的数据;而在View上,他们可能要绘制到一个界面。有的View需要考虑上下文,比如当比如当用户登录了,就显示有针对性的推荐给该用户的商品;没登录就只好显示一个泛泛的推荐了。

因此,Controller的作用就体现出来了——完成从Model到View的转换工作。它可以调整/改变/聚合Model的信息,转变成View绘制需要的信息。这个工作又往往被叫做“业务逻辑”。你可以理解将Controller的输出理解为“View Model”——即“直接就可以用来绘制的数据“。在SpringMVC体系下,相关API以“ModelAndView”表达这个概念

02 javascript—MERN架构

MERN架构,这个要容易理解一些,前后端语言都使用javascript编写

这个架构中react.js用来作为前端框架,写前端页面。也就是对应View

前端数据通过类似于axio的接口(包含一系列rest) 通过http请求传到服务端,服务端使用Express中间件来处理请求,Express框架接收http协议并处理。node.js为该中间件提供服务,也就是服务器。这里都是处理业务也就是对应的controller

业务处理完之后,就会把model放入到数据库中,使用mongodb driver 来提供CRUD请求与数据库交互。

03 java web 架构

表示层:

对应的也就是view,但是这里servlet在表示层也可以单独提出一个servlet层,这里其实划分没有那么详细MVC也不是说必须划分的很明确的。servlet用来http处理请求和相应,类似于MERN中的express.js他是一个接口。

service层:

相当于controller,具体的数据业务处理在业务逻辑层,进行一些排序啊,分页啊,这个在MERN中其实是都被整合到Express中进行逻辑处理,把数据转换成model。

数据访问层Dao

也就是model层,把model存储到数据库,进行CRUD和数据库交互。数据访问层类似于MERN架构中的Mongodb driver用来和数据库进行增删改查操作。

总结:

其实每个架构大同小异,只是在实现的时候每个架构可以分为自己的一些特性加持。不需要特别明确的划分对应,因为整个系统是一个整体。只需要理解大概的结构就可以了。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

浅谈MVC模式

MVC模式(三层架构模式)

(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

MVC模式最早由Trygve Reenskaug在1974年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:

  • (控制器Controller)- 负责转发请求,对请求进行处理。
  • (视图View) - 界面设计人员进行图形界面设计。
  • (模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。

 

技术分享

 

MVC工作原理

MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

视图

  视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和像XHTML,XML/XSL,WML等一些标识语言和Web services.   如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

模型

  模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用像EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

控制器

  控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。   现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

 

MVC框架模式的优点

     1、开发人员可以只关注整个结构中的其中某一层;
     2、可以很容易的用新的实现来替换原有层次的实现;
     3、可以降低层与层之间的依赖;
     4、有利于标准化;
     5、利于各层逻辑的复用。

 

MVC框架模式的缺点

  (1) 增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。 

  (2) 视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。 

  (3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。 

以上是关于浅谈Java Web经典三层架构和MVC框架模式的主要内容,如果未能解决你的问题,请参考以下文章

浅谈三层架构

javaEE的三层结构:web层service层dao层

MVC三层架构详解

架构浅谈之 MVC

浅谈三层架构MVC之间的关系

三层架构是啥?