三层架构[通俗易懂]

三层架构

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


三层(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)


相关推荐

  • 如何在excel2019指定的单元格中插入图片

    如何在excel2019指定的单元格中插入图片最近,要完成一些论文的调研及整理工作,针对各个论文中提到的方法,系统模型等。原想在单元格中插入图片,发现单元格右键插入,压根就没插入图片这一项功能,如图所示故在菜单栏中,找到插入-》图片-》此设备,插入完成后,图片能在整个界面上移动。完全不是我想要的结果。问题解决办法如下:1、选中一个想要放入的单元格,尽量拉的大一点。2、把已插入的图拖到这个单元格内,大致调整一下大小,使其和单元格大小差不多。3、选中图片右键“大小和属性”。4、作如图设置,将属性选为“随单元格改变位置和大

    2022年10月29日
  • Visual Studio 连接SQL Server数据库[通俗易懂]

    Visual Studio 连接SQL Server数据库[通俗易懂]VisualStudio连接SQLServer数据库在visualStudio开发环境中,从菜单中选择“工具”->“链接到数据库”命令,然后弹出图(1)所示窗口,点击更改按钮,选择你所使用的数据源类型,如下图(2)所示,点击确定。图(1)更改数据源类型图(2)选择数据源类型此时可以点击“浏览”按钮添加数据库文件,如下图(3)所示…

  • linux rpm解压命令,LINUX下各种解压命令收藏「建议收藏」

    linux rpm解压命令,LINUX下各种解压命令收藏「建议收藏」大致总结了一下linux下各种格式的压缩包的压缩、解压方法。但是部分方法我没有用到,也就不全,希望大家帮我补充,我将随时修改完善,谢谢!.tar解包:tarxvfFileName.tar打包:tarcvfFileName.tarDirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzipFileName.gz解压2:gzip-dFileN…

  • iterator迭代器详解_c++迭代器iterator

    iterator迭代器详解_c++迭代器iterator迭代器 Iterator动机模式定义实例结构要点总结笔记动机在软件构建过程中,集合对象内部结构常常变化各异.但对于这些集合对象.我们希望在不暴露其内部结构地同时.可以让外部客户代码透明地访问其中包含地元素;同时这种”透明遍历”也为”同一种算法在多种集合对象上进行操作”提供了可能.使用面向对象技术将这种便利机制抽象为”迭代对象”为”应对变化中地集合对象”提供了一种优雅地方式模式定义提供了一种方法顺序访问一个聚合对象中地各个元素,而又不暴露(稳定)该对象地内部表示.实例结构要点总结迭代抽象

  • MySQL中创建外键的错误:1215 Cannot add the foreign key constraint[通俗易懂]

    MySQL中创建外键的错误:1215 Cannot add the foreign key constraint

  • jdk的配置

    jdk的配置jdk的配置

发表回复

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

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