三层架构
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:Visual Studio 2017
作者:李成富
撰写时间:2019年7月22日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
什么是三层?
- UI(表现层):主要是指与用户交互的界面。
- BLL(业务逻辑层):UI层和DAL层之间的桥梁。
- DAL(数据访问层):与数据库打交道。
- Entity(实体层):它不属于三层中的任何一层,但是它是必不可少的一层。
它在三层架构中的作用:
- 实现面向对象思想中的“封装”;
- 贯穿于三层,在三层之间传递数据;
- 每一层(UIàBLLàDAL)之间的数据传递(单向)是靠变量或实体作为参数来传递的,这样就构造了三层之间的联系,完成了功能的实现。
三层以及实体层之间的依赖关系:
也就说他们各负其职,服务员不用了解厨师如何做菜,不用了解采购员如何采购食材;厨师不用知道服务员接待了那位客人,不用知道采购员如何采购食材;同样,采购员不用知道服务员接待了那位客人,不用知道厨师如何做菜。
三者如何联系的?
生活中的服务员、厨师和采购员,他们各负其职,谁也不影响谁。
比如:厨师会做:番茄炒蛋、炒面、梅菜扣肉-----此处构建三个方法(CookEgg()、CookNoodle()、CookPork())
顾客直接和服务员打交道,顾客和服务员(UI层)说:我要一个番茄炒蛋,而服务员不负责番茄炒蛋,她就把请求往上递交,传递给厨师(BLL层),厨师需要番茄和蛋,就把请求往上递交,传递给采购员(DAL层),采购员从仓库里取来番茄和蛋传回给厨师,厨师响应CookEgg()方法,做好番茄炒蛋后,又传回给服务员,服务员把番茄炒蛋呈现给顾客。这样就完成了一个完整的操作。
在此过程中,番茄和蛋作为参数在三层中传递。
为什么使用三层?
使用三层架构的目的:解耦
- 服务员(UI层)请假------另找服务员;厨师(BLL层)辞职-------招聘另一个厨师;采购员(DAL层)辞职-------招聘另一个采购员;
任何一层发生变化都不会影响到另外一层。
三层与两层的区别?
两层:
当任何一个地方发生变化时,都需要重新开发整个系统。“多层”放在一层,分工不明确耦合度高-------难以适应需求变化,可维护性低、可扩展性低
三层:
发生在那一层的变化,只需更改该层,不需要更改整个系统。层次清晰,分工明确,每层之间耦合度低-----提高了效率,适应需求变化,可维护性高,可扩展性高
三层架构的优势:
- 结构清晰、耦合度低
- 可维护性高,可扩展性高
- 利于开发任务同步进行,容易适应需求变化
三层架构的优劣势:
- 降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
- 有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在 表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在 相应的业务逻辑层和数据访问层中都增加相应的代码。
- 增加了代码量,增加了工作量。