• DONET三层架构开发初步


    今天咱们来谈下三层架构。说到三层架构,搞过点程序的可能都知道三层架构的概念。但是对三层的精髓可能不是很了解。

    首先说下自己对三层的理解,就是使用三个(多个)项目结合起来开发出一个应用系统。下层项目为上层项目提供了接口(说白了就是可以从上层类访问下层类的方法),并且将结果返回到上层。

    接下来咱们来看下三层的优势

    三层架构的优势

    1. 适应变化、利于维护:项目需求往往随市场的变化而发生变化,三层架构通过将各功能模块分离,提高了项目的可维护性和代码的可重用性。
    2. 适用于协作开发。
    3. 主流趋势,越来越多的企业在开发项目时采用三层架构作为项目的基础架构。三层架构在将来会有更多的市场。

    当然,这些优势在后续的开发中我们会有更新的体会。

    了解过三层的优势后,我们来看下三层架构究竟由哪三层组成,重点到了。

    三层架构包括哪三层?

    数据访问层(DAL)、业务逻辑层(BLL)和UI(表示)层

     

    数据访问层:封装了所有与数据库的交互操作。数据交互无非就是增、删、改、查(C:Create,

    D:Delete  U:Update   R:Retrieve),数据访问层就针对每个数据表提供增、删、改、查操作,不做业务逻辑的判断。

     

    过去使用ADO.NET连接数据库需要编写固定格式的代码,比如打开数据库连接,关闭数据库连接等。在面向对象的课程中,我们在每一个数据访问层的方法中编写重复的ADO.NET代码。那么大家有没有想过重用这些代码呢?这里我们使用了一个封装了ADO.NET方法的类----SqlHelper类,用来提高数据访问代码的可重用性。

         针对模型层中的每一个类,数据访问层都有一个对应的数据访问类。比如针对User实体类,有一个对应UserService类,专门处理有关Users表的数据处理。

         接下来,咱们来对三层的理解更进一步。

    三层深入理解

    1.复杂项目不能把SQL语句直接写到界面里,不模块化、难以维护,应该采用三层架构。先慢慢吸收,然后再理解。Web开发中的三层机构也是同样的结构。还有更复杂的三层架构和多层架构(petshop)每个人写法都不一样,理解精髓即可。

       这里需要说明:三层只是一个比较好的软件架构,不是非使用三层不可。

     2.三层的组成

       01.界面层UI(User Intgerface);

    02.数据访问层DAL(Data Access Layer);

    03.业务逻辑层BLL(business  logic  layer)

      对数据进行操作的代码写在DAL中,一般就是SQL语句,DAL只有对数据的操作,不能有逻辑判断。

    三层架构图

     

    三层实战

    咱们一起来创建一个三层项目

    1.命名规则:DAL层,一般使用表名+Service,例如:Emp表在DAL层命名为EmpService。

         BLL层,一般表名+BLL,例如:Emp表在BLL层命名为EmpBLL

         但是这里注意一点:BLL不是简单对DAL层的一个转发,还包括业务逻辑。例如:“未经审核的数据不允许删除”这样的逻辑应该写到BLL中。

        2.三层的优点

          UI层和BLL打交道,不用处理SQL语句;开发更方便,更不容易出错。一般,UI层中没有复杂的代码,解耦合,容易改变UI层技术。如果由Winform改成asp.net只要修改UI即可。如果由Sql Server改成Oracle,只需修改DAL即可。

    这里还要提醒大家一点:Model是在三层之间传递数据的。而且Model不属于三层中任意一层。

    那么各层之间使用Model(实体类的作用是什么呢??)

    表示层中使用实体类:

    1.  将解析实体对象中封装的数据展示给用户

    2.  将用户请求的数据封装到实体对象中

    业务逻辑层中使用实体类

    1. 将接收到的实体对象传递到下一层
    2. 根据用户请求对实体对象中的数据进行处理。

    在数据访问层中使用实体类

    1. 将数据库中的数据封装到实体对象中或将多个实体对象封装成集合
    2. 将实体对象中的数据保存到数据库中

    最后,我们来看下三层的效率。

    三层的效率

     三层一般会比不分层满,但是为了分工明确,这样的少量的性能下降是可以的,很多时候效率不是唯一追求的因素。

     下次课内容咱们一起来使用三层开发一个简单的日记系统。

  • 相关阅读:
    初学者bootstrap(五)JavaScript插件(上)在路上(6)
    初学者bootstrap(三)下载与安装在路上(7)
    Viewport响应式 Web 设计在路上(13)
    初学者动画(一)在路上(3)
    svn添加强制注释,precommit结合python
    ftpclient卡死问题
    @Transactional失效的问题
    javamail发送二进制流附件的问题
    springmvc附件上传核心代码
    kafka集群配置与测试
  • 原文地址:https://www.cnblogs.com/sczw-maqing/p/3201496.html
Copyright © 2020-2023  润新知