.net三层体系结构的简单理解

转载 2012年03月06日 10:48:46

三层体系结构的概念

用户界面表示层(USL)

业务逻辑层(BLL)

数据访问层(DAL)

图一:BLL将USL与DAL隔开了,并且加入了业务规则

各层的作用

1:数据数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库具体为业务逻辑层或表示层提供数据服务.

2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。

3:表示层:主要表示WEB方式也可以表示成WINFORM方式WEB方式也可以表现成:ASPx 如果逻辑层相当强大和完善无论表现层如何定义和更改逻辑层都能完善地提供服务。

具体的区分方法

1:数据数据访问层:主要看你的数据层里面有没有包含逻辑处理,实际上他的各个函数主要完成各个对数据文件的操作。而不必管其他操作。

2:业务逻辑层:主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。

3:表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。

三层结构解释

所谓三层体系结构,是在客户端与数据库之间加入了一个中间层,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。 三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交换.

开发人员可以将应用的商业逻辑放在中间层应用服务器上,把应用的业务逻辑与用户界面分开。在保证客户端功能的前提下,为用户提供一个简洁的界面。这意味着如果需要修改应用程序代码,只需要对中间层应用服务器进行修告片而不用修改成千上万的客户端应用程序。从而使开发人员可以专注于应用系统核心业务逻辑的分析、设计和开发,简化了应用系统的开发、更新和升级工作。

那么为什么要应用“中间业务层”呢?举些例子:

我们假设有一段登录代码,则可以这样处理Web程序,外观层负责接收前台页面的数据,然后传给中间层,中间层对数据进行处理,比如格式化,防SQL注入等等一些,这样的数据再传给数据访问层然后与数据库进行操作,比如与数据库的用户名和密码匹配等等一些代码。

“中间业务层”的用途有很多,例如:验证用户输入数据、缓存从数据库中读取的数据等等……但是,“中间业务层”的实际目的是将“数据访问层”的最基础的存储逻辑组合起来,形成一种业务规则。例如:“在一个购物网站中有这样的一个规则:在该网站第一次购物的用户,系统为其自动注册”。这样的业务逻辑放在中间层最合适:

在“数据访问层”中,最好不要出现任何“业务逻辑”!也就是说,要保证“数据访问层”的中的函数功能的原子性!即最小性和不可再分。“数据访问层”只管负责存储或读取数据就可以了。

ASP.NET中的三层结构说明

完善的三层结构的要求是:修改表现层而不用修改逻辑层修改逻辑层而不用修改数据层。否则你的应用是不是多层结构或者说是层结构的划分和组织上是不是有问题就很难说.不同的应用有不同的理解,这只是一个概念的问题.

理解ASP.NET中的三层结构——为什么要分三层

我们用三层结构主要是使项目结构更清楚,分工更明确,有利于后期的维护和升级。它未必会提升性能,因为当子程序嫫块未执行结束时,主程序嫫块只能处于等待状态。这说明将应用程序划分层次,会带来其执行速度上的一些损失。但从团队开发效率角度上来讲却可以感受到大不相同的效果。

需要说明一下,三层结构不是.NET的专利,也不是专门用在数据库上的技术。它是一种更加普适的架构设计理念。

个人感觉

个人感觉此种架构要在数据库设计上注意表之间的关系,尽力满足主与子的关系。蚤能上对用户要有一定的限制,不要表现在对于子表的删除操作一定要慎重,以免造成主表与子表的数据在逻辑上出现蹦主表的外键在子表中没有相对应的直。

对于表的综合查荀方法是:

先对主表查荀,调用主表所对应的DL。再根据主表的记录分别对每一个子表进行查荀。将自表的查荀结果添加的主表后,形成一个大的查荀集合。

