您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 第14章三层结构开发模式
1第14章三层结构开发模式14.1三层结构概述14.1.1两层结构及其局限性前面我们讲述的Web应用程序都是基于两层结构的,它们有如下特点:数据库访问和用户类型判断逻辑放在一起实现。用户界面层直接调用数据访问实现。整个系统功能放在同一项目中实现。传统的两层结构的特点是用户界面层直接与数据库进行交互,还要进行业务规则、合法性校验等工作。两层结构软件模型如图18-2所示。这种结构存在着很多局限性,比如:一旦用户的需求发生变化,应用程序都需要进行大量修改,甚至需要重新开发,给系统的维护和升级带来了极大的不便;用户界面层直接访问数据库,会带来很多安全隐患。为了克服两层结构的局限性提出了三层结构。14.1.2什么是三层结构所谓三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。通用三层结构软件模型如图18-2所示。中间层通常包括业务逻辑层(BusinessLogicLayer,简称BLL)、数据访问层(DatabaseAccessLayer,简称DAL)和数据对象模型层(DatabaseObjectModelLayer,简称DOM)。此时的三层结构软件模型如图18-2所示。2用户界面(UserInterface,简称UI),也称表示层,位于最上层,用于显示和接收用户提交的数据,为用户提供交互式的界面。表示层一般为Windows窗体应用程序或Web应用程序。业务逻辑层是表示层和数据访问层之间沟通的桥梁,主要负责数据的传递和处理。数据访问层主要实现对数据的读取、保存和更新等操作。数据对象模型层即业务实体层。主要用于表示数据存储的持久对象。在实际应用程序中的实体类是跟数据库中的表相对应的,也就是说一个表会有一个对应的实体类。当然有些三层结构并不包含单独的数据对象模型层,而将其功能分解到业务逻辑层和数据访问层之中。在三层结构中,表示层直接依赖于业务逻辑层;业务逻辑层直接依赖于数据访问层;数据访问层直接依赖于数据对象模型层。14.1.3三层结构的优点三层结构主要体现出对程序分而治之的思想:数据访问层只负责提供原原始数据,并不需要了解业务逻辑;业务逻辑层调用数据访问层提供的方法自定义一些业务逻辑,对数据进行加工,本身不需要了解数据访问层的实现;表示层直接调用业务逻辑提供的方法把数据呈现给用户。三层结构的优点在于不必为了业务逻辑上的微小变化而迁至整个程序的修改,只需要修改商业逻辑层中的一个函数或一个过程;增强了代码的可重用性;便于不同层次的开发人员之间的合作,只要遵循一定的接口标准就可以进行并行开发了,最终只要将各个部分拼接到一起构成最终的应用程序。三层结构的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互,这样会大大提高系统的安全性。三层结构的应用程序更能够适应企业级应用日益增长的复杂度和灵活性的要求,并且通过软件分层的高内聚、低耦合的原则,实现扩展、维护和重用的要求,可以大大提高开发效率。14.2用ASP.NET搭建三层结构框架ASP.NET可以使用.NET平台快速方便的搭建三层结构。ASP.NET革命性的变化是在网页中也使用基于事件的处理,可以指定处理的后台代码文件,可以使用C#、VB作为后台代码语言。.NET中可以方便的实现组件的装配,后台代码通过命名控件可以方便的使用自己定义的组件。表示层放在Web窗体中,业务逻辑层、数据访问层和数据对象模型层用类库来实现,这样就很方便的实现了三层结构。1.新建解决方案打开VS2008,新建一个空白解决方案,将其命名为ThreeLayers。2.搭建表示层(网站)3(1)在解决方案资源管理器中,在解决方案名称上单击鼠标右键,在弹出的快捷菜单中选择添加→新建网站命令,新建一个网站,其存放位置为解决方案文件夹下的MyWeb子文件夹。(2)在该网站下建一个数据库(简单起见可建Access数据库),以备存取数据。3.搭建业务逻辑层(类库)在解决方案资源管理器中,新建一个类库项目。填写项目的名称为BusinessLogicLayer,该项目用于实现业务逻辑。4.搭建数据访问层(类库)在解决方案资源管理器中,新建一个类库项目。填写项目的名称为DataAccessLayer,该项目用于实现数据访问层。5.搭建数据对象模型层(类库)在解决方案资源管理器中,新建一个类库项目。填写项目的名称为Models,该项目用于实现数据实体。至此,已搭建了三层结构(添加了4个项目)。5.添加各层之间的依赖(引用)此时,虽然三层结构的基本框架已经搭建成功,但是各层之间是独立的。只有添加依赖关系,才能让它们相互协作。(1)添加表示层对业务逻辑层、数据访问层和数据对象模型层的依赖。(2)添加业务逻辑层对数据访问层和数据对象模型层的依赖。(3)添加业数据访问层对数据对象模型层的依赖。至此,三层结构及各层之间的依赖关系创建完毕。6.将表示层设置为启动项目通过上述步骤,就已经成功部署了ASP.NET的三层架构。表示层MyWeb网站放置用于显示的Web页面;事务逻辑层BusinessLogicLayer项目,我们把所有的业务逻辑代码在该层实现;数据访问层DataAccessLayer项目主要处理数据库的操作,供事务逻辑层调用;数据对象模型层Models项目实现数据实体类,供其它各层调用。只要在各个层中实现具体的类就可以成功实施三层结构的应用程序了。14.3应用举例14.3.1系统分析本例的功能非常简单,只是实现用户登录与注册的功能,用户信息存放在数据库中,旨在体现如何在ASP.NET实现三层结构。表示层MyWeb网站放置用于显示的Web页面;事务逻辑层BusinessLogicLayer项目,我们把所有的业务逻辑代码在该层实现;数据访问层DataAccessLayer项目主要处理数据库的操作,供事务逻辑层调用;数据对象模型层Models项目实现数据实体类,供其它各层调用。各层次之间的调用(引用)关系如表所示。层项目名称用途引用关系实例文件4界面展示MyWeb(网站)Web页面和控件BusinessLogicLayerDataAccessLayerModelsDefault.aspxWelcome.aspxRegister.aspx业务逻辑BusinessLogicLayer负责登录,注册用户,获取用户列表等业务操作DataAccessLayerModelsbllUser.csUserRole.cs数据访问DataAccessLayer调用DataProvider相关方法修改或获取数据。ModelsDataProvider.csdalUser.cs业务实体Models定义对象实体类无TUser.cs14.3.2创建框架1.建立数据库打开Access创建名为userinfo.mdb的数据库,并为其创建一个名为t_User的表,其结构如图所示。2.新建解决方案打开VS2008,依次选择文件→新建→项目命令,打开新建项目对话框中,然后选择项目类型为VisualStudio解决方案,选择模板为空白解决方案。然后填写解决方案的名称为ThreeLayers,并指定保存位置,如图18-4所示。5单击“确定”按钮,创建解决方案。3.搭建表示层(1)在解决方案资源管理器中,在解决方案名称上单击鼠标右键,在弹出的快捷菜单中选择添加→新建网站命令,如图18-8所示。(2)在打开的添加新网站对话框中,选择ASP.NET网站,选择位置为文件系统,并设置网站的路径,如图18-9所示。6(3)设计Default.aspx如图所示。(4)添加一Web窗体,将其命名为Welcome.aspx,其设计视图如图所示。(5)添加一Web窗体,将其命名为Register.aspx,其设计视图如图所示。7(6)将建好的userinfo.mdb拷贝到站点的App_Data文件夹下。(7)添加Global.asax在其Application_Start()添加如下代码。voidApplication_Start(objectsender,EventArgse){//在应用程序启动时运行的代码//应用程序运行时设置数据库路径。stringdbpath=this.Server.MapPath(~/)+@\App_Data\userinfo.mdb;DataAccessLayer.DataProvider.Instance.DBPath=dbpath;}4.搭建业务逻辑层(类库)在解决方案资源管理器中,在解决方案名称上单击鼠标右键,在弹出的快捷菜单中选择添加→新建项目命令,打开新建项目对话框中,然后选择项目类型为VisualC#,选择模板为类库。填写项目的名称为BusinessLogicLayer,该项目用于实现业务逻辑。此时项目的保存位置已经默认输入了,是刚才创建空白解决方案时产生的路径,如图18-6所示。85.搭建数据访问层(类库)在解决方案资源管理器中,在解决方案名称上单击鼠标右键,在弹出的快捷菜单中选择添加→新建项目命令,打开新建项目对话框中,然后选择项目类型为VisualC#,选择模板为类库。填写项目的名称为DataAccessLayer,该项目用于实现数据访问层。此时项目的保存位置已经默认输入了,是刚才创建空白解决方案时产生的路径。6.搭建数据对象模型层(类库)在解决方案资源管理器中,在解决方案名称上单击鼠标右键,在弹出的快捷菜单中选择添加→新建项目命令,打开新建项目对话框中,然后选择项目类型为VisualC#,选择模板为类库。填写项目的名称为Models,该项目用于实现数据访问层。此时项目的保存位置已经默认输入了,是刚才创建空白解决方案时产生的路径,如图18-6所示。至此,已搭建了三层结构(添加了4个项目),此时的解决方案如图所示。97.添加各层之间的引用(依赖)此时,虽然三层结构的基本框架已经搭建成功,但是各层之间是独立的。只有添加依赖关系,才能让它们相互协作。(1)添加表示层对业务逻辑层、数据访问层和数据对象模型层的依赖。在解决方案资源管理器中,在表示层上单击鼠标右键,在弹出的快捷菜单中选择添加引用命令,打开添加引用对话框,然后选择项目选项卡,选中项目名称为BusinessLogicLayer的项目,单击确定按钮,如图18-13所示。10同样添加对DataAccessLayer和Models的引用。(2)添加业务逻辑层对数据访问层和数据对象模型层的依赖。在解决方案资源管理器中,在业务逻辑层上单击鼠标右键,在弹出的快捷菜单中选择添加引用命令,打开添加引用对话框,然后选择项目选项卡,选中项目名称为DataAccessLayer的项目,单击确定按钮。同样添加对Models的引用。(3)添加数据访问层对数据对象模型层的依赖。至此,三层结构及各层之间的依赖关系创建完毕。现在你的ThreeLayers解决方案资源管理器应该如图所示:118.将表示层设置为启动项目运行程序前,还需设置启动项目。在解决方案资源管理器中的表示层上单击鼠标右键,在弹出的快捷菜单中选择设为启动项目命令,将表示层设置为启动项目。将表示层设置为启动项目后,表示层(站点)自动创建了Bin文件夹,该文件夹下生成了:BusinessLogicLayer.dll、BusinessLogicLayer.pdb、DataAccessLayer.dll、DataAccessLayer.pdb、Models.dll和Models.pdb等6个文件,如图所示。通过上述步骤,就已经成功部署了ASP.NET的三层架构。在MyWeb这一层我们放置用于显示的Web页面,在Business层,我们把所有的业务逻辑代码在该层实现。DataAccess层主要处理数据库的操作,供Business层调用。只要在各个层中实现具体
本文标题:第14章三层结构开发模式
链接地址:https://www.777doc.com/doc-2243259 .html