mvc架构模式的原理(MVC架构系统设计方法)
-
-
类目:知识大全
-
联系人:
-
微信号:
-
Q Q 号:
-
手机号:
-
浏览量:
333
【商户信息】
【货源详情】
说起MVC,感觉大家可以每两块钱聊天。 今天也简单说一下吧。 并以Java Web开发为例,简要介绍了应如何对项目进行分层。
MVC之前
在Web开发初期,Sun公司发表JSP技术后,当时极大地震撼了整个行业。 微软之后推出的ASP也是面向JSP的反制手段。 在早期使用JSP开发的web APP应用程序中,由于其强大的特性,JSP使用以Java语言编写的代码块作为脚本。 因此,JSP文件是一个独立的模块,可以自主执行所有任务,其他动态网站技术(如ASP、PHP等)也是如此。 负责处理业务逻辑、控制页面跳转、向用户显示页面等。
在上图的模型中,“完整堆栈”的开发似乎变得相当简单。 用JSP开发就可以了。 但是,这样做的一个明显弊端是,JSP页面的功能太复杂,绑定性太强,数据、业务逻辑和流程控件都混合在一起,使得程序难以进行后续维护和修改。
为了解决这些问题,SUN公司提供了一种由JSP开发的体系结构模型,称为JSP Model1。 该模型采用JSP JavaBean (将万物抽象为对象,提供若干属性和对应的getter、setter方法)技术,将页面显示与商务逻辑分离。
如上图所示,JSP Model1将封装和处理数据的业务逻辑传递给JavaBean组件,JSP只需接收用户的请求并调用JavaBean组件来响应用户的请求该设计在一定程度上实现了数据、业务逻辑、页面展示的分离,在一定程度上实现了程序开发的模块化(分层),降低了程序之间的耦合性,有效地降低了代码维护、修改成本。
MVC设计模式
MVC设计是[Xerox PARC] (
33559 baike.Baidu.com/item/xerox parc ) (施乐帕克,研究中心)在20世纪80年代编程语言Smalltalk-80发明的软件设计模型中,按照功能模块划分
MVC设计模式将APP应用程序分为三个核心模块:“模型”、“视图”和“控制器”。 各模块的作用如下。
模型:负责管理APP应用中的业务数据、定义访问控制以及如何修改数据。
视图(View ) :负责与用户交互,可以从模型中检索数据并呈现给用户,然后将用户的请求传递给控制器进行处理。
控制器(Controller ) :用于处理APP的用户交互的部分,可以从视图中检索数据、控制用户输入以及向模型发送数据。
MVC模式广泛使用的是Web开发。 简要说明在Java Web开发中,APP应用程序应该如何划分模块。 控制器层是servlet,视图层是JSP,模型层是JavaBean。 图中的步骤1、2、3、4是用户进行请求时的处理流程。
三层架构
三层体系结构(3-tier architecture )通常是整个业务APP应用程序的表示层(USL )、业务逻辑层(Business Logic Layer )、业务逻辑层(BLL )、数据访问层)
表示层:又称表现层UI,位于三层构架的最上层,与用户直接接触,主要是用户浏览的页面,其主要功能是实现系统数据的传入与输出,在此过程中不需要借助逻辑判断操作就可以将数据传送到BLL系统中进行数据处理,处理后会将处理结果反馈到表示层中;
业务逻辑层:中间层,对具体问题进行逻辑判断与执行操作,当接收到表现层UI的用户指令后,会连接数据访问层,将数据库访问层的增删改查进行组装,并将处理结果返回给表示层;
数据库访问层:主要用于操作数据库中的数据,实现数据的增删改查操作,并将处理结果返回给业务逻辑层。
三层体系结构是一个比MVC更宏观的解决方案,MVC相当于三层体系结构的表示层。 总之,目的是对APP应用进行分层,实现高聚集、低耦合的目标,将程序划分为不同的模块,使开发和维护更加清晰。
项目分层
在此,建议对《阿里巴巴Java开发手册》的工程结构中约定的APP应用进行分层。
图中的缺省上层依赖于下层,箭头关系表示可以直接依赖。 例如,开放接口层可以依赖于Web层,也可以直接依赖于服务层。 让我们简单看看每一层的定义。
终端层:执行每个终端的模板渲染并执行显示的层。 目前主要是velocity渲染、JS渲染、JSP渲染、移动端展示等;
开放接口层:可以直接封装服务方法并暴露在RPC接口中; 通过Web封装在http接口中进行网关安全控制、流量控制等;
Web层:主要是访问控制的传输、各类基本参数的检查、或者不复用业务的简单处理等
服务层:比较具体的业务逻辑服务层;
Manager层:通用业务处理层;
1 )对第三方平台封装层,预处理返回结果,转换异常信息;
2 )对服务层公共能力的下沉,如缓存计划、中间件公共处理等
3 )与DAO层交互,并且复用多个DAO的组合;
DAO层:与基础MySQL、Oracle、Hbase等交换数据的数据访问层。
外部接口或第三方平台:包括其他部门的RPC开放接口、基础平台和其他公司的HTTP接口。
在我们的实际项目中,除非业务特别复杂,否则不需要设置web层和manager层。 因此,建议分层为以下:
总结
其实很多学生可能会有些怀疑,由于ajax的出现,很多项目现在开始实行前后端分离的做法。 特别是目前,优秀的前端框架层出不穷。 例如,Vue、React、AngularJS等三层体系结构和我们上面推荐的分层似乎不适用。 其实不然。 您可以将页面划分为终端显示层,并将Java代码划分为Controller services dao util model,无论项目是否前后分离。
文章到此结束。 我希望正文对你有帮助。 另外,我希望我们的项目都结构清晰,使用分层方式降低代码之间的耦合性,使代码更容易维护和修改。