三层中的大学问

最近也进展到了三层的学习,看了一些三层的相关的资料,

才逐渐的认识到三层的概念。

当初没看之前,在学习软件工程的时候,就曾设想过一个项目

的流程也应该大致的包括三部分:需求分析、业务逻辑处理、数

据库。而当面对三层的时候,才恍然大悟,这不就是三层的影子

吗?三层到底是何方神圣呢,下面先看一副图片。

大家设想一下,我们平常去饭店吃饭的场景,前脚刚进去,

服务员就笑嘻嘻的来迎接你,把你点的菜肴,交给头大的伙夫,

伙夫通过后勤人员提前准备好的菜,来做出美味的佳肴,最后再

次通过服务员反馈给你。

想一下,这三个人少一个,整个流程的服务效率就会大大的

下降,就会使整个流程变得杂乱无章。这与我们的三层的是一个

道理,下面就一一揭晓三层。

表示层(User Interface)

所谓的表示层,就是用户接触的界面,用来为用户提供服

务的数据,例如我们经常所见的注册和登陆界面

业务逻辑层(Business LogicLayer)

从名字中就可以看出,就好比一个中转站,一个加工厂,把

用户提供的数据,经过逻辑上的加工后或者保存到数据库中,或

者直接在返回用户,起着承上启下的作用,刚好搭建了表示层和

数据访问层之间的桥梁。

数据访问层(Data Access)

仅实现对数据的保存和读取操作。就好比仓库管理员的工

作,实现对仓库的货物情况进行整理。

为什么会有三层?

可能我们会想,不是两层就OK了嘛,干嘛非得多出一个数据

访问层呢。让用户直接与底层的数据联系不是更有效率吗?这样

想是没有错误的。真正三层的目的,是把软件开发任务分解,有

利于团队合作开发;软件的适应性增强,一旦有什么需求变动可

以很快的进行代码更改,因而代码的复用性很高。因此为此牺牲

点效率还是很值得的。

思想上移

一直还都记得老师说过的坐飞机穿越森林的事情,目的在于

能够从宏观上把握整个事情的来龙去脉。如果你一头扎进去的

话,你猴年马月也估计很难理出头绪来。还记得第一次敲机房的

时候,由于没有学习软件工程、UML、设计模式,所以就是照葫芦

画瓢的过来了,就好比一头扎进森林一样,整个过程不仅很费时

间很长,而且心里上也很痛苦和烦躁,因为对眼前的事情没有头

绪,很迷乱。

因此三层的出现,也是为了解决这个问题,能够让我们对软件

的整体结构分析的很清楚,并且各个环节的改动都不会影响彼

此。

再仔细想一下,三层的出现也是必然的结果,大工厂生产的流

水线作业,不也正是三层的另一映射嘛,看来软件来自于生活的

各个方面。现在才真正的体会到编程是一门艺术这句话的真正含

义了。

三层中的大学问,码迷,mamicode.com

时间: 2024-08-02 17:36:11

三层中的大学问的相关文章

照片管理、备份的大学问

原创 托马斯 Thomas看看世界 2016-11-20 以前托马斯旅行回来的照片,都是随手往硬盘里一扔.随着照片数量越来越多.每次寻找.备份照片都要花很大力气,有时还发现辛苦拍摄的照片已经弄丢了. 今天托马斯分享就来谈谈照片管理.备份的大学问. 知识点:层级文件夹.文件夹命名.Bridge|Lightroom管理照片 文章的一开始,托马斯会先提出三种生活中常见的情景和问题.文章的过程中,你会慢慢找到他们的解决方案. 1)除了电脑硬盘外.你有2TB的百度云盘,1TB的移动硬盘,2个8GB的U盘,

编程题:返回指针值的函数,求两个数中较大的数。

#include<stdio.h> int *max(int *x,int *y) { int *q; if(*x>*y)  q=x; else  q=y; return q; } void main() { int a,b,*p; scanf("%d,%d",&a,&b); p=max(&a,&b); printf("%d,%d,max is %d\n",a,b,*p); } 编程题:返回指针值的函数,求两个数中较

