ASP.NET程序设计案例教程 教学课件 ppt 作者 李锡辉 lf201112 第9章

上传人:E**** 文档编号:89351986 上传时间:2019-05-23 格式:PPT 页数:73 大小:338.50KB
返回 下载 相关 举报
ASP.NET程序设计案例教程 教学课件 ppt 作者 李锡辉 lf201112 第9章_第1页
第1页 / 共73页
ASP.NET程序设计案例教程 教学课件 ppt 作者 李锡辉 lf201112 第9章_第2页
第2页 / 共73页
ASP.NET程序设计案例教程 教学课件 ppt 作者 李锡辉 lf201112 第9章_第3页
第3页 / 共73页
ASP.NET程序设计案例教程 教学课件 ppt 作者 李锡辉 lf201112 第9章_第4页
第4页 / 共73页
ASP.NET程序设计案例教程 教学课件 ppt 作者 李锡辉 lf201112 第9章_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《ASP.NET程序设计案例教程 教学课件 ppt 作者 李锡辉 lf201112 第9章》由会员分享,可在线阅读,更多相关《ASP.NET程序设计案例教程 教学课件 ppt 作者 李锡辉 lf201112 第9章(73页珍藏版)》请在金锄头文库上搜索。

1、,第9章 应用程序架构,9.1 应用程序架构 9.2 校园在线超市系统多层架构实现,【本章提要】 本章介绍了企业级应用多层设计的模式,阐述了应用分层的好处。并以校园在线超市用户注册模块为例,详细介绍了系统分层架构的实现过程。,【学习目标】 理解从两层架构发展成多层架构。 掌握将多层体系架构的理念融入到Web应用项目的设计和实施方法。,9.1.1 将应用分层的好处 在大型公司里往往运行着大规模的软件系统,开发人员和分析师们专注于不同的应用层级。这确实是必须的,因为不可能让开发人员都理解某个层级所有的运行细节,若那样,则系统实在是太庞大了。,9.1 应用程序架构,想象一下某个保险公司里的应用程序必

2、须完成的所有功能。从最简化的流程来说,保险公司要能接收新的保险单,评估与保险单相关的风险,向投保者开出账单,打印保险单然后将它邮寄出去,处理保险单的索赔,更新保险单,如果过期(或者没有支付费用)则取消保险单,等等。这一巨大的流程显然不仅仅是一个桌面应用程序所能处理的。 无论用户是不是想这么做,Web应用还是分层的好。如果用户是用SQL Server数据库存储数据的,那么数据库本身就已经是一个从Web服务器上分离出来的层了(即使物理上它们是在同一台计算机里)。,作为一个面向对象的平台,ASP.NET使得这种分层操作更加容易了。应用程序分层使得整个开发更加容易,因为分层将某些特定目的操作封装成一个

3、个独立的模块,它们可以单独维护和修改,同时也分散了维护的工作量。 例如,一个简单的在线零售程序采用了分层的思想,如图9-1所示。 从图中可以看出物理硬件分层与应用程序分层的结合。实际上有三个分层运行于一个Web服务器上,第一层是Web站点的用户界面层(User Interface),它由业务规则层支持,,业务规则层(Business Rules Layer)决定什么样的数据将被提供给用户界面层,业务规则层与数据访问层交互,而数据访问层则通过一个事务通道程序来获取所需要的数据,其他的客户服务和仓库系统也通过事务通道程序来获得所需的数据。,图9-1 在线零售应用程序的分层,每一层都仅仅关注于自身的

4、功能实现,如业务规则层不需要知道任何关于数据存储方面的信息,它只需要了解由数据访问层提供的接口即可。事实上,业务规则层完全不必关心使用什么样的数据库,或者是否存在一个数据库。它只需要了解有一个数据访问层能用于交互,以及它可以通过一个公共的接口来交互数据即可。 尽管整个系统的完善需要集成测试,但是如果各层之间一致认同的接口没有发生改变,则我们可以在不干扰其他层的情况下改变任何一层的内部结构。,9.1.2 n级架构 任何关于应用程序架构的讨论中,如果没有提到经典的n级架构,那么就是不完整的。“n”代表任何数字,适用于描述我们所创建的应用程序。层(layer)或级(tier)的数目,由应用程序块的需

5、求和结构来决定。 一般而言,甚至最基本的Web应用程序都能够被分离成三层:用户界面层(UI)、业务规则层(Business Rules Layer)以及数据层(Data Layer)。用户界面层就是用户能够见到的HTML和Web控件,业务规则层则承担着应用程序最重要的角色,而数据层则是数据库或者其他数据访问代码,这取决于应用程序的结构。,如果需要,可以将应用程序分得更细:用户可以拥有用户界面(.aspx页面)、作为用户界面“粘合剂”而被页面继承的类或局部类、业务规则层(业务规则类)、数据访问层(数据访问类)以及数据层本身(数据库)。 假如由于某种原因,决定将SQL Server数据库替换为Or

