第15章 组件化多层网站系统开发_第1页
第15章 组件化多层网站系统开发_第2页
第15章 组件化多层网站系统开发_第3页
第15章 组件化多层网站系统开发_第4页
第15章 组件化多层网站系统开发_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

组件化多层网站系统开发,北京理工大学计算机学院金旭亮,ASP.NET程序设计之,主要内容,组件化开发基础HappyBookShop网站开发实践,2,1组件化开发基础,组件化开发的概念,“组件化开发”,简称为CBD,是“ComponentBasedDevelopment”的首字母缩写形式。是当前主流的软件开发方式。组件的含义:组件是预先构建好的组件是黑盒,只能通过其接口访问组件可以独立地组合为新的软件组件组件接口与组件实现相分离,4,组件化开发的标准,5,组件化软件的开发方法,复用已有的软件组件,再开发部分新的软件组件,将组件组合装配成新系统。,6,.NET平台上的组件技术,程序集,7,多文件程序集,单文件程序集,信息系统的三层架构,8,真实软件系统的分层架构,9,大型网站的业务逻辑层设计,在本示例网站中,业务逻辑层功能由数据存取类承担,这对于功能简单的小网站而言,足够了。在大型的网站中,由于功能众多,其网站架构在“业务逻辑”这一层是最复杂的,往往又再划分为更多的层,而且实现这些层功能的软件组件往往还分布于不止一台计算机上。这种设计称为“N层分布式系统结构”。,10,大型网站采用的多层分布式架构,一般将承载业务逻辑层功能的计算机称为“应用程序服务器”,而将承载Web网站的计算机称为“Web服务器”,最后端则是数据库服务器。,11,2面向对象系统的组件化开发过程,软件开发的基本过程,需求分析系统设计开发与测试系统发布,13,基于软件组件的增量与迭代开发模型(1),使用组件构造系统,14,基于软件组件的增量与迭代开发模型(2),增量开发,15,基于软件组件的增量与迭代开发模型(3),迭代开发,16,3HappyBookShop开发指导,在完成了ASP.NET技术基础知识的学习之后,需要将这些知识应用于实践,才能对知识有深刻的理解,将这些“死”的知识变成“活”的技能,并形成一个有活力的可以不断扩充的“知识框架”。,实战项目:HappyBookShop网站,一个典型的ASP.NET网站,是对现有的许多“网上书店”网站功能的精简版本。其目的是大家提供一个实践的场景,加深对于已掌握知识的理解,培养真实的开发技能。,18,示例网站的开发几乎用到了我们所学的所有技术,19,HappyBookShop,SQLServer2005,ADO.NET,数据绑定,WebService,AJAX,用户控件,成员资格与角色管理,一般处理程序,JavaScript,CSS,母版页,网站需求分析,弄清楚网站要提供给用户哪些功能,对数据进行哪些处理工作。功能用例图数据处理工作建立领域模型,20,网站功能用例图,21,建立网站的领域模型,系统涉及到哪些数据,进行哪些处理工作,22,书,出版社,作者,读者,网站系统设计,解决软件架构与技术选型问题示例网站采用多层架构与ASP.NET+AJAX+SQLServer多层结构是一种成熟的软件系统架构,有许多种变形,它的基本思想是将系统划分一定的层次,下层为上层提供特定的服务,不允许跨层调用。每层的功能目前多采用组件化技术开发完成。,23,示例网站的多层架构,24,示例网站系统架构详解,业务逻辑层/数据存取层的设计,实体类设计方案,根据领域分析的结果,结合实际情况,可以得出实体类的设计方案,27,Book,BookRemark,1,n,出于简化的目的,出版社和作者等其他对象不再创建单独的实体类,数据库表结构,根据实体类设计图,可以很快地得出数据库中对应的表结构:,28,再补充一个表,用于保存在前台首页显示的书信息,有关数据库表和实体类的设计方法,牢记:先进行领域分析,确定系统中要处理哪些数据,并将这些数据抽象为实体类之后,再设计数据库表。一般是一个类对应一个表。如果类之间有关联,则表之间也应该建立关联。在设计和实现实体类时,要注意以下两点:注意数据库字段是有大小和长度限制的各属性应给与一个初始值类名和表名,属性名和字段名要一致除非数据信息内容和关联非常复杂导致实体类包含太多的属性,不要让一个类对应多张数据库表。数据库表结构一旦确定,不到万不得已,不要再进行大的改动,因此,必须对各种情况进行分析后进行精心设计。,29,数据存取类设计隔离原则,示例网站的功能比较简单,主要就是实体类对象的增、删、改和查四种操作,为此,设计若干个数据存取类来完成网站功能,其命名规则为:“实体类”+“Access”。数据存取类进入的信息和返回的信息都是以实体类对象为主。,30,数据存取类在内部调用ADO.NET来访问数据库数据存取类使得上层模块要访问数据时,不再需要与ADO.NET打交道。,Web服务层设计,本示例网站中,将搜索图书的功能使用WebService向外发布,由BookService类实现。,31,BookService只是在内部直接调用业务逻辑层组件完成搜索图书的功能,一般情况下,Web服务层的组件不需要直接调用ADO.NET来访问数据库。,界面层设计的基本原则,本例中的界面层主要指的是ASP.NET页面,以及聚合Web服务的WindowsForm应用程序。对于网站中的页面,要分类存放,不要全部丢在网站的根目录中。充分利用已有的组件以搭积木的方式构造用户界面。通常将多个页面重复出现的部分做成用户控件以便复用。,32,整个示例网站的总体结构如下:,33,示例网站开发中的技术关键点,母版页,前台母版页定制页眉和页脚。后台母版页放置TreeView进行导航:,35,前台后台所用的样式表集中在App_Themes文件夹下的两个主题中。示例网站在母版页中直接引用它们。网页布局的样式表延续了以前系列课程中的设置。另一种方法是在每个单独页面的页面指令中设置其Theme=“主题名称”,会自动加载其中的样式表。,用户权限管理部分的实现,使用“ASP.NET网站配置”设计两个角色:Manager和Reader,并规定好访问规则。,前台两个网页CreateUser.aspx、ModifyPassword.aspx使用现成的登录控件配合成员资格和角色管理机制进行开发。首页的登录面板使用LoginView为不同角色定制模板,使用LoginStatus、LoginName等现成控件快速搭建模板。后台页面:直接使用MemberShip和GridView实现用户管理。,36,用户权限管理功能的配置,默认情况下,ASP.NET成员资格对帐号的要求是比较严格的,比如要求密码必须有7位,其中至少有一位是非数字等。上述配置放在机器的machine.config中。示例网站通过在Web.Config中定制成员资格参数,去掉了这些设置。,37,用户控件设计,示例网站使用用户控件封装可重用界面部分(用户控件套用户控件,前台后台一起用),38,SingleBook.ascx,BookList.ascx,用户控件开发分析:,SingleBook.ascx:用于显示单本书,它接收一个Book对象,然后将其信息显示在控件中。控件使用表格进行定位。,39,BookList.ascx:接收一个List,然后分两列显示图书信息(Book对象)。使用DataList实现,在其模板中嵌套SingleBook.ascx,并附加一个CheckBox,用属性ShowCheckBox来控制其是否显示。方法GetSelectedBookIDs返回用户选择的BookID集合。DataList不直接支持分页,因此需写代码实现分页。,EditBook.ascx,后台录入新书和修改图书用到了同样的一个用户控件EditBook.ascx。当录入新书时,此控件新建一个Book对象,当修改图书时,从外界传入一个Book对象(放在其BookObj属性中),控件负责显示Book对象到页面上。使用一个IsAddNew属性设置此控件所处的状态(是录新书还是改旧书)。此控件不与数据库打交道,而由页面对象负责从其BookObj属性中取出Book对象,然后调用数据存取对象将其保存或更新到数据库中。,40,图书推荐级别显示,图书的“星级”使用一般处理程序DrawStar.ashx用GDI+生成,DrawStar.ashx从QueryString中提取要绘制的星星个数。,41,封面文件的保存,用户上传的图书封面,统一给其取个新名,为避免重名,采用GUID来生成。,42,stringFileExt=Path.GetExtension(FileUpload1.FileName);stringFileName=Guid.NewGuid().ToString()+FileExt;FileUpload1.SaveAs(Server.MapPath(/CoverImageFiles)+/+FileName);bookobj.CoverImageUrl=/CoverImageFiles/+FileName;,客户端桌面应用程序的开发要点,桌面应用程序聚合示例网站发布的图书查询功能。当生成WebService的代理对象后,可以通过设定此对象的url属性来更改编译时指定的WebServiceUrl。PictureBox控件有一个ImageLocation属性可以获取网络上的图片。,43,示例网站的开发流程,安排开发流程的基本原则,先开发中间层,再开发界面层,45,迭代开发:每开发完一个功能,马上进行测试,正常后才进入下一个功能的开发。,基于用例驱动的开发方法:一个功能一个功能地完成开发,先开发重要的功能,再开发次要的功能。,优先开发被别人调用,不调用别人的组件和模块。,中间层开发的工作安排,建数据库表。开发实体类。实现数据存取类,编写简单的测试网页,验证其工作正常。完成中间层的开发任务后,进入表示层开发。,46,表示层开发书的录入与维护,后台添加新书:EditBook.ascxAddBook.aspx后台删除书:DeleteBook.aspx(暂不集成选书功能,直接接收BookID)后台修改书信息:ModifyBook.aspx(暂不集成选书功能,直接接收BookID)至此,系统具备基本的信息维护功能。,47,表示层开发显示和查找图书,在前台显示书详细信息:SingleBook.ascxBookList.ascxBookInfo.aspx显示图书推荐级别:DrawStar.ashx显示图书封面大图:ShowCoverImage.aspx至此系统可以显示一本书的信息(除书评外)完成查找书功能:前台FindBook.aspx完善后台修改书和删除书的功能,允许其选完书后再进行相关操作。,48,表示层开发书评,完善BookInfo.aspx,给其添加书评功能。在后台的ModifyBook.aspx中,添加“删除本书所有书评”功能。至此,完成展示单本图书信息的全部任务。,49,表示层开发网站首页设计,设计网站首页default.aspx,将BookList.ascx拖入,设置图书显示区,添加“图书搜索”区,挂接上已开发好的FindBook.aspx。在后台添加“选择首页显示书”功能:ChooseBook.aspx,其显示的书的BookID放在PublishItem表中。至此,有关图书信息展示与维护的工作全部完成,下面进入辅助功能的开发,50,表示层开发用户管理,使用“ASP.NET网站管理工具”创建Reader和Manager两个角色,并给网站Manager文件夹设定只有Manager可以访问。修改Web.config,设定成员资格和角色管理相关参数。在主页添加用户登录模块,完成两个页面的开发CreateUser.aspxModifyPassword.aspx,允许用户创建账号、注销和修改密码。设计前台登录面板,针对管理员添加到后面管理页面的链接。添加后台用户管理功能:UserManager.aspx。至此,用户管理部分开发完毕。,51,表示层开发改善网站交互性,利用AJAX提供更友好的界面。使用UpdatePanel实现页面的局部刷新。前台页面应用情况如下:BookInfo.aspx:发表书评时局部刷新FindBook.aspx:图书列表部分(分页时局部刷新)后台的以下页面也使用了Update

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论