说起mvc,感觉大家都能唠个两块钱的。今天呢,我们也来简单的聊一聊,并以java web开发为例,简单的讲解项目应当如何分层。
在web开发早期,当sun公司推出了jsp技术后,在当时是极大的震撼了整个行业,包括微软后面推出的asp也是针对jsp推出的反制手段。在早期使用jsp开发的web应用中,jsp因为其强大的特性,以java语言写的代码块作为脚本,因此一个jsp文件是一个独立的、能自主完成所有任务的模块(其他的动态网站技术比如asp、php也是如此),它可以负责处理业务逻辑、控制页面跳转和向用户展示页面等。
在上图这个模式中,”全栈”开发似乎变得简单了许多,只需要在jsp中开发就可以了。但这么做的一个明显的弊端,就是jsp页面中的功能过于繁杂、耦合性太高,数据、业务逻辑、流程控制全都混杂在一起,使得程序后续难以维护和修改。
为了解决上述问题,sun公司提供了一种jsp开发的架构模型,我们可以称之为jsp model1。在这个模型中,采用jsp+javabean(将万物抽象成对象,提供一些属性和对应的getter、tter方法)技术,将页面的显示和业务逻辑分开。
从上图中,我们可以看到,jsp model1将封装数据和处理数据的业务逻辑交给了javabean组件,jsp只负责接收用户的请求和调用javabean组件来响应用户的请求。这种设计在一定程度上实现了数据、业务逻辑、页面展示的分离,在一定程度上实现了程序开发的模块化(分层),降低了程序间的耦合性,让代码的维护、修改成本有效的降低。
mvc设计是由[xerox parc](
/d/file/titlepic/7961427 parc)(施乐帕克,研究中心)在20世纪80年代为编程语言smalltalk-80发明的一种软件设计模式,提供了一种按照功能模块划分的指导思想。
mvc设计模式将应用程序分为三个核心模块:模型(model)、视图(view)、控制器(controller)。每个模块的作用如下所示:
模型(model):音乐让生活更美好作文500字六年级负责管理应用程序的业务数据、定义访问控制以及修改这些数据的方法。视图(view):负责与用户进行交互,它从模型中获取数据向用户展示,同时也能将用户请求传递给控制器处理。控制器(controller):负责应用程序中处理用户交互的部分,可以从视图中取数据,控制用户输入,并向模型发送数据。mvc模式广泛的应用的于web开发中,我们以java web开发来简单说明应用程序应该怎么样划分模块:controller层为rvlet,view层为jsp,model层为javabean。图中的步骤1、2、3、4是用户进行请求时的处理流程。
三层架构(3-tier architecture)通常是将整个业务应用划分为:表示层(ur show layer, usl)、业务逻辑层(business logic layer, bll)、数据访问层(data access layer, dal)。其中每层的作用如下:
三层架构相鲫鱼汤孕妇比较于mvc是更宏观的解决方案,mvc相当于对三层架构中的表示层。不管这两个的哪一种,都是对应用程序进行分层,其目的就是实现高内聚、低耦合的目标,将程序分成不同的模块,让开发和维护变得更清晰明了。
这里给大家推荐《阿里巴巴java开发手册》中工程结构里约定的应用分层。
图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于web 层,也可以直接依赖于 rvice 层,依此类推。每个层的定义我们简单看下:
终端显示层:各个端的模板渲染并执行显示的层。当前主要是 velocity 渲染,js 渲染,jsp 渲染,移动端展示等;
开放接口层:可直接封装 rvice 方法暴露成 rpc 接口;通过 web 封装成 http 接口;进行网关安全控制、流量控制等;
web层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等;rvice层:相对具体的业务逻辑服务层;manager层:通用业务处理层;1) 对第三方平台封装的层,预处理返回结果及转化异常信息;
2) 对 rvice 层通用能力的下沉,如缓存方案、中间件通用处理;
3) 与 dao 层交互,对多个 dao 的组合复用;
dao层:数据访问层,与底层 mys陈情表翻译ql、oracle、hba 等进行数据交互。外部接口或第三方平台:包括其它部门 rpc 开放接口,基础平台,其它公司的 http 接口。在我们的实际项目中,一般是不需要设置web层和manager层的,除非业务特别复杂。因此推荐项目分层如下:
其实许多同学可能会有些疑惑,由于ajax的出现许多项目现在开始实行前后端分离的做法,尤其是现在优秀的前端框架层出不穷,比如vue、react、angularjs等,似乎三层设计合同架构和我们上面的推荐的分层就不适用了。其实不是这样的,我们将页面划分为终端显示层,无论项目是否是前后端分离,我们都可以将我们的java代码划分为controller+rvices+dao+util+model。
文章到这也就结束了,希望本文对你有所帮助,也希望我们的项目都可以结构清晰,可以使用分层的方式降低代码之间的耦合性,让代码更容易被维护和修改。
本文发布于:2023-04-05 23:11:11,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/968eaed0d49a93410f071a595a40f586.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:mvc架构模式的原理(MVC架构系统设计方法).doc
本文 PDF 下载地址:mvc架构模式的原理(MVC架构系统设计方法).pdf
留言与评论(共有 0 条评论) |