6、acle数据库,则如果没有将应用程序分层,而且把数据访问代码放在.aspx页面里,那么用户将不得不冒着把事情搞砸的风险,检查所有页面。这显然不是一种有效的代码管理方式。实际上,每个页面间操作数据的方式都不同。,如果把所有的数据访问代码都放在单个层里,如一个拥有操作数据方法的类,这样就可以在不破坏业务规则或者用户界面的情况下对代码进行修改。 另一种很常见的情况是,假设在电子商务程序中,业务规则要求改变税款的计算方式,数据库没有变化,站点本身也不需要变化,仅仅是逻辑改变了,那就意味着只需要改变业务规则层中的类即可。再者,如果逻辑将创建在页面中或者是由某些数据库存储过程的计算所组成的,那么这项修改操

7、作将变得十分困难。,在一个极端的例子里,税率可能经常改变,那么就不能将税率硬编码到代码中。一般的解决方式是将税率存储在数据库中,并创建用户易于操作的相关工具。,9.2.1 系统架构设计 微软 .NET平台可以方便快速地开发和部署多层架构应用程序。在校园在线超市系统中,其架构在逻辑上划分成数据实体层(DML)、数据访问层(DAL)、业务逻辑层(BLL)和应用层(UI)四层,如图9-2所示。,9.2 校园在线超市系统多层架构实现,图9-2 系统分层架构设计,从图中看出,这种分层结构易于理解,同时也使应用程序的维护和修改变得更加容易。假定我们要为Microsoft Access数据库创建一个新的数据

8、访问层,则只需要改变数据访问层代码即可。通过用户界面进行的输入和输出数据的过程,实际上是在创建业务逻辑层的各种对象。例如,在应用程序中添加一个新的商品时,只需要创建一个商品对象,而不需要了解任何关于数据库中的具体细节。下面以“用户注册模块”为例,说明校园在线超市系统的多层实现过程。为了区分校园在线超市两层实现的定义,这里将解决方案命名为“NetShop”,在数据库设计和命名上也做一些改进。,9.2.2 数据实体层实现 数据实体层(DML,Data Model Layer)主要功能是实现关系数据库实体和实体关系表到应用程序对象的映射。数据库中有名为“Users”的实体表,用来存储注册用户的相关信

9、息。打开VS 2005,创建一个新网站,新建名为“Model”的文件夹,命名空间为“NetShop.Model”,在该文件夹下添加类库文件User.cs,创建用户类。相应代码编写如下: using System; namespace NetShop.Model ,/ /实体类Users(属性说明自动提取数据库字段的描述信息) / Serializable public class Users public Users() #region Model,private int _s_id; /用户ID private string _s_name; /用户名称 private string _s_

10、password; /用户密码 private string _s_qq; /用户QQ private string _s_email; /Email private string _s_phone; /联系电话,private string _s_address; /通信地址 private string _s_sex;/性别 private string _s_idcard; /身份证号 private DateTime? _s_date; /出生日期 private string _s_answer; /密码答案 private string _s_question; /密码问题 pri

11、vate int _s_type; /用户类型 private string _s_photo; /用户图片 private int? _s_adminid;,/ /用户ID / public int s_id set _s_id=value; getreturn _s_id; ,/ /用户名称 / public string s_name set _s_name=value; getreturn _s_name; / /用户密码 / ,public string s_password set _s_password=value; getreturn _s_password; / /用户QQ

12、/ public string s_qq ,set _s_qq=value; getreturn _s_qq; / / Email / public string s_email set _s_email=value; getreturn _s_email; ,/ /联系电话 / public string s_phone set _s_phone=value; getreturn _s_phone; ,/ /通信地址 / public string s_address set _s_address=value; getreturn _s_address; / /性别,/ public str

13、ing s_sex set _s_sex=value; getreturn _s_sex; / /身份证号 / public string s_idcard ,set _s_idcard=value; getreturn _s_idcard; / /出生日期 / ,public DateTime s_date /这里的?表示该属性可以为空 set _s_date=value; getreturn _s_date; / /密码答案 / ,public string s_answer set _s_answer=value; getreturn _s_answer; / /密码问题 / publi

14、c string s_question ,set _s_question=value; getreturn _s_question; / /用户类型 / public int? s_type set _s_type=value; getreturn _s_type; ,/ /用户图片 / public string s_photo set _s_photo=value; getreturn _s_photo; ,/ / / public int? s_adminid set _s_adminid=value; getreturn _s_adminid; #endregion Model ,9.2.3 数据访问层实现 当用户注册时,会向Users表插入一条记录。在本系统中,数据访问层(IDAL,Data Access Layer)的实现分成以下三个步骤: 定义对象接口类。 实现数据访问接口类。 定义数据工厂类创建对象接口。,1定义对象接口类 在解决方案中创建文件夹“IDAL”,并定义此文件夹下命名空间为“NetShop.IDAL”、名为IUsers的接口。这样做是为了让数据访问层易于替换并支持其他数据库,使用接口来强制自己实现整个数据访问类的结构。代码如下: using System; using System.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号