三层架构[通俗易懂]

三层架构

大家好,又见面了,我是全栈君。


三层(3-tierapplication)


什么是三层?


         首先要知道三层不是一项实际的技术、他是一中设计软件的思想、这样的思想就是把软件分为三层、或者说三个类、各自是表现层(UI)、业务逻辑层(BLL)、数据訪问层(DAL)、分层的目的是为了高内聚,低耦合、便于更改维护、当然软件业能够分四层、五层、六层、这主要看需求、可是一般的都是分为这三层。


         每一个层各司其职、相互仅仅是调用关系、这样优点就是假设要更改界面、那就改UI层、其它层都不用动、或者以后软件换数据库、那么该DAL层就好、事实上生活中都是这样的思想、手机屏幕坏了?换块屏幕、能够接着用、电脑系统死了、装系统接着用、灯泡坏了、换个灯泡、这些事实上都是面向对象思想、分层思想、事实上本质就是降低联系、做到可更换、不用一点坏了就要换所有、分层就是这样的思想。



各层功能


1、表现层(UI):通俗讲就是展现给用户的界面,他担当者接受用户信息和给用户显示用户信息的功能。即用户在使用一个系统的时候他的所见所得。


2、业务逻辑层(BLL):针对详细问题的操作。也能够说是对数据层的操作。对数据业务逻辑处理、最明显的就是三大语句、推断、循环、多分支、这个一定是在逻辑层的。


3、数据訪问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、改动、更新、查找等。


为什么分三层


         你为啥一天三顿饭?由于一天三顿刚刚好、不会饿着也不会撑死、经过前辈们的实验、软件划分三层是最理想的、最通用的、当然事事无绝对、不是全部软件都分三层的。


如:


1 软件太小

         你做个非常小的软件还分三层?太小了就不是必需了、还有就是要求速度特别快的


2 要求快速

         由于三层的关系、会导致执行比不分三层慢、当然也能够升级硬件加速、更快的CPU(以下会解说原因)


3 特殊需求

         特殊需求的软件分两层或多层这都是有可能的、没有一种能应对全部问题的思想或答案、对吧、三层不是万能的



三层的逻辑关系


         三层相对独立、他们之间引用来完毕任务,UI 引用BLL、BLL引用DLL、DLL訪问数据库、事实上数据库也应该算一层、可是数据库如今都有现成的、如SQL数据库等、也就相当这层已经做好了、如图


2014年04月26日 - chenchen - 杨琛 廊坊师范学院信息技术提高班 第十期

 

 

         样例

                  以下就拿登陆窗口做个样例


2014年04月26日 - chenchen - 杨琛 廊坊师范学院信息技术提高班 第十期


         这三层的联系事实上就是引用、通过引用、来传值、互相协作完毕一个功能、而又相互独立、每层仅仅完毕自己那层的功能。

         说道传值、大家看登陆窗口这个样例、username和password每一次才层都要用、这是公用数据或说是參数、可是假设非常多參数怎么办???


model


         假设三层是板砖、那model就是水泥、假设三层是饼干、他就是夹在中间的奶油、model事实上就是帮助三个层传递參数用的、他被三层引用、如上面的样例、把username和password放到model里是不是就好多了、打个例如。


         咱们如今工厂都是流水线作业、比方安装电脑、分3部分、安装显示屏、安装主板、安装软件、第一个人安装好显示屏、会有传送带把电脑送到第二个人那、第二个人安好主板、放到传送带上、传送带也会运到第三个人那、假设没有传送带是不是每一个人都要跑过去送?


         model就是那个传送带、把每一层的參数保存、然后其它层引用model这个类、或者说公用层、事实上说什么呢并不重要、重要的是了解model究竟是起到了什么作用。


三层的优缺点


长处:


1.解耦。上一层仅仅依赖于下一层,假设測试下一层没有问题。那么问题就仅仅可能出如今本层了。便于发现和改正BUG。

 

2.简化复杂问题。就比方tcpip协议的四层模型或OSI七层模型,各层分工明白,将一个复杂问题简化了。


3.便于系统维护/升级。

各层间通过接口解耦,接口与实现分离,从而能够很方便的替换掉实现,或者升级实现等。 


4.逻辑复用。比如原来基于B/S开发的程序如今要改成C/S,那么仅仅要业务层的接口没有改变,那么业务层和数据层都能够直接复用。在如,仅仅要数据訪问层接口不变。那么使用便能够有对不同数据库的实现。 


5.便于团队开发。仅仅要各层接口在开发前规定好,那么各层能够独立开发。进化或维护。 


6.方便部署。将各层开发成组件。则能够独立部署。


