三层架构下ADO.NET数据库访问技术的应用探究 |
2013-09-23 11:54 作者:钟大利 黄宗正 来源:硅谷网-《电脑知识与技术》杂志 HV: 编辑: 【搜索试试】
|
|
硅谷网据《电脑知识与技术》杂志刊文 为了使web应用程序结构更清楚,分工更明确,利于后期维护和升级,三层架构下的ADO.NET数据库访问技术受到越来越多设计者的青睐。本文主要从技术角度分析了三层结构体系、ADO.NET数据库访问技术以及它们在新闻系统中用户登录模块的设计与实现方法。
1.三层架构体系
三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交换。以微软推荐的分层结构为例,将web应用程序依次划分为数据访问层、业务逻辑层和表示层。
数据访问层负责对数据库的访问,实现对数据表的“查插删改”操作。
业务逻辑层负责业务处理和数据传递,实现业务规则和业务逻辑。
表示层主要负责内容呈现和用户交互。它从业务逻辑层获取数据并显示,同时将和用户交互的相关数据送回业务逻辑层处理。
模型层作为在层与层之间数据传递的载体,包含了与数据库表象对应的实体类。
各层之间的关系为上层调用下层,上层依赖下层,其中模型层是各层间的载体,各层均依赖模型层。
2. ADO.NET数据库访问技术
ADO.NET提供了平台互用性和可伸缩的数据访问,由一系列用于操作数据访问的类组成,通过它可以快速地存取数据,其流程类似生活中的“买苹果“,首先,买家根据卖家信息,和卖家打招呼并告知他购买意愿;其次,告诉卖家要买什么,具体数量等信息;再次,卖家执行买家要求,称好水果;最后,装袋给买家,等待买家进一步处理水果。过程中,WEB应用程序好比“买家”,数据库好比要买的“水果”,ADO.NET核心对象好比“卖家”,WEB应用程序要想实现对数据库的操作,必须通过和“卖家”ADO.NET核心对象,具体流程如下:
(1)打招呼:建立并打开连接
Using(SqlConnectioncn=newSqlConnection(connectionString))
{cn.Open();
数据库相关操作}
(2)告知“卖家”要做什么:初始化命令
SqlCommandcm=newSqlCommand();
cm.Connection=cn;
cm.commandText=“相关SQL命令”;
cm.Parameters.AddWithValue(“参数名”,参数值);
(3)卖家称水果:执行命令
cm.executeReader()或者cm.executeNonquery()或者cm.executeScalar(),三种方法视具体情况选择。
(4)卖家装袋,待买家下一步处理:保存执行结果待进一步处理
SqlDataReaderdr=cm.executeReader();|cm.executeScalar();
If(dr.read()
{相关数据处理;}
3. 三层架构下的ADO.NET数据库访问技术的应用
下面利用三层架构下的ADO.NET数据库访问技术,以新闻发布系统中的用户登录模块的设计为例,介绍其实现方法。根据用户登录逻辑,将整个模块流程设计如图2所示:
3.1系统基本框架的搭建
搭建思路为:新建模型层→新建系统数据访问层→新建系统业务逻辑层→新建系统表示层→添加各层之间的相互依赖。
(1)运行VisualStudio2010,新建空白解决方案,将其命名为NewsLogin,
(2)新建一个名为NewsModels的类库,添加实体类,将其作为模型层。
(3)新建一个名为NewsDAL的类库,将其作为数据访问层。
(4)新建名为NewsBLL的类库,将其作为业务逻辑层。
(5)新建“ASP.NETWEB应用程序”的模板,将其作为表示层,命名为WEB。
(6)依次建立表示层对业务逻辑层、业务逻辑层对数据访问层以及这三层对模型层的依赖关系。
3.2数据库设计
用户表(Users)结构设计为:
Users(Id,UName,UPwd,RealName,UAddress,Phone,Email)。其中,除Id数据类型为int,是用户表(Users)主键,其余字段数据类型为nvchar(50)。
3.3用户登录模块实体类的实现
实体类通常是根据数据库表的设计编写成员变量和相应的变量读写属性,再加一个构造函数即可。如用户实体User类可以在类文件user.cs中编写实现。
publicclassUser{
privateintid;
privatestringuName=string.Empty;
privatestringuPwd=string.Empty;
……
publicUser(){}
publicintId{get{returnthis.id;}set{this.id=value;}}
publicstringUname{get{returnthis.uName;}set{this.uName=value;}}
……
}
3.4用户登录模块数据访问层的实现
根据用户输入的用户名和密码提交数据库进行查询,如果查询的用户记录存在,则返回一个用户对象,不存在则返回null。
在NewDAL数据访问层中新建类文件UserService.cs。将数据访问层中的有关用户对象的操作都写在这个类里,在其中定义一个根据登录名查询用户的方法publicstaticUserGetUserByUName(stingUName).
3.5用户登录模块业务逻辑层的实现
当用户登录系统时,首先要判断输入的登录信息是否有效。可以在业务逻辑层创建一个对应的用户登录方法,接收表示层提交过来的用户名和密码,判断是否为合法用户。如果是合法用户,则返回true,否则返回false。
在NewsBLL业务逻辑层中新建类文件UserManager.cs,在其中定义验证用户登录信息是否有效的方法publicstaticboolUserLogin(stingUName,stringUPwd,outUservalidUser)。
3.6用户登录模块表示层的实现
表示层用于显示数据和接收用户输入的数据,为用户提供一种交互式操作。在用户单击“登录”按钮的单击事件中,首先进行用户输入内容的合法性验证(用.net验证控件实现即可),然后通过调用业务逻辑层的相关方法判断用户名和密码是否匹配,如果匹配,则登录系统主页,否则提示登录失败。在NewsLogin项目中新建一个Admin文件夹,在该文件夹下创建页面文件adminLogin.aspx。
4.总结
为了体现”高内聚,低耦合”的软件设计思想,在基于ado.net的数据库访问技术中,三层架构思想应用越来越广泛,它以分层思想把WEB应用程序划分成不同的层次加以实现,从而实现了对人员的合理分工,提高了开发效率,也使得.netweb应用程序的可扩展性和健壮性得到很大的提升,在实际使用过程中,ASP.NET三层结构各司其职,互不干涉,在WEB应用程序开发和后期维护中极为便捷,值得我们一探究竟。
作者简介:钟大利(1986-),女,贵州遵义人,贵州工业职业技术学院助理实验师,主要研究方向:网站建设,移动开发。 |
|
|
|
【对“三层架构下ADO.NET数据库访问技术的应用探究”发布评论】 |
版权及免责声明:
① 本网站部分投稿来源于“网友”,涉及投资、理财、消费等内容,请亲们反复甄别,切勿轻信。本网站部分由赞助商提供的内容属于【广告】性质,仅供阅读,不构成具体实施建议,请谨慎对待。据此操作,风险自担。
② 内容来源注明“硅谷网”及其相关称谓的文字、图片和音视频,版权均属本网站所有,任何媒体、网站或个人需经本网站许可方可复制或转载,并在使用时必须注明来源【硅谷网】或对应来源,违者本网站将依法追究责任。
③ 注明来源为各大报纸、杂志、网站及其他媒体的文章,文章原作者享有著作权,本网站转载其他媒体稿件是为传播更多的信息,并不代表赞同其观点和对其真实性负责,本网站不承担此类稿件侵权行为的连带责任。
④ 本网站不对非自身发布内容的真实性、合法性、准确性作担保。若硅谷网因为自身和转载内容,涉及到侵权、违法等问题,请有关单位或个人速与本网站取得联系(联系电话:01057255600),我们将第一时间核实处理。
|
|
|
|