博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web应用架构
阅读量:4093 次
发布时间:2019-05-25

本文共 1788 字,大约阅读时间需要 5 分钟。

前言:博主大三,其实本来学习的是Android移动端开发。近期有幸来到了阿里的菜鸟网络实习,阴差阳错地安排到了Web应用开发。但是我真的是一点都不懂的啊...就是那种连启动tomcat都会想想的那种。到现在已经实习了两周了。学习了很多,很多概念也很是混乱,action,servlet,jsp,javascript,velocity,screen,spring等等。想想就头大。很有必要将所悟沉淀下来。这也是带我的师兄一直强调的。

一、Web应用的三层架构

下面介绍各个层次的区别:

1.表示层(user interface layer):顾名思义,这个是负责与用户交互的,是用户操作与获取服务的接口。这一层一般由前端和后端的同学一同参与开发。(注意:这里所说的前端对于普通用户来说,他们仍然需要到服务器请求相应的html文档等)。前端负责html、css、javascript这些展示的维度。但是像servlet,action,screen等控制维度的由后端同学开发。

2.业务层(business logic layer):有时候我们也称为service层、逻辑层。这一层是整个Web应用的核心内容,包括我们想要提供给用户的所有服务。比如说用户登录/注册都是一个服务。

3.数据访问层(data access layer):有时候我们也称为DAO层,持久层。这一层是提供给业务层调用的。负责与数据库或是文件等持久存储媒介打交道。

二、Web应用开发各种技术所处的层次

根据上面划分的架构层次,我们容易知道,越上层的东西是越容易变化、越不可控的。因此我们也可以大致有一个推断,就是表示层的技术必然是最变化万千的,业务层次之,数据访问层最次。

1.表示层:如上所说,表示层是变化最多样的。在这一层可以使用到的框架有Struts,Spring MVC框架等等。其实你可能通过Spring MVC这个名称发现了,表示层往往还会用到MVC架构模式进行解耦。按照MVC这种模式对表示层进行划分,我们可以将在这一层面开发的技术做一个大致的划分。

视图层(View):html,javascript,css,velocity,jsp...(前端开发的范畴,事实上这一层还可以进行一层MVC的划分。html是Module,javascript是Controller,css是View,也就是嵌套的MVC架构)

控制层(Controller):控制View的跳转或是调用业务层的功能。action,servlet,screen...

模型(Module):javabean...

2.业务层:Spring,WebX...

3.数据访问层:Hibernate,IBatis(MyBatis)....

三、三层架构和MVC的区别

再来回顾一下三层架构:表示层,业务层,数据访问层。

再来看看MVC的架构:视图层(View),控制层(Controller),模型(Module)

我刻意将可能对上的放在一列,如果说这两者有关系的话。然而,虽然感觉很相似,

三层架构和MVC并没有什么关系!

三层架构和MVC并没有什么关系!

三层架构和MVC并没有什么关系!

在这之前我们先说说什么是模式?

模式其实是一种设计的重用,就是说这种思想(模式)可以应用到不同的场景,甚至是非IT领域。比如说观察者模式,现实中订阅报刊和发布报刊的关系就是一种观察者模式。这里为什么要说模式呢?因为:

MVC事实上是一种架构模式!!!

MVC事实上是一种架构模式!!!

MVC事实上是一种架构模式!!!

也就是说,在许多架构的设计中,MVC都可以发挥其指导意义。但是相反的,我不一定要按照你MVC的模式进行架构设计。而Web应用的三层架构就是不遵循MVC的一种设计。(Spring MVC就用到了MVC设计模式)

我们可以发现,除了视图层和表示层勉强能对上之外,其他的根本对不上。Web应用中没有Controller这个该概念。Web应用中的数据访问层也仅仅是负责访问数据,而不是MVC中的存储模型。

四、总结

我觉得学习就是这样,要学会对知识进行分层,从下往上,下层是最稳定不易变的。只要练好坚实的基础,上层建筑就能搞好了。万变不离其宗!学习的过程中最好能知道自己学习的是处于知识体系中的哪一层,这有助于我们构建知识体系。

你可能感兴趣的文章
hbase(3)---shell操作
查看>>
hbase(1)---概述
查看>>
hbase(5)---API示例
查看>>
SSM-CRUD(1)---环境搭建
查看>>
SSM-CRUD(2)---查询
查看>>
SSM-CRUD (3)---查询功能改造
查看>>
Nginx(2)---安装与启动
查看>>
springBoot(5)---整合servlet、Filter、Listener
查看>>
C++ 模板类型参数
查看>>
C++ 非类型模版参数
查看>>
设计模式 依赖倒转原则 & 里氏代换原则
查看>>
DirectX11 光照
查看>>
图形学 图形渲染管线
查看>>
DirectX11 计时和动画
查看>>
DirectX11 光照与材质的相互作用
查看>>
DirectX11 法线向量
查看>>
DirectX11 兰伯特余弦定理(Lambert)
查看>>
DirectX11 漫反射光
查看>>
DirectX11 环境光
查看>>
DirectX11 镜面光
查看>>