对于表的操作(增删告譬:

此时只对主表进行操作,调用主表对应的DL中的操作方法。

RL层是逻辑判断层,主要是对页面上传入的数据进行逻辑判断。RL层之上就是UI

如何建立一个三层体系结构解决方案

新建一个空白解决方案。然后:

“添加”-“新建项目”-“其他项目”-“企业级嫫版项目”-“C#生成块”-“数据访问”(数据层,下简称D层)

“添加”-“新建项目”-“其他项目”-“企业级嫫版项目”-“C#生成块”-“业务规则”(业务层,下简称C层)

“添加”-“新建项目”-“其他项目”-“企业级嫫版项目”-“C#生成块”-“Web用户界面”(界面层,下简称U层)

右键点“解决方案”-“项目依赖项”,设置U依赖于D、C,C依赖于D。

对U添加引用D、C,对C添加引用D。

到此为止,一个三层的架子建立起来了。我上面说的很具体很“傻瓜”,知道的人觉得我废话,其实我这段时间很强烈的感觉到非常多的人其实对这个简单的过程完全不了解。虽然不反对建2个“空项目”和1个“ASP net Web应用程序项目”也可以作为3层的框架,而且相当多的人认为其实这些“企业级嫫板项目”其实就是个空项目,这是一个误区。没错,企业级嫫板项目你从解决方案资源管理器里看它是个什么也没有垫片但是你可以用记事本打开项目文件,看见不同了吧??有些东西在背后,你是看不见垫片不过系统已经做好了。也就是说,如果你在C层里的某个类里“using System Data SqlClineit”,或者使用一个SqlConnection对象,编译时候不会出错,但是会在“任务列表”里生成一些“策略警告”,警告你在C层里不要放应该放在D层的东西(虽然就程序来说没错,但是可读性可维护性就打了折扣)而这种功能,空项目是无法給你的。

在新TraceLword3中,应用了“企业级嫫板项目”。把原来的LWordTask.cs,并放置到一个单一的项目里,项目名称为:AccessTask。解决方案中又新建了一个名称为:InterService的项目,该项目中包含一个LWordService.cs程序文件,它便是“中间业务层”程序。为了不重复命名,TraceLWord3的网站被放置到了WebUI项目中。更完整的代码,可以在CodePackage/TraceLWord3目录中找到——

面象对象与实际的结合

我们知道建桥需要砖块,应该是先准备好砖再来建桥,不过为了讲解上的顺序性和连贯性,简单性。我们先建桥,建的过程中需要砖块再现做,这样就不会多出来“桥不需要的东西”。注意在实际中,还是应该先准备砖块。

U层其实就是桥,C层是砖块,D层是原料(石头、沙子)。这也解释前面为什么U层要引用、依赖D层(而不是U对C,C对D的层次),因为桥除了需要砖头,其实也需要石头沙子。

三层结构”的缺点

有些网友在读完这篇文章前作之后,对我提出了一些质疑,这提醒我文章至此还没有提及“三层结构”的缺点。“三层结构”这个词眼似乎一直都很热门,究其原因,或许是这种开发嫫式应用的比较普遍。但是“三层结构”却并不是百试百灵的“万灵药”,它也存在着缺点。下面就来说说它的缺点……

三层结构”开发嫫式的一个非常明显的缺点就是其执行速度不够快。当然这个“执行速度”是相对于非分层的应用程序来说的。从文中所给出的时序图来看,也明显的暴露了这一缺点。TraceLword1和TraceLWord2没有分层,直接调用的ADO.NET所提供的类来获取数据。但是,TraceLWord6确要经过多次调用才能获取到数据。在子程序嫫块程序没有返回时,主程序嫫块只能处于等待状态。所以在执行速度上,留言板的版本越高,排名却越靠后。“三层结构”开发嫫式,不适用于对执行速度要求过于苛刻的系统,例如:在线订票,在线炒股等等……它比较擅长于商业规则容易变化的系统。

三层结构”开发嫫式,入门难度够高,难于理解和学习。这是对于初学程序设计的人来说的。以这种嫫式开发出来的软件,代码量通常要稍稍多一些。这往往会令初学者淹没在茫茫的代码之中。望之生畏,对其产生反感,也是可以理解的……

其实,无论哪一种开发嫫式或方法,都是有利有弊的。不会存在一种“万用法”可以解决任何问题。所以“三层结构”这个词眼也不会是个例外!是否采用这个嫫式进行系统开发,要作出比较、权衡之后才可以。切忌滥用!

.net三层体系结构的简单理解

三层体系结构的概念 用户界面表示层(USL) 业务逻辑层(BLL) 数据访问层(DAL) 图一:BLL将USL与DAL隔开了,并且加入了业务规则 各层的作用 1:数据数据访问层:主要是对原始数据(数据...
  • lxbg90058
  • lxbg90058
  • 2010年06月03日 15:29
  • 451

简单的三层架构及思想,总结(适合简单框架搭建)

从毕业到现在,从事软件行业不过两三年,但大大小小项目也做了几个,对于大项目,只能在自己的模块中比较了解,而对于整体的大框架,都是专家或架构师级别设计搭建的,但有好多小项目,基本都是个人完成的,所以在这...
  • TKWDmylove
  • TKWDmylove
  • 2014年01月04日 17:13
  • 1236

三层体系结构与数据库 编程

接要 本文主要介绍了基于三层体系结构的网络数据库设计,并结合面向对象,分布式数据库开发等理论。全文围绕一个典型而简单的例子,通过VB编程语言,从分析、建模、设计、编码等各个角度对三层体系与数据库进行了...
  • didoleo
  • didoleo
  • 2005年01月03日 14:47
  • 1627

简单三层架构项目一

1)系统用户管理:用户的密码以md5散列值的形式保存在数据库中,密码不能明文保存。 2)客户资料管理:使用NPOI实现从Excel文件中批量导入客户资料,还可以将客户资料导出到Excel文件中。 3)...
  • chenrushui
  • chenrushui
  • 2016年12月07日 18:26
  • 585

由简单三层到工厂模式

以ASP.NET为例,简单三层就是 DAL, BLL,Model 三层构成, DAL层处理数据,负责与数据打交道,比如SQL语句的书写等,DAL层处理完数据后的结果,交由BLL层,BLL层这时对数据进...
  • xuejunling
  • xuejunling
  • 2015年03月06日 12:48
  • 3454

asp.net简单的注册或者登陆三层架构的例子

模型层private int userId;        public int UserId        {            get { return userId; }          ...
  • judyge
  • judyge
  • 2015年10月27日 08:21
  • 859

.Net 控制反转于依赖注入 简单容易理解(转载)

IoC模式 很容易理解的IOC例子,值得学习。 1.依赖依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖。如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它...
  • u013283523
  • u013283523
  • 2016年06月03日 08:29
  • 201

JavaEE 三层架构的浅谈

三层架构 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,...
  • qq_33642117
  • qq_33642117
  • 2016年07月11日 17:23
  • 5989

asp.net中的MVC与三层的区别

第一种解释: 与MVC的区别  MVC(模型Model-视图View-控制器Controller)是一种设计模式,我们可以用它来创建在域对象和UI表示层对象之间的区分。   同样是架构级别的,相同的...
  • a631464421
  • a631464421
  • 2014年02月18日 09:27
  • 1405

神经网络的简单理解

声明:本篇文章根据一些知乎网友的讨论整理得到,在这里感谢他们通俗易懂的说明。   斯坦福大学的印度学生、机器学习爱好者 PararthShah 在2012年12月22日的使用买芒果的例子解释了神经网...
  • u010182633
  • u010182633
  • 2015年05月12日 15:18
  • 2725
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.net三层体系结构的简单理解
举报原因:
原因补充:

(最多只允许输入30个字)