第13章Web系统的多层结构

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第13章Web系统的多层结构ASP.NET开发的Web系统是基于B/S模式的,Web系统通常是多层架构。13.1Web系统的三层结构13.1.1什么是Web系统的三层结构将整个业务应用划分为表示层-业务层-数据访问层-数据库,明确地将客户端的表示层、业务逻辑访问、数据访问及数据库划分出来,如图13.1所示。其中表示层负责直接跟用户进行交互,一般指应用程序的界面,用于数据录入,数据显示等。用户表示层(UI)业务逻辑层(BBL)数据访问层(DAL)数据源业务逻辑层用于做一些有效性验证的工作,以更好地保证程序运行的健壮性。如完成数据添加、修改和查询业务等。数据访问层用于专门跟数据库进行交互。执行数据的添加、删除、修改和显示等。优点:采用分层有利于系统的开发、维护、部署和扩展。采用“分而治之”的思想,把问题划分开来各个解决,易于控制,易于延展,易于分配资源。13.1.2Web系统三层结构示例通过一个典型的例子说明如何使用ASP.NET和SQLServer2005来构建一个三层应用。【例12.1】设计一个用于显示指定班的所有课程平均分的网页WebForm13-1。解:其设计过程如下:①整体结构设计。采用Web三层体系结构,用户表示层对应WebForm13-1网页,业务逻辑层设计成DbOp类,数据访问层设计成Database类,如图13.2所示。用户表示层(实现WebForm13-1.aspx网页)业务逻辑层(实现DbOp类)数据访问层(实现Database类)数据库Stud②数据访问层DAL设计。在Myaspnet网站的ch13文件夹中添加一个名称为WebForm13-1的空网页。单击“网站”中的“添加新项”菜单命令,选中“类”选项,建立的类文件为DAL(放在App_Code文件夹中),对应的代码如下:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.SqlClient;publicclassDatabase{protectedSqlConnectionmyconn;//保护的字段publicDatabase()//构造函数{stringmystr;mystr=ConfigurationManager.ConnectionStrings[myconnstring].ToString();myconn=newSqlConnection();myconn.ConnectionString=mystr;myconn.Open();}~Database()//析构函数{try{if(myconn!=null)myconn.Close();}catch{}}publicDataSetGetDataset(stringmysql)//返回数据集{DataSetmyds=newDataSet();SqlDataAdaptermyda=newSqlDataAdapter(mysql,myconn);myda.Fill(myds);returnmyds;}}其中包含一个Database类,通过构造函数建立并打开连接,通过析构函数关闭连接,通过GetDataset公有方法执行指定的mysql语句并返回对应的数据集。③业务逻辑层BLL设计。单击“网站”中的“添加新项”菜单命令,选中“类”选项,建立的类文件为BLL(放在App_Code文件夹中),对应的代码如下:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;publicclassDbOP{privatestringbh;//班号privatestringretstr;//查找结果字符串publicstringpbh//班号属性{set{bh=value;}}publicstringpretstr//查找结果字符串属性{get{returnretstr;}}publicvoidCompute()//计算指定班的所有课程的平均分{inti=0;Databasedb=newDatabase();stringmysql=select课程名,avg(分数)fromstudent,score;mysql+=wherestudent.学号=score.学号andstudent.班号='+bh.Trim()+'groupbyscore.课程名;DataSetmyds=db.GetDataset(mysql);if(myds.Tables[0].Rows.Count0)//存在该班的分数记录时{retstr=课程名\t\t平均分\n;while(imyds.Tables[0].Rows.Count){retstr+=myds.Tables[0].Rows[i][0]+\t;retstr+=string.Format({0:n},myds.Tables[0].Rows[i][1])+\n;i++;}}elseretstr=没有该班号的成绩;}}④用户表示层UI。这主要是设计WebForm13-1网页,其设计界面如图13.3所示,其中包含两个HTML标签、两个文本框(TextBox1为单行文本框,TextBox2为多行文本框)和一个命令按钮Button1。并设计如下事件过程:protectedvoidButton1_Click(objectsender,EventArgse){DbOPmydbop=newDbOP();mydbop.pbh=TextBox1.Text;mydbop.Compute();TextBox2.Text=mydbop.pretstr;}该事件过程将用户输入的班号赋给mydbop对象的pbh属性,然后调用mydbop对象的Compute方法产生查询结果字符串,并将其在TextBox2文本框中显示出来。至此,这种三层结构的Web系统示例设计完毕。单击工具栏中的按钮运行本网页,输入09002班号,单击“查找”命令按钮,在多行文本框中显示09002班的所有课程的平均分,如图13.4所示。13.2ObjectDataSource控件13.2.1ObjectDataSource控件和SqlDataSource控件的区别SqlDataSource等控件极大简化了数据库的访问,无需编写代码就可以选择、更新、插入和删除数据库数据,对于开发两层体系结构(只包含表示层和数据访问层)的应用程序非常容易,适合于规模较小的应用程序,但对于开发企业级多层体系结构的应用程序就效果不佳,因为这些数据源控件的灵活性欠缺,它们将表示层和业务逻辑层混合在一起。ObjectDataSource控件就解决了这一问题,它帮助开发人员在表示层与数据访问层、表示层与业务逻辑层之间建立联系,从而将来自数据访问层或业务逻辑层的数据对象,与表示层中的数据绑定控件绑定,实现数据的选择、更新或排序等。ObjectDataSource控件可以从.aspx网页和表示层中抽象出特定的数据库设置,并将它们移至多层体系结构中的较低层,如图13.5所示,其中,ObjectDataSource控件通过接口对象或业务实体对象,将数据传递给数据绑定控件,从而实现各项功能。数据绑定控件表示层ObjectDataSource数据运算方法业务逻辑层数据库访问方法数据访问层数据库数据源SqlDataSource控件中的ConnectionString、ProviderName和SelectCommand属性在ObjectDataSource控件中不存在,相反,它们被替换成告诉ObjectDataSource控件实例化哪个业务类以及使用哪个方法来查询或修改数据的其他属性,这些业务类和方法位于数据访问层或业务逻辑层中。13.2.2ObjectDataSource控件的使用方法ObjectDataSource控件包含的属性等与AccessDataSource控件的类似。但增加了若干用于个性化的属性。若要从业务对象中检索数据,需用检索数据的方法的名称设置SelectMethod属性,该方法通常返回一个DataSet对象。如果方法签名带参数,可以将Parameter对象添加到SelectParameters集合,然后将它们绑定到要传递给由SelectMethod方法指定的方法的值。为使ObjectDataSource能够使用参数,这些参数必须与方法签名中的参数名称和类型相匹配。每次调用Select方法时,ObjectDataSource控件都检索数据。此方法提供对SelectMethod属性所指定的方法的编程访问。当调用绑定到ObjectDataSource的控件的DataBind方法时,这些控件自动调用SelectMethod属性指定的方法。如果设置数据绑定控件的DataSourceID属性,该控件根据需要自动绑定到数据源中的数据。13.3.3使用ObjectDataSource控件关联数据访问层和表示层数据访问层主要封装了对数据的存储、访问和管理。反映到组件类中就体现对数据库执行以下任务的方法:读取数据库中的数据记录,并将结果集返回给调用者。在数据库中修改、删除和新增数据记录。在实现以上方法的过程中,必然涉及SELECT、UPDATE、DELETE和INSERT等SQL语句,所涉及的数据表可能是单个表也可能是一组相关表。13.3.4ObjectDataSource控件应用示例通过一个示例说明使用ObjectDataSource控件设计多层Web应用系统的过程。【例13.2】采用ObjectDataSource控件设计一个网页WebForm13-2,其功能是在GridView控件中显示指定班号的学生记录,并可以选择、更新和删除记录,当删除一个学生记录时需同时删除该生的所有成绩记录。解:其设计过程如下:①在Myaspnet网站的ch13文件夹中添加一个名称为WebForm13-2的空网页。单击“网站”中的“添加新项”菜单命令,选中“类”选项,建立的类文件为StudentDB(放在App_Code文件夹中),对应的代码如下:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.SqlClient;publicclassStudentDB{publicStudentDB(){}//构造函数publicDataSetSelectData(stringbh){stringmystr,mysql;mystr=ConfigurationManager.ConnectionStrings[myconnstring].ToString();using(SqlConnectionmyconn=newSqlConnection()){myconn.ConnectionString=mystr

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功