编程题:指向函数的指针,求两个数中较大的数。

#include<stdio.h> int max(x,y) { int z; if(x>y)  z=x; else  z=y; return z; } void main() { int a,b,c; int (*p)(); p=max; scanf("%d,%d",&a,&b); c=(*p)(a,b); printf("%d,%d,max is %d\n",a,b,c); } 编程题:指向函数的指针,求两个数中较大的数.,布布

linux命令中的大神

命令一:rm中的-r参数 首先是创建了temp文件,它所属者是xulinux用户,以及xulinux组,权限通过后3句使得任何人不得写,不得读,不得访问该目录: 可是在root用户下,通过rm -r形式使得它强制的删除了temp,强制的访问,强制的读取,强制删除:故而这个命令非常霸气,可以无视权限,且删除不能恢复,因为它不是删除到回收站中.故而使用者非常小心使用. 待续..... linux命令中的大神,布布扣,bubuko.com

在linux/unix中查找大文件

在linux/unix中查找大文件,如查找大于100M文件的位置路径,查找等于10M文件的位置路径等等,下面就介绍几个实现快速查找的命令: 1. 查找指定目录下所有大于100M的文件,命令为 find path -type f -size +100M  (path 为自己指定的目录,如当前目录./): 2. 查找指定目录下等于10M的文件,命令为 find path -type f -size 10M (path 为自己指定的目录,如当前目录./): 3. 查找指定目录下小于1M的文件,命令为

如何处理SQL Server事务复制中的大事务操作

如何处理SQL Server事务复制中的大事务操作 事务复制的工作机制 事务复制是由 SQL Server 快照代理.日志读取器代理和分发代理实现的.快照代理准备快照文件(其中包含了已发布表和数据库对象的架构和数据),然后将这些文件存储在快照文件夹中,并在分发服务器中的分发数据库中记录同步作业. 日志读取器代理监视为事务复制配置的每个数据库的事务日志,并将标记为要复制的事务从事务日志复制到分发数据库中,分发数据库的作用相当于一个可靠的存储-转发队列. 分发代理将快照文件夹中的初始快照文件和分发数

ADO.NET中5大对象简介

ADO.NET在以前的学习中接触过,并以应用过,但并没有好好的总结过.最近这段时间的学习又复习了这块的知识,下面就我现在所知道的总结归纳一下. ADO.NET是基于XML的全新的数据库访问技术,与传统的ADO相比,它主要核心z是XML, 它是一个断开式连接,它主要依靠的是DataSet数据集. 一.ADO.NET对象模型,如下图. .NET数据提供程序和DataSet是ADO.NET中的两个重要组件. .NET数据提供程序:保证了客户端和服务器的连接(即,应用程序和数据库之间的连接). .NET

大数据学习笔记6&#183;社会计算中的大数据(4)

上一篇介绍了LifeSpec项目,这个项目是关于用户理解和用户画像的.这篇是社会计算部分的最后一篇,关于用户连接和图隐私. 用户连接与隐私保护 用户连接与隐私保护有很强的相关性. 上图中,左边有两个网络.对于用户连接,我们的目标是映射这两个网络和连接这些网络中的用户节点.然后,我们就能产生一个更大的网络.这样,用户就能够被连接在一起,我们就可以知道跨网络的用户信息. 但是,如果从隐私的角度来看这个问题,把第一个图看成一个匿名化处理后的图,称其为目标图:把第二张图看成辅助图或者攻击者可获得的信息.

浅谈三层中Model的作用

以前总是对三层中的Model概念不是很理解,今天早上查了一下,豁然开朗...... 怎么说呢,应该是面向对象编程吧.当我们在表单提交的时候,表单中的数据基本上是和数据库表中的字段相对应, 有时候,在提交表单的时候会有很多的参数传过来,当然你也可以一个一个根据name获取值,但是这样很麻烦,那么model 就产生了,其实model它就是一个类型,这个类型可以包含许多的int.string等等的类型,你可以通过代码生成器根据数据库 中的表生成Model,也可以手写,你在后台表单获取的时候,直接在方法