转自:https://www.cnblogs.com/weilengdeyu/archive/2013/01/04/2844847.html

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

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

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

三层架构的优势

  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. 将实体对象中的数据保存到数据库中

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

三层的效率

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

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

.NET三层架构开发初步的更多相关文章

  1. DONET三层架构开发初步

    .NET三层架构开发初步 今天咱们来谈下三层架构.说到三层架构,搞过点程序的可能都知道三层架构的概念.但是对三层的精髓可能不是很了解. 首先说下自己对三层的理解,就是使用三个(多个)项目结合起来开发出 ...

  2. .Net 三层架构开发初步

    写在前面的话:在课堂上只是听老师讲过三层架构,知道大概是什么意思,我的理解就是将本来混合着写在一起的代码按功能性的不同分别写在不同的项目中,然后上层项目调用下层项目提供的接口,这样可以使代码的层次更清 ...

  3. 用VS2010创建三层架构开发模式及三层架构的研究

    三层架构的研究 三层体系结构的概念 用户界面表示层(USL) 业务逻辑层(BLL) 数据访问层(DAL) BLL将USL与DAL隔开了,并且加入了业务规则   各层的作用 1:数据数据访问层:主要是对 ...

  4. 利用General框架进行三层架构开发

    三层架构是企业信息管理系统中一种比较流行的架构方式,如大家所知,三层架构将信息系统分为数据访问层(DAL).业务逻辑层(BLL).界面表示层(UI)三部分,三层架构的好处是根据系统中代码所处的层次将系 ...

  5. JAVAEE企业级应用开发浅谈第二辑:MVC和三层架构

    上海尚学堂警句:一份信心,一份努力,一份成功:十分信心,十分努力,十分成功. Step1.情景概要 Hello,小伙伴们,昨天跟大家分享了JAVA EE 企业级应用开发中大家耳熟能详的概念-三层架构, ...

  6. 从MVC和三层架构说到SSH整合开发

    相信很多人都认同JavaWeb开发是遵从MVC开发模式的,遵从三层架构进行开发的,是的,大家都这么认同.但是相信大家都会有过这样一个疑问,if(MVC三层模式==三层架构思想)out.println( ...

  7. MVC开发模式与javaEE三层架构

    1.MVC开发模式 1. M:Model,模型.JavaBean        * 完成具体的业务操作,如:查询数据库,封装对象2. V:View,视图.JSP        * 展示数据3. C:C ...

  8. 从MVC和三层架构说到ssh整合开发-下

    这章主要讲整合开发,直接从实战讲起,对与ssh的单方面了解,请继续等待我的兴许文章. 解说不到位的地方欢迎大家指正:联系方式rlovep.com 具体请看源码凝视: 全部代码下载(csdn):链接 G ...

  9. 【转】WEB开发三层架构概述

    关于 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低耦合” ...

随机推荐

  1. VSCode批量替换使用注意问题

    VSCode批量替换功能很强大,需要注意两点 1.不要搜到文件个数超过到10000时替换,这时替换过程中可能会出错崩溃(也可能是服务器上内存较小导致) 2.不要在搜索中反复替换可能会导致数据错乱 比如 ...

  2. spring的15个经典面试题

    总结Spring框架的15个经典面试题. 什么是Spring框架? Spring是一种轻量级框架,旨在提高开发人员的开发效率以及系统的可维护性. 我们一般说的Spring框架就是Spring Fram ...

  3. vue单页面引入CDN链接

    不想在index.html文件中全局引入CDN资源,那么如何在Vue单文件组件中引入?下面来瞅瞅~ 虚拟DOM创建 Vue 通过创建一个虚拟 DOM 来追踪自己要改变的真实 DOM 什么是虚拟DOM? ...

  4. ImageUtility辅助类

    public class ImageUtility { #region 合并用户QR图片和用户头像 /// <summary> /// 合并用户QR图片和用户头像 /// </sum ...

  5. 关于Panel隐藏横向滚动条

    不设置控件的AutoScroll属性,在后台写代码,就可以隐藏掉横向滚动条

  6. 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!

    原文地址 迁移到:http://www.bdata-cap.com/newsinfo/1741515.html 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和f ...

  7. Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)

    0x00 漏洞描述 Windows系列服务器于2019年5月15号,被爆出高危漏洞,该漏洞影响范围较广如:windows2003.windows2008.windows2008 R2.windows ...

  8. 剑指:包含min函数的栈(min栈)

    题目描述 设计一个支持 push,pop,top 等操作并且可以在 O(1) 时间内检索出最小元素的堆栈. push(x)–将元素x插入栈中 pop()–移除栈顶元素 top()–得到栈顶元素 get ...

  9. elasticsearch查询所有数据restful api以及java代码实现

    原文:http://blog.java1234.com/blog/articles/366.html restful api实现如下: get http://192.168.1.111:9200/fi ...

  10. MySQL——基本概念

    1.数据库:是一个长期存储在计算机内的.有组织的.有共享的.统一管理的数据集合.它是一个按数据结构来存储的和管理数据的计算机软件系统,即数据库包含两层含义:保管数据的“仓库”,以及数据管理的方法和技术 ...