《Net的三层架构.doc》由会员分享,可在线阅读,更多相关《Net的三层架构.doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 .Net的三层架构摘要:本文主要介绍了.Net的三层架构,对三层体系结构从概念、各层作用、区分;并对中间业务层作了具体分析和举例。同时对ASP.NET中的三层结构和如何建立一个三层体系结构解决方案作了说明,最后介绍了三层架构的优缺点。关键词:三层架构 .Net ASP.NET 优缺点分层次体系结构是按层次组织软件的一种软件体系结构,其中每一层建立在低一层的软件层上。通常的ASP.NET三层架构就是将整个业务应用划分为:表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。很好地实现了高耦合低内聚的思想。三层架构使得用户操作部分、逻辑操作部分和数据访问部分分开,每一层由相应的人员来完成,
2、各层之间互不影响,使得应用系统的开发、升级、维护得到了大大简化。在种种优越性下,三层架构已经成为进行商业系统开发的首要选择。1. 三层体系结构1.1 概念.Net的三层体系结构包括:用户界面表示层(USL)、业务逻辑层(BLL)和数据访问层(DAL);界面层提供给用户一个视觉上的界面,通过界面层,用户输入数据、获取数据。界面层同时也提供了一定的安全性,确保用户不用看到不必要的机密信息。逻辑层是界面层和数据层的桥梁,它响应界面层的用户请求,执行任务并从数据层抓取数据,并将必要的数据传送给界面层。数据层定义、维护数据的完整性、安全性,它响应逻辑层的请求,访问数据。这一层通常由大型的数据库服务器实现
3、,如Oracle 、Sybase、MS SQl Server等。所谓三层体系结构,是在客户端与数据库之间加入了一个中间层,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。 三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交换。开发人员可以将应用的商业逻辑放在中间层应用服务器上,把应用的业务逻辑与用户界面分开。在保证客户端功
4、能的前提下,为用户提供一个简洁的界面。这意味着如果需要修改应用程序代码,只需要对中间层应用服务器进行修改,而不用修改成千上万的客户端应用程序。从而使开发人员可以专注于应用系统核心业务逻辑的分析、设计和开发,简化了应用系统的开发、更新和升级工作。1.2三层体系各层的作用(1)数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务 (2)业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。 (3)用
5、户界面表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx, 如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。1.3各层具体的区分方法(1)数据访问层:主要看你的数据层里面有没有包含逻辑处理,实际上他的各个函数主要完成各个对数据文件的操作。而不必管其他操作。(2)业务逻辑层:主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。(3)表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。1.4应用“中间业务层”的原因以及举例: 我们假设有一段登录代码,则可以这样处理Web程序,外观层负责接收前台页面
6、的数据,然后传给中间层,中间层对数据进行处理,比如格式化,防SQL注入等等一些,这样的数据再传给数据访问层然后与数据库进行操作,比如与数据库的用户名和密码匹配等等一些代码。“中间业务层”的用途有很多,例如:验证用户输入数据、缓存从数据库中读取的数据等等但是,“中间业务层”的实际目的是将“数据访问层”的最基础的存储逻辑组合起来,形成一种业务规则。例如:“在一个购物网站中有这样的一个规则:在该网站第一次购物的用户,系统为其自动注册”。这样的业务逻辑放在中间层最合适:在“数据访问层”中,最好不要出现任何“业务逻辑”!也就是说,要保证“数据访问层”的中的函数功能的原子性!即最小性和不可再分。“数据访问
7、层”只管负责存储或读取数据就可以了。2 ASP.NET中的三层结构2.1 ASP.NET三层架构的注意事项(1)ASP.NET三层架构并不是只适用于用ASP.NET,在用其他语言写程序时,这种思想也可以得到很好的应用。这是一种普遍流行的系统架构理念,是团队快速进行系统开发需要的产物,原理来自于软件体系结构中的分层风格。(2)三层结构的风格并不是把系统分成表示层,业务逻辑层,数据访问层就可以了。严格意义上的三层架构要遵循一些额外的约定。首先,表示层只进行界面上的处理,不提供任何业务处理功能。其次,设计时应该从业务逻辑层出发,其应该以面向对象的方式定义并实现所有系统接口。再者,在完成C/S模式的系
8、统时,不管使用COM+(Enterprise Service), 还是Remoting, 还是WebService之类的远程对象技术, 不管部署的时候是不是真的分别部署到不同的服务器上, 最起码在设计的时候要做这样的考虑, 更远的, 还得考虑多台服务器通过负载均衡作集群。2.2 ASP.NET中的三层结构说明完善的三层结构的要求是:修改表现层而不用修改逻辑层,修改逻辑层而不用修改数据层。否则你的应用是不是多层结构,或者说是层结构的划分和组织上是不是有问题就很难说.不同的应用有不同的理解,这只是一个概念的问题那么,如何理解ASP.NET中的三层结构呢?我们用三层结构主要是使项目结构更清楚,分工更
9、明确,有利于后期的维护和升级。它未必会提升性能,因为当子程序模块未执行结束时,主程序模块只能处于等待状态。这说明将应用程序划分层次,会带来其执行速度上的一些损失。但从团队开发效率角度上来讲却可以感受到大不相同的效果。 需要说明一下,三层结构不是.NET的专利,也不是专门用在数据库上的技术。它是一种更加普适的架构设计理念。此种架构要在数据库设计上注意表之间的关系,尽力满足主与子的关系。在功能上对用户要有一定的限制,对子表的删除操作上一定要慎重,以免造成主表与子表的数据在逻辑上出现主表的外键在子表中没有相对应的值。对于表的综合查询方法是:先对主表查询,调用主表所对应的DL。再根据主表的记录分别对每
10、一个子表进行查询。将自表的查询结果添加的主表后,形成一个大的查询集合。对于表的操作(增删改):此时只对主表进行操作,调用主表对应的DL中的操作方法。RL层是逻辑判断层,主要是对页面上传入的数据进行逻辑判断。RL层之上就是UI。3如何建立一个三层体系结构解决方案新建一个空白解决方案。然后:“添加”“新建项目”“其他项目”“企业级模版项目”“C#生成块”“数据访问”(数据层,下简称D层) ;“添加”“新建项目”“其他项目”“企业级模版项目”“C#生成块”“业务规则”(业务层,下简称C层);“添加”“新建项目”“其他项目”“企业级模版项目”“C#生成块”“Web用户界面”(界面层,下简称U层);右键
11、点“解决方案”“项目依赖项”,设置U依赖于D、C,C依赖于D。对U添加引用D、C,对C添加引用D。 到此为止,一个三层的架子建立起来了。虽然不反对建2个“空项目”和1个“Asp net Web应用程序项目”也可以作为3层的框架,而且相当多的人认为其实这些“企业级模板项目”其实就是个空项目,这是一个误区。没错,企业级模板项目你从解决方案资源管理器里看它是个什么也没有的,但是你可以用记事本打开项目文件,看见不同了吧?有些东西在背后,你是看不见的,不过系统已经做好了。也就是说,如果你在C层里的某个类里“using System Data SqlClineit”,或者使用一个SqlConnection
12、对象,编译时候不会出错,但是会在“任务列表”里生成一些“策略警告”,警告你在C层里不要放应该放在D层的东西(虽然就程序来说没错,但是可读性可维护性就打了折扣)而这种功能,空项目是无法給你的。在新TraceLWord3中,应用了“企业级模板项目”。把原来的LWordTask.cs,并放置到一个单一的项目里,项目名称为:AccessTask。解决方案中又新建了一个名称为:InterService的项目,该项目中包含一个LWordService.cs程序文件,它便是“中间业务层”程序。为了不重复命名,TraceLWord3的网站被放置到了WebUI项目中。更完整的代码,可以在CodePackage/
13、TraceLWord3目录中找到。4面象对象与实际的结合我们知道建桥需要砖块,应该是先准备好砖再来建桥,不过为了讲解上的顺序性和连贯性,简单性,我们先建桥,建的过程中需要砖块再现做,这样就不会多出来“桥不需要的东西”。注意在实际中,还是应该先准备砖块。U层其实就是桥,C层是砖块,D层是原料(石头、沙子)。这也解释前面为什么U层要引用、依赖D层(而不是U对C,C对D的层次),因为桥除了需要砖头,其实也需要石头沙子。5 “三层结构”的优缺点5.1 优点从开发角度和应用角度来看,三层架构比双层或单层结构都有更大的优势。三层结构适合群体开发,每人可以有不同的分工,协同工作使效率倍增。开发双层或单层应用
14、时,每个开发人员都应对系统有较深的理解,能力要求很高,开发三层应用时,则可以结合多方面的人才,只需少数人对系统全面了解,从一定程度上降低了开发的难度。 三层架构属于瘦客户的模式,用户端只需一个较小的硬盘、较小的内存、较慢的CPU就可以获得不错的性能。相比之下,单层或胖客户对机器的要求太高。 三层架构的另一个优点在于可以更好的支持分布式计算环境。逻辑层的应用程序可以有多个机器上运行,充分利用网络的计算功能。分布式计算的潜力巨大,远比升级CPU有效。 三层架构的最大优点是它的安全性。用户端只能通过逻辑层来访问数据层,减少了入口点,把很多危险的系统功能都屏蔽了。 另外三层架构还可以支持如下功能:Re
15、mote Access(远程访问资料),例如可透过Internet存取远程数据库;High Performance(提升运算效率)解决集中式运算(Centralize)及主从式架构(Client-Server)中,数据库主机的运算负担,降低数据库主机的Connection Load,并可藉由增加App Server处理众多的数据处理要求,这一点跟前面讲到的分布式计算提高运算能力是一个道理;Client端发出Request(工作要求)后,便可离线,交由App Server和Database Server共同把工作完成,减少Client端的等待时间。三层在安全性、稳定性及大量并发控制上要强于两层的
16、,它不会让客户端直接面对数据库,所有减少了由于客户端被破解而给数据库带来损失的风险,并且可以比较妥善的解决多用户并发带来的服务器拥挤,但是在客户端比较少的情况下,它访问数据的速度要慢于两层结构的,开发、维护难度要比两层的大不少,所以对于20客户端以下的应用,应该谨慎使用三层结构开发。5.2 缺点 “三层结构”开发模式的一个非常明显的缺点就是其执行速度不够快。当然这个“执行速度”是相对于非分层的应用程序来说的。TraceLWord1和TraceLWord2没有分层,直接调用的ADO.NET所提供的类来获取数据。但是,TraceLWord6确要经过多次调用才能获取到数据。在子程序模块程序没有返回时
17、,主程序模块只能处于等待状态。所以在执行速度上,留言板的版本越高,排名却越靠后。“三层结构”开发模式,不适用于对执行速度要求过于苛刻的系统,例如:在线订票,在线炒股等等它比较擅长于商业规则容易变化的系统。“三层结构”开发模式,入门难度够高,难于理解和学习。这是对于初学程序设计的人来说的。以这种模式开发出来的软件,代码量通常要稍稍多一些。这往往会令初学者淹没在茫茫的代码之中。望之生畏,对其产生反感,也是可以理解的其实,无论哪一种开发模式或方法,都是有利有弊的。不会存在一种“万用法”可以解决任何问题。所以“三层结构”这个词眼也不会是个例外!是否采用这个模式进行系统开发,要作比较、权衡之后才可以。参考文献1 汪涵波. 三层架构及其优点.2.NET体系结构图OL. 3 浅析J2EE与.NET平台优劣OL.4 另类的ASP.NET快速开发架构体系。5 NET vs J2EE-面对SOA的荒谬与误解OL.6 .net网页开发中的三层架构。7吕高旭.亮剑.NET:ASP.NET商业级数据库网站开发实战,2009.3