缺点:


  1、减少了系统的性能。这是不言而喻的。假设不採用分层式结构,非常多业务能够直接造訪数据库,以此获取对应的数据,现在却必须通过中间层来完毕。


  2、有时会导致级联的改动。这样的改动尤其体如今自上而下的方向。假设在表示层中须要添加一个功能,为保证其设计符合分层式结构,可能须要在对应的业务逻辑层和数据訪问层中都添加对应的代码


3、添加了代码量,添加了工作量  


三层的使用

         事实上三层详细怎么写代码这不重要、由于三层本身是一种思想、C#可用VB.NET能够用、其它语言也能够用、就好像电脑分显示屏、主板、软件、手机也能够分显示器、主板、软件、遥控器能够分电池和遥控器本身、这样的思想就是使每一个个体的功能独立、达到课复用、easy更换、改动的目的。


         什么时候用三层?在软件上说、假设你的程序到达了一定的复杂程度、就能够分三成、假设你的软件非常easy就不是必需分三层、就好像你写字就三行、你还要分好几个段落、那叫没事找事、你出了一本书、一本书就一段、那叫没事找抽= =!

所以说不要畏惧啥时候用啥时候不用、功到自然成。


总结:

         事实上世间万物都是息息相关的、三层事实上就是生活中的一个抽象的概念、在各个领域都有应用、仅仅是在软件这个行业、他叫三层这个名字、这次学习三层让我对软件又有了新的认识、对制作软件流程更加清晰、路是一步步走的、不知大家还记的第一次学编程写的那句话吗?


—————————————Hello world———————————————
————————chenchen————————

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116133.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • setrequestproperty()怎么使用_url主要功能

    setrequestproperty()怎么使用_url主要功能设置头信息的,比如格式,UA等,不设置自然有默认的,一般的请求倒不需要去设置,可以去看看android里的DefaultHttpClient里也有设置头信息的setRequestProperty 主要是用来设置下面的功能Javacode?12connection.setRequestProperty(“Con

  • [栈] 表达式求值 – C语言(多位数求值,2位数以上)

    [栈] 表达式求值 – C语言(多位数求值,2位数以上)【理论】https://blog.csdn.net/summer_dew/article/details/82048387【代码说明】支持:2位以上的数字,四则运算和幂运算使用的栈,是自己实现,封装在2SqStack.h文件中的,可自己实现,也可以参照:https://blog.csdn.net/summer_dew/article/details/82051767【结果】测试:…

  • centos7 socks5代理_ssh代理上网

    centos7 socks5代理_ssh代理上网关于SOCKS5  SOCKS5是一个代理协议,它在使用TCP/IP协议通讯的前端机器和服务器机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问Internet网中的服务器,或者使通讯更加安全。   正常情况下客户端和服务端的通信:客户端服务端   使用了SOCKS5代理后的通讯:客户端代理服务器服务端#安装ss5依赖yuminstallgcc

  • vue的双向绑定原理及实现_vue绑定数据

    vue的双向绑定原理及实现_vue绑定数据一、什么是双向绑定我们先从单向绑定切入单向绑定非常简单,就是把Model绑定到View,当我们用JavaScript代码更新Model时,View就会自动更新双向绑定就很容易联想到了,在单向绑定的基础上,用户更新了View,Model的数据也自动被更新了,这种情况就是双向绑定举个栗子当用户填写表单时,View的状态就被更新了,如果此时可以自动更新Model的状态,那就相当于我们把Model和View做了双向绑定关系图如下二、双向绑定的原理是什么我们都知道Vue是数

  • wlan、wifi、蜂窝、无线局域网的区别「建议收藏」

    wlan、wifi、蜂窝、无线局域网的区别「建议收藏」1、WLAN跟无线局域网是相同概念,WLAN是缩写。2、无线局域网,英文全名:WirelessLocalAreaNetworks;简写为:WLAN。它相当便利的数据传输系统,它利用射频(RadioFrequency;RF)的技术,使用电磁波取代旧式双绞铜线(Coaxial)所构成的局域网络,在空中进行通信连接,使得无线局域网络能利用简单的存取架构让用户透过它,达到信息随身化。3、Wi-Fi,中文名无线保真,是一种可以将个人电脑、手持设备(如iPad、手机)等终端以无线方式互相连接的技术

  • 高级C/C++编译技术之读书笔记(一)之编译/链接

    本节思维导图1.计算机体系结构抽象2.进程内存映射布局(1)代码节:供CPU执行的机器指令码(.text节)(2)数据节:供CPU操作的数据,通常来说,初始化数据(.data)、未初始化数

    2021年12月28日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号