admin 管理员组文章数量: 887032
2024年1月12日发(作者:app源码购买)
第18卷第5期 电 脑 与 信 息 技 术 Vo1.18 No.5 2 0 1 0年10月 Comouter mad Information Technoloaw Oet.2010 文章编号:1005—1228(2010)05—0068—03 基于MVC模式的数据访问模型设计 胡君 (湖南科技职业学院软件学院,湖南长沙410118) 摘要:随着web开发的日益普及,MVC模式的使用也越来越广泛。在研究MVC设计模式及其存在的缺陷的基础上。 提出一种基于MVC模式的数据模型设计方案,通过对数据访问方式的改良,有效解决了目前MVC模式开发中存在的问 题。实际应用的结果表明,采用新的数据模型的MVC模式较传统MVC模式,在程序重用性、易读性和可维护性上有较大 提高。 关键词:MVC模式;数据访问模型;重用I ;可维护性 中图分类号:11P3l1 文献标识码:A Data Access Model Based on the MVC Design Pattern HUjun (College of Software,Hunan Science and Technology Professional Institute,Changsha 410082,China) Abstract:With the increasing populafiW of Web developmeng MVC model used more widely.A Data Access Model Based on the MVC design pattern data is proposed after researching MVC mode ̄and it’S defect.It effectively solutes the problems in current MVC design pa ̄em by way of improved data access.Practical application resul ̄show that the MVC design pattern using the new data model can greatly improve the program reusability,readabiliyt and maintainability than the traditional MVC mode1. Key words:MVC model,;data access model;reusabiliyt;maintainability 面向对象技术的出现和应用大大提高了软件的重 实际标准。当用户需要与应用程序进行频繁的交互时, 用性和软件的质量【”。面向对象的编程也比以往的各种 这个框架是十分有用的。MVC模式包括三个部分:模 编程模式要简单和高效,但是面向对象的设计方法比 型(Mode1),视图(View)和控制器(Controller),分别对 以往的设计方法要复杂和有技巧得多,一个良好的设 应于内部数据、数据表示和输入输出控制部分。其中, 计应该既具有对问题的针对性,也充分考虑到对将来 模型是与问题相关数据的逻辑抽象,代表对象的内在 问题和需求有足够的通用性。有经验的设计者知道:不 詹陛,是整个模型的核心。它采用面向对象的方法,将 是解决任何问题都要从头做起,他们更愿意重用以前 问题领域中的对象抽象为应用程序对象,在这些抽象 使用过的解决方案。可以将这些面向对象软件的设计 的对象中封装了对象的属性和这些对象所隐含的逻 经验称为设计模式[21。 辑。视图是用户界面部分,它承担连接用户和应用程序 目前,人们在对面向对象技术的研究探索和实际 之间的接口角色。控制器是前面两者的接口。控制器根 应用中针对某些问题创造了一些良好的设计模式【3】。 据用户的操作判断所要执行的业务逻辑、关联模型和 MVC就是其中的佼佼者,使用MVC模式开发的应用 视图。 往往具有设计清晰、模块和代码的可重用性高,有利于 MVC模式通常定义一个受限连接集合,用以描述 软件工程化管理等特点,因此在业界广受推崇。 模型、视图与控制器之间的通信,以及数据和控制信息 1 MVC设计模式介绍 的传递方式与方向。MVC模式中三个部分之间的通信 都按照这个集合的规定进行,可以简要描述如下: MVC设计模式的思想最先应用于使用SmallTalk (1)模型一视图模型处理数据,并根据其状态 开发的应用程序 ,随后广泛用于工具软件中,如微软 变化的情况将要显示的数据提供给视图,视图将数据 基础类库(MFC)就将它作为开发客户一服务器程序的 组织成各种显示样式表现给用户。 收稿日期:2010—06—03 作者简介:胡君(1980--),男,湖北黄石人,硕士,讲师,主要研究领域为软件工程'{十算机网络。
第18卷第5期 胡君:基于MVC模式的数据访问模型设计 (2)控制器一视图控制器根据用户输入直接调 用不同视图改变响应流程,或与模型交互后获得需要 显示的数据,再调用视图改变响应流程。 (3)控制器一模型控制器与模型交互,控制器 将输人数据传递给模型处理,控制器也可以从模型中 抽取数据。 模型、视图和控制器三者间的关系如图1所示: 图1 MVC模式图 MVC模式有如下优点: (1)将数据建模,数据显示和用户交互三者分开, 使得程序设计的过程更清晰,提高了可复用程度; (2)MVC还有利于软件工程化管理。由于每一层不 同的应用具有某些相同的特征,有利于通过工程化、工 具化产生管理程序代码。 (3)应用程序通过controller来控制程序请求,可以 提供丰富的url重写。 (4)对单元测试的支持更加出色。 (5)在团队开发模式下表现更出众。 2数据访问模型 2.1 新数据访问模型在MVC模式中应用的意义 尽管使用MVC模式可以给开发带来很多好处,但 在设计MVC模式时分析不够,设计不当反而会引发相 反的效果,使得开发和维护的工作量大幅度增加。在传 统的MVC模式中,模型和控制器是相互分离的,但在 应用系统的开发过程中,实现业务逻辑需要频繁的操 作数据库嘲。开发人员需要花费大量的时间和精力来处 理诸如数据库连接、数据读取、数据更新、数据删除等 操作。由于T—SQL语句往往不能直接在IDE平台上使 用,故通常将其作为一个字符串参数传递给相关方法 处理。 当遇到DML语句需要动态变化的时候,就需要将 这些语句与程序中的变量做繁琐的字符串连接处理, 导致程序和数据库T—SQL语句交错混杂,程序的逻辑 混乱,不便于阅读及后期的系统维护工作。下面的代码 中,lblGoodslD,tbGoodsName及ddlAddress分别为 Web页面上的标签、文本框和组合框控件。可以看到, T-SQL语句和普通的代码混合在一起,代码的可复用 性相当差,并且在开发人员进行开发的时候极容易出 错。由于可读性及可扩展性差,应用系统交付使用后, 在维护人员进行维护的时候往往也不得不求助于开发 人员。 pubic void ProcessTable0{ s ̄ing eonneefionString connecdonString ”server=-.;uid=sa;pwd=123456;database=GoodsDB’’: SqlConnection conn=new SqlConnection(connectionString); conn.Open0; Mode1.GoodsTable model=Bew Mode1.GodosTable0; mode1.setgoodslD(this.1blGoodsld.Text); mode1.setgoodsName(this.tbGoodName.Text); mode1.setgoodsSetAddress(this.ddlAddress..SelectedValue. ToStringO); s ̄ngsqlCommand=’ insertintoGoodsTablevalues ̄” +mode1.getgoodslDO+….’”+mode1.getgoodsName0 +.1 tn+mode1.getgoodsSetAddress0+…)”; SqlCommand cmd=new SqlCommandO; cmd.CommandText=sqlCommand; cmd.ExecuteNonQuery0; conn.CloseO; ) 针对上述问题,本文设计了一个基于MVC模式的 数据模型,该模型充分考虑到应用程序可能进行的数 据库操作,提供面向对象方式的数据库访问和操作,能 有效地降低开发人员的工作量,提高开发效率,保持程 序良好的可阅读性和可维护性。 2.2基于MVC模式的数据访问模型设计及应用 (1)基础数据操作类设计数据处理是大多数基 于Web系统的核心任务。在一个成熟的软件产品中, 数据操作类被复用的可能性往往是最大的。作为系统 架构的最底层,它是应用程序与数据库之间的桥梁。负 责系统与数据库间的一切数据交互。一个理想的数据 库操作类应该 ①支持多数据源的访问。 ②能够在不同领域的应用中达到平滑的可复用。 本文设计了public abstract class DbAccessOleDb {)类用于对Oracle、Sybase、MySql等不同的数据源的 提供操作方法,以及public abstract class DbAc— cessSQL{}类提供对Sql Server数据库进行操作。考虑 到数据操作的各种形式,在设计方法时兼顾了简单 查询、图像处理、事务处理及存储过程的处理等。两 个类的基本方法类似,为避免重复,下面仅对DbAc— cessSQL类进行描述,该类的方法和其应提供的功能 如表1所示:
电 脑 与 信 息 技 术 2010年1O月 表1 基础数据操作类方法 方法 描述 c static bool E g s {) 挈 嚣执行 public static bool ColumnExists(string判断是否存在某表的某个 tableName,string columnName){l 字段 p bli。static int Exe。“ Sql(sU-ing执行简单的SQL ̄'fJS QLString){} … 。’ … (4)数据访问模型的应用按照上述设计实现数据 访问模型后,可以把每个数据表看成相应的对象进行 操作,通过设置对象的属性来确定表中一条记录的值, 然后使用数据访问类的方法处理数据表中的数据。使 用新的数据访问模型,可以将本文第2.1节中的代码 改写成如下代码。这段代码的面向对象性更突出,可读 性也更好,便于陕速进行大型应用程序开发和方便的 public static int ExecuteSqlTran执行多条SQL语句,实现 (List<String>SQLStringList){l 数据库事务 punic sattic int ExecuteSqlInsertImg向数据库里插人图像格式 (string su ̄SQL,byte ̄fs){】 的字段 public satitc object GetSingle(string执行一条计算查询结果语 SQLString){) 句,返回查询结果(object) public static SqlDataReader Exe一执行查询语句,返回Sql— cuteReader(string s ̄SQL){)DataReader public static DataSet Query(string执行查询语句,返回 SQLString)I】DataSet public static DataSet RunProcedure (stirng storedProcName,IDataParam一执行存储过程 eter【]parameters,stirng tableNam ̄{】 (2)数据表模型设计每个数据库表对应一个实 体类,该类的类名与数据库表的表名相同,类属性的个 数、数据类型与相关数据表的字段保持一致。实体类的 所有属性均应声明为私有的,并用一对get方法和set 方法对该属性进行封装。所有的实体类都建立在名为 model的包中。 (3)数据表访问类设计为每个数据库表建立一 个数据访问类,该类可以方便的对相应数据表进行操 作,包括增加、删除和修改记录的功能。所有的数据访 问类都建立在名为BLL的包中。在数据表访问类的实 现过程中,可以使用基础数据操作类中设计的方法。 数据访问类应包括的方法如表2所示: 表2数据表访问类方法 方法 功能描述 public bool Exists(string pk){} 判断表中对应的记录是否存在 public void Add fMode1.XXTable向数据表XXTable中插入一 mo(1e1)f】 条记录 public void Update(Mode1.XXTable更新数据表XXTable中一条 Ⅱl0de1)f1 记录 public void Delete(stringpk){l 据表 龇申的一 public Mode1.XXTable GetModel以xxTable对象的方式获取 (string pk)【】 一条记录 Dublic DataSet GetList(Mode1.以数据集的方式获取 XXTable mode1){l XxTable中所有数据 public Da aSd G。 Li。 G“ P Size,分页获取数据列表 int PageIndex,string strWhere){l ……一…… 进行维护。 Public void ProcessTable0( BLL.GoodsTable goods=new BLL.GoodsTable0; Mode1.GoodsTable model=new Mode1.GoodsTable0; mode1.goodsID=this.1blGoodsld.Text; mode1.goodsName=this.tbGoodName.Text; mode1.goodsSetAddress:this.ddlAddress.SeleetedValue. ToString0; bl1.Add(mode1); ) 3结论 随着Web开发的日益普及,应用系统规模的不断 扩大,具有良好的分层结构,成熟的构架模式的MVC 将达到越来越广泛的使用。本文在分析目前MVC模型 层应用存在问题的基础上,设计了一种新的数据模型, 并将该模型应用到了某大型上市企业的经营分析项目 中。结果表明,新的数据模型能极大地提高代码的重用 率及开发速度,有效降低开发的错误率。同时由于使用 该数据模型显著提高了代码的可读性,使得系统在升 级维护以及满足客户的需求变化方面也有突出的表 现。 参考文献: [1】谢天保,李薇.基于Web模式的管理信息系统的设计[刀.湖南大学学 报(自然科学版),2002,29(1):124—128. 【2】张俊,王俊峰.Web应用程序的设计与分析阴.计算机工程与应用, 2000,36(3):1 16-121. [3】艾迪明..NET框架体系结构 .计算机工程与应用,2003(2): 174-176. [4]Chen C,Qianxiang Wang,Hong Mei,Fuqing Yang.An Arehitecture-Based Approach for Component—Oriented Development.Pro—eeediogs 0f COMPSAC,2002,20(8):33-38. [5】PerryDE,WolfA L.Foundationsforthe Study 0fSoftwareArchitecture 帆.ACM SIGSOFT Software Engineering Notes,1992,l7(4):40-52. [6】张海波,王小非,曹万华,等.新型软件体系结构研究[J].计算机与数 字工程,2007,35(1):50-54.
版权声明:本文标题:基于MVC模式的数据访问模型设计 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705053121h471331.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论