三层架构
三层(3-tierapplication)
什么是三层?
首先要知道三层不是一项实际的技术、他是一中设计软件的思想、这种思想就是把软件分为三层、或者说三个类、分别是表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)、分层的目的是为了高内聚,低耦合、便于更改维护、当然软件业可以分四层、五层、六层、这主要看需求、但是一般的都是分为这三层。
每个层各司其职、相互只是调用关系、这样好处就是如果要更改界面、那就改UI层、其他层都不用动、或者以后软件换数据库、那么该DAL层就好、其实生活中都是这种思想、手机屏幕坏了?换块屏幕、可以接着用、电脑系统死了、装系统接着用、灯泡坏了、换个灯泡、这些其实都是面向对象思想、分层思想、其实本质就是减少联系、做到可更换、不用一点坏了就要换全部、分层就是这种思想。
各层功能
1、表现层(UI):通俗讲就是展现给用户的界面,他担当者接受用户信息和给用户显示用户信息的功能,即用户在使用一个系统的时候他的所见所得。
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理、最明显的就是三大语句、判断、循环、多分支、这个一定是在逻辑层的。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
为什么分三层
你为啥一天三顿饭?因为一天三顿刚刚好、不会饿着也不会撑死、经过前辈们的实验、软件划分三层是最理想的、最通用的、当然事事无绝对、不是所有软件都分三层的。
如:
你做个很小的软件还分三层?太小了就没必要了、还有就是要求速度特别快的
因为三层的关系、会导致运行比不分三层慢、当然也可以升级硬件加速、更快的CPU(下面会讲解原因)
特殊需求的软件分两层或多层这都是有可能的、没有一种能应对所有问题的思想或答案、对吧、三层不是万能的
三层的逻辑关系
三层相对独立、他们之间引用来完成任务,UI 引用BLL、BLL引用DLL、DLL访问数据库、其实数据库也应该算一层、但是数据库现在都有现成的、如SQL数据库等、也就相当这层已经做好了、如图
例子
下面就拿登陆窗体做个例子
这三层的联系其实就是引用、通过引用、来传值、互相协作完成一个功能、而又相互独立、每层只完成自己那层的功能。
说道传值、大家看登陆窗体这个例子、用户名和密码每一次才层都要用、这是公用数据或说是参数、但是如果很多参数怎么办???
model
如果三层是板砖、那model就是水泥、如果三层是饼干、他就是夹在中间的奶油、model其实就是帮助三个层传递参数用的、他被三层引用、如上面的例子、把用户名和密码放到model里是不是就好多了、打个比方。
咱们现在工厂都是流水线作业、比如安装电脑、分3部分、安装显示屏、安装主板、安装软件、第一个人安装好显示屏、会有传送带把电脑送到第二个人那、第二个人安好主板、放到传送带上、传送带也会运到第三个人那、如果没有传送带是不是每个人都要跑过去送?
model就是那个传送带、把每一层的参数保存、然后其他层引用model这个类、或者说公用层、其实说什么呢并不重要、重要的是了解model到底是起到了什么作用。
三层的优缺点
优点:
1.解耦。上一层只依赖于下一层,如果测试下一层没有问题,那么问题就只可能出现在本层了。便于发现和改正BUG。
2.简化复杂问题。就比如tcpip协议的四层模型或OSI七层模型,各层分工明确,将一个复杂问题简化了。
3.便于系统维护/升级。各层间通过接口解耦,接口与实现分离,从而可以非常方便的替换掉实现,或者升级实现等。
4.逻辑复用。例如原来基于B/S开发的程序现在要改成C/S,那么只要业务层的接口没有改变,那么业务层和数据层都可以直接复用。在如,只要数据访问层接口不变,那么使用便可以有对不同数据库的实现。
5.便于团队开发。只要各层接口在开发前规定好,那么各层可以独立开发,进化或维护。
6.方便部署。将各层开发成组件,则可以独立部署。
缺点:
1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码
3、增加了代码量,增加了工作量
其实三层具体怎么写代码这不重要、因为三层本身是一种思想、C#可用VB.NET可以用、其他语言也可以用、就好像电脑分显示屏、主板、软件、手机也可以分显示器、主板、软件、遥控器可以分电池和遥控器本身、这种思想就是使每个个体的功能独立、达到课复用、容易更换、修改的目的。
什么时候用三层?在软件上说、如果你的程序到达了一定的复杂程度、就可以分三成、如果你的软件很简单就没必要分三层、就好像你写字就三行、你还要分好几个段落、那叫没事找事、你出了一本书、一本书就一段、那叫没事找抽= =!所以说不要畏惧啥时候用啥时候不用、功到自然成。
总结:
其实世间万物都是息息相关的、三层其实就是生活中的一个抽象的概念、在各个领域都有应用、只是在软件这个行业、他叫三层这个名字、这次学习三层让我对软件又有了新的认识、对制作软件流程更加清晰、路是一步步走的、不知大家还记的第一次学编程写的那句话吗?