C#之三层学习

       三层已经看了好多遍了,结合资料和自己对他的理解来做一个小小的总结。

     什么是三层?:

        顾名思义:分为以下三层(如图第一张):

        UI层(界面层):主要是指与用户交互的界面,用于接收用户的请求然后通过一系列的处理然后返回给用户相应的数据。

        BLL层(业务处理层):是UI层和DAL层的桥梁,通过BLL层事项UI和DAL的业务逻辑。

        DAL层(数据访问层):与数据库打交道,主要实现对数据的增删改查,将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。(当然这些操作都是基于UI层的。用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户)。

        但是在三层的运用过程中,还有一个必不可少的一层Entity(实体层)(如图第二张)

        实体层不属于三层中的任何一层,但是是必不可少的,不可替代的一层。其作用也是十分重要的:

  • 1、实现面向对象思想中的"封装";
  • 2、贯穿于三层,在三层之间传递数据;(注:确切的说实体层贯穿于三层之间,来连接三层
  • 3、每一层(UI—>BLL—>DAL)之间的数据传递(单向)是靠变量或实体作为参数来传递的,这样就构造了三层之间的联系,完成了功能的实现。

        但是对于大量的数据来说,用变量做参数有些复杂,因为参数量太多,容易搞混。比如:我要把员工信息传递到下层,信息包括:员工号、姓名、年龄、性别、工资....用变量做参数的话,那么我们的方法中的参数就会很多,极有可能在使用时,将参数匹配搞混。这时候,如果用实体做参数,就会很方便,不用考虑参数匹配的问题,用到实体中哪个属性拿来直接用就可以,很方便。这样做也提高了效率。

        为什么使用三层?

        使用三层最主要的目的就是:解耦。三层各司其职,任何一层都不会影响到另外两层。能够给程序员带来很小的麻烦。还有就是可以防止更改数据库时对其他的代码构成影响,总之最主要的功能就是:解耦!!

      结合生活实例:

        教育机构中有咨询、老师和学管

       咨询:只管招生,接待学生家长。

       学管:负责给学生安排相应的老师。

       老师:相应的老师对学生进行教学。

        三种角色各司其职,谁也不影响谁,咨询只管招生,不管分配学生跟哪个老师,更不管教学。学管给学生分配老师,不管怎么教学和怎么招生,老师只管教学,不管如何招生,如何分配。

       解耦就相当于:(任何一个职责都不影响另一个)【教育机构还有其他的咨询、学管和老师】

      1)咨询招不上学生,换咨询,

      2)学管干的不好,换学管

      3)老师教不好,换老师

      三层的优势和劣势

     优势:

     1)结构清晰,耦合度底       2)可维护性高,可扩展性高      3)利于开发任务同步进行,容易适应需求变化

      劣势:

     1)降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

     2)有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层数据访问层中都增加相应的代码。

     3)增加了开发成本

                                欢迎大佬们的斧正和补充!!!

发布了114 篇原创文章 · 获赞 18 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43267344/article/details/100607272