1.NET三层架构与三层架构下GRIDVIEW控件增删改操作详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上面谈了那么多,有人会问,我直接从数据库取出内容直接操作不可以吗?为什么要这 么麻烦地用三层架构呢?三层架构到底有什么好处呢?
不分层,当然可以,就好比整个过程不分屠宰场、加工场之类的,都在同一个场所(工 厂)完成所有的活(屠杀、加工、销售)。但为什么要加工厂和商场呢?因为当规模比较大的时 候,管理起来就会变得非常复杂,这样的养殖方式已经无法满足规模化的需要了。并且,从 社会的发展来看,社会分工是人类进步的表现。社会分工的优势就是让适合的人做自己擅长 的事情,使平均社会劳动时间大大缩短,生产效率显著提高。能够提供优质高效劳动产品的 人才能在市场竞争中获得高利润和高价值。人尽其才,物尽其用最深刻的含义就是由社会分 工得出的。软件开发也一样,做小项目的时候,分不分层确实看不出什么差别,并且显得更 麻烦啰嗦了。但当项目变大和变复杂时,分层就显示出它的优势来了。所以分不分层要根据 项目的实际情况而定,不能一概而论。
解决方案 DiaryPro 中,然后在新建一个网站 DiaryWeb。然后右键单击网站,设为启动项目,结构图如下:
3 添加类库的引用关系 DiaryBLL 添加 DiaryDAL 和 DiaryModel,如下图所示:
DiaryDAL 添加 DiaryModel,如下图所示:
表示层 Web 添加上述三个,如下图所示: 4 类库中类的编写
GridView 的设计过程如下: 拖放一个 GridView 控件到页面中,然后添加三个 BoundField 字段,HeaderText 属性分别为用户 ID、用户名、密码,
绑定字段分别为 ID,username,password,一个 CommandField 字段,显示编辑按钮和删除按钮,然后再将上述四个字段
点击查看 DBHelper 类 新建一个 UserService.cs 类,实现增删改查等相关操作,具体代码如下所示:
3)DiaryBLL(业务逻辑层) 新建一个 UserManage.cs 类,具体代码如下:
4 Web 网站的设计 为了实现三层架构下的增删改操作,我们用到了 GridView 控件,界面如下如所示:
图 3 最后完整的三层架构 数据库访问类是对 ADO.NET 的封装,封装了一些常用的重复的数据库操作。如微软的 企业库 SQLHelper.cs,动软的 DBUtility/DbHelperSQL 等,为 DAL 提供访问数据库的辅助工具
类。 通过以上分析,我们知道如今常用的三层架构是个什么样子,同时,我们也知道了三层
当然,这里只是形象的比喻,目的是为了让大家更好地理解,实际的情况在细节上会有 所不同。这个例子也只是说明了从猪圈到商场的单向过程,而实际三层开发中的数据交互是 双向的,可取可存。不过,据说有一种机器,把猪从这头赶进去,另一头就噗噗噜噜地出火 腿肠了。如果火腿肠卖不了了,从那头再放进去,这头猪又原原本本出来了,科幻的机器吧, 没想到也可以和三层结构联系上。以上只是笑谈,不过也使三层架构的基本概念更容易理解 了。
过程。
* 通用类库 Common 相当于工人使用的各种工具,为各个厂(层)提供诸如杀猪刀、绳子、 剪刀、包装箱、工具车等共用的常用工具(类)。其实,每个部门本来是可以自己制作自己的 工具的,但是那样会使效率比较低,而且也不专业,并且很多工作都会是重复的。因此,就 专门有人开了这样的工厂来制作这些工具,提供给各个工厂,有了这样的分工,工厂就可以 专心做自己的事情了。
<asp:TemplateField HeaderText="用户 ID"> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("UserID") %>'></asp:Label> </ItemTemplate>
1、 常用的三层架构设计 软件系统最常用的一般会讲到三层架构,其实就是将整个业务应用划分为表示层、业务 逻辑层、数据访问层等,有的还要细一些,通过分解业务细节,将不同的功能代码分散开来, 更利于系统的设计和开发,同时为可能的变更提供了更小的单元,十分有利于系统的维护和 扩展。 常见的三层架构基本包括如下几个部分,如图 1 所示。
图 1 常见的三层架构
* 数据访问层 DAL:用于实现与数据库的交互和访问,从数据库获取数据或保存数据到 数据库的部分。
* 业务逻辑层 BLL:业务逻辑层承上启下,用于对上下交互的数据进行逻辑处理,实现 业务目标。
* 表示层 Web:主要实现和用户的交互,接收用户请求或返回用户请求的数据结果的 展现,而具体的数据处理则交给业务逻辑层和数据访问层去处理。
为了更好地让初学者轻松入门,这里仍然采用趣味性的方式聊一些常用技术点,致力于.NET 新手们的快速提高!知识都是普通的,关键是学习的思路。技术源于生活,技术原来可以这 样学。抛砖引玉而已。
层次结构在现实社会里随处可见。记得有个笑话讲有个村长得意地向他老婆吹牛:“全 中国只有四个人比我官大,乡长、县长、省长和国务院总理”。这个笑话也体现了真实社会 中分层的现象。社会人群会分层,公司人员结构也会分层,楼房是分层的,甚至做包子的笼 屉都是分层的。虽然分层的目的各有不同,但都是为解决某一问题而产生的。所以,分层架 构其实是为了解决某一问题而产生的一种解决方案。
转化为模板列。
Web 网站的设计
前台代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tran
架构在使用过程中的一些演化过程。那么,为什么要这样分层,每层结构到底又起什么作用 呢?我们继续往下看。
2、 趣味理解:三层架构与养猪 看新闻报道今年猪肉价格一路高涨,据说有人养猪都发财致富奔小康了,程序员都说写 代码没前途了,还不如去养猪,不过,可别认为养猪没有技术含量,比写代码容易,其实养 猪也大有学问。为了更好地理解三层架构,就拿养猪来做个例子吧。俗话说:“没吃过猪肉, 还没见过猪跑啊!”。 图 4 是三层架构化的养猪产业流水线趣味对此图。
.NET 三层架构与三层架构下 GridView 控件增删改操作详解(一)
所谓三层架构(3-tier application)就是将整个业务应用划分为:表现层(UI)、业务逻辑层 (BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚、低耦合”的思想。 1、表现层(UI):主要是指与用户交互的界面,用于显示数据和接受用户输入的数据,将用 户输入的数据传递给业务逻辑层,一般不包含任何实际的业务处理,当业务逻辑层的数据发 生变化时,表示层就会显示出更新的结果。表示层提供应用程序的用户界面,通常为 Windows 应用程序或 Web 应用程序。 2、业务逻辑层(BLL):是表示层和数据访问层之间的桥梁,它代表应用程序的核心功能, 负责处理数据层的数据,实现业务逻辑。业务逻辑层通常为类库。 3、数据访问层(DAL):主要实现对数据的保存和读取操作,将存储在数据库中的数据提交 给业务层,同时将业务层处理的数据保存到数据库中。数据访问层可以访问关系数据库、文 本文件或者 XML 文档,通常为类库。 三层架构对应的图如下图所示:
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>无标题页</title> </head> <body>
<form id="form1" runat="server"> <div>
用户列表:<br /> <asp:GridView ID="GridView1" runat="server" AutoGeneratewk.baidu.comolumns="False"
图 4 三层结构与养猪 对比图 3 与图 4,我们可以看出: * 数据库好比猪圈,所有的猪有序地按区域或编号,存放在不同的猪栏里。 * DAL 好比是屠宰场,把猪从猪圈取出来进行(处理)屠杀,按要求取出相应的部位(字段), 或者进行归类整理(统计),形成整箱的猪肉(数据集),传送给食品加工厂(BLL)。本来这里都 是同一伙人既管抓猪,又管杀猪的,后来觉得效率太低了,就让一部分人出来专管抓猪了 (DBUtility),根据要求来抓取指定的猪。 * BLL 好比食品加工厂,将猪肉深加工成各种可以食用的食品(业务处理)。 * Web 好比商场,将食品包装成漂亮的可以销售的产品,展现给顾客(UI 表现层)。 * 猪肉好比 Model,无论是哪个厂(层),各个环节传递的本质都是猪肉,猪肉贯穿整个
此时,三层架构会演变为如图 2 所示的情况。
图 2 三层架构演变结果 *业务实体 Model:用于封装实体类数据结构,一般用于映射数据库的数据表或视图, 用以描述业务中客观存在的对象。Model 分离出来是为了更好地解耦,为了更好地发挥分层 的作用,更好地进行复用和扩展,增强灵活性。 *通用类库 Common:通用的辅助工具类。 在 第 5.2 节 中 我 们 讲 过 可 以 将 对 数 据 库 的 共 性 操 作 抽 象 封 装 成 数 据 操 作 类 ( 例 如 DbHelperSQL),以便更好地复用和使代码简洁。数据层底层使用通用数据库操作类来访问数 据库,最后完整的三层架构如图 3 所示。
BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" PageSize="4" Width="778px" OnRowDeleting="GridView1_RowDeleting" OnRowDataBound="GridVie OnRowEditing="GridView1_RowEditing" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowUpdating="GridView1_RowUpdating"> <FooterStyle BackColor="White" ForeColor="#000066" /> <RowStyle ForeColor="#000066" /> <Columns>
1)DiaryModel(业务实体层),新建一个 User 类 代码如下:
该类可以获得 User 类的各个字段。 2)DiaryDAL(数据访问层)
由于本层要用到数据库的相关操作,所以这里用到了微软封装的 DBHelper.cs 类。DBHelper 类访问了 Web 网站的配置文件, 获得连接字符串,DiaryDAL 要添加引用 System.configuration。Web 网站的 Web.config 文件相关代码如下: (将 DBHelper.cs 类纺织 DiaryDAL 目录下,要注意的是 DBHelper 类下的命名空间要改为 DiaryDAL)
日常开发的很多情况下为了复用一些共同的东西,会把一些各层都用的东西抽象出来。 如我们将数据对象实体和方法分离,以便在多个层中传递,例如称为 Model。一些共性的通 用辅助类和工具方法,如数据校验、缓存处理、加解密处理等,为了让各个层之间复用,也 单独分离出来,作为独立的模块使用,例如称为 Common。
NET 三层架构与三层架构下 GridView 控件增删改操作详解(二)
(由于代码过多文章发表不了,所以很多代码用截图表示)
1 新建一个数据库 test,新建一个表 Users,表中有如下字段(ID,username,password)。其中 ID 为表示字段。结构如下图:
2 新建三个类库 DiaryBLL(业务逻辑层),DiaryDAL(数据访问层),DiaryModel(业务实体层),将上述三个类库放至
相关文档
最新文档