依睛(IT blog) 我回来了,PHP<-->C/C++ LINUX

笨鸟

统计

积分与排名

友情连接

最新评论

三层结构怎么理解

层结构?详细资料
悬赏分:0 - 解决时间:2006-4-22 19:21
问题补充:在编程中,三层结构怎么理解
最佳答案
关于ASP.NET的三层结构



三层结构解释

所谓三层体系结构,是在客户端与数据库之间加入了一个中间层,也叫组件层。这里所

说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也

不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一

台机器上。 三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中

间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通

讯与中间层建立连接,再经由中间层与数据库进行交换.

理解ASP.NET中的三层结构

我们用三层结构主要是使项目结构更清楚,分工更明确,有利于后期的维护和升级.

三层结构包含:表示层(USL),业务逻辑层(BLL),数据访问层(DAL)

1:数据数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不

是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.


2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻

辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。


3:表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成

:aspx, 如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地

提供服务。


具体的区分方法


1:数据数据访问层:主要看你的数据层里面有没有包含逻辑处理,实际上他的各个函数主要完成

各个对数据文件的操作。而不必管其他操作。


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


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



ASP.NET中的三层结构说明

完善的三层结构的要求是:修改表现层而不用修改逻辑层,修改逻辑层而不用修改数据层

.否则你的应用是不是多层结构,或者说是层结构的划分和组织上是不是有问题就很难说.

不同的应用有不同的理解,这是一个概念的问题.



ASP.NET中的三层结构关系图(针对本教程中的项目而言)





针对本教程中:显示层为94aspnet项目,BLL为逻辑层项目,DB为数据层项目.

三层结构教程目录
1 关于三层结构
2 数据库的需求分析与逻辑设计
3 第一章 显示首页帖子信息(表示层)
4 第二章 显示首页帖子信息(业务逻辑层)
5 第三章 显示首页帖子信息(数据访问层)
6 第四章 显示首页帖子信息(存储过程)
7 第五章 显示主题帖子详细信息(表示层)
8 第六章 显示主题帖子详细信息(数据访问层)
9 第七章 显示主题帖子详细信息(存储过程)
10 第八章 显示回复帖子详细信息以及添加回复记录(表示层,数据访问层)
11 第九章 显示回复帖子详细信息以及添加回复记录(存储过程)
12 第十章 发布主题帖子(表示层)
13 第十一章 发布主题帖子(业务逻辑层)
14 第十二章 发布主题帖子(数据访问层及存储过程)
15 第十三章 会员注册(表示层)
16 第十四章 会员注册(业务逻辑层)
17 第十五章 会员注册(数据访问层)
18 第十六章 会员注册(存储过程)
19 第十七章 会员登陆(表示层)
20 第十八章 会员登陆(数据访问层,存储过程)
21 第十九章 结合会员和游客进行发布帖子和回复帖子.
22 第二十章 公用层的类以及公用方法及属性在表示层的使用.
23 赠送一套解决方案
为何使用N层架构?

因为每一层都可以在仅仅更改很少量的代码后,就能放到物理上不同的服务器上使用,因此结构灵活而且性能更佳。此外,每层做些什么其它层是完全看不到的,因此更改、更新某层,都不再需要重新编译或者更改全部的层了。这是个很强大的功能。例如,如果把数据访问代码与业务逻辑层分离,当数据库服务器更改后,你只需要更改数据访问的代码,因为业务逻辑层是不变的,因此不需要更改或者重新编译业务逻辑层。

一个N层的应用程序通常有三层:表现层、业务层和数据层。下面让我们看看每层都做些什么。

表现层(Presentation Layer)

表现层用于用户接口的展示,以及用业务层的类和对象来“驱动”这些接口。

在ASP.NET中,该层包括aspx页面、用户控制、服务器控制以及某些与安全相关的类和对象。

业务层(Business Tier)

业务层用于访问数据层,从数据层取数据、修改数据以及删除数据,并将结果返回给表现层。

在ASP.NET中,该层包括使用SqlClient或OleDb从SQL Server或Access数据库取数据、更新数据及删除数据,并把取得的数据放到DataReader或DataSet中返回给表现层。返回的数据也许只有一个整型数字,比如一个表的行记录数目,但这也要用数据层的数据进行计算。



BLL和DAL

通常该层被划分成两个子层:业务逻辑层(Business Logic Layer,BLL)和数据访问层(Data Access Layers,DAL)。业务逻辑层在数据访问层之上,也就是说BLL调用DAL的类和对象。DAL访问数据并将其转给BLL。

在ASP.NET中,该层可以用SqlClient或OleDb从SQL Server或Access数据库取数据,把数据通过DataSet 或DataReader的形式给BLL,BLL处理数据给表现层。有的时候,例如直接把DataSet 或DataReader送给表现层的时候,BLL是一个透明层。

数据层(Data Tier)

数据层是数据库或者数据源。在.NET中,通常它是一个SQL Server或Access数据库,但不仅限于此两种形式,它还可能是Oracle,mySQL,甚至是XML。

逻辑层VS(分布式)物理层

人们容易将这两个概念搞混。我们说逻辑层是把层按类的集合来划分,而这些层都在同一台个服务器上。(分布式)物理层是指类的集合在不同的服务器上,用附加的代码来处理层间的通信,比如remoting和web服务。

决定如何划分你的层(是物理的还是不是物理的)是非常重要的。在划分时应考虑下面因素:

1、注意如果划分成物理层,你的应用程序的速度会因为不同服务器在网络中通信的延迟而减慢。所以,如果你决定用物理层,请确保获得性能的提升大于性能的降低。

2、按照n层架构设计你的应用程序。

3、部署以及维护物理分布式的应用程序的成本是很高的。你首先需要不止一台服务器,你还需要网络硬件来连接这些服务器。在这种情况下,部署应用变得更加复杂!因此这样做之前请确定这样做是否值得。

另外还要注意,你的应用程序的每层都做何使用。你也许因为运行的多个服务都需要某一层而把该层放到别台服务器上。例如,你也许会因为给不同的用户定制不同的表现层,而将业务逻辑层放于别处;你也许会因为还有其它的应用访问同一个数据库,而把SQL server服务放到别处。

[冷枫]对“三层结构”的深入理解

开发者在线 Builder.com.cn 更新时间:2007-09-22作者:冷枫 来源:CSDN

本文关键词: 冷枫结构web应用程序

 

“三层结构”是什么?

  “三层结构”一词中的“三层”是指:“表现层”、“中间业务层”、“数据访问层”。其中:

n            表 现 层:位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。

n            中间业务层:负责处理用户输入的信息,或者是将这些信息发送给数据访问层进行保存,或者是调用数据访问层中的函数再次读出这些数据。中间业务层也可以包括一些对“商业逻辑”描述代码在里面。

n            数据访问层:仅实现对数据的保存和读取操作。数据访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。

  

 

  对依赖方向的研究将是本文的重点,数值返回方向基本上是没有变化的。


在一个

  如果只以分层的设计角度看,Duwamish7要比PetShop3.0复杂一些!而如果较为全面的比较二者,PetShop3.0则显得比较复杂。但我们先不讨论这些,对PetShop3.0Duwamish7的研究,并不是本文的重点。现在的问题就是:既然“三层结构”已经被分派到各自的项目中,那么剩下来的项目是做什么的呢?例如PetShop3.0中的“Model”、“IDAL”、“DALFactory”这三个项目,再例如Duwamish7中的“Common”项目,还有就是在Bincess.CN彬月论坛中的“Classes”、“DbTask”、这两个项目。它们究竟是做什么用的呢?

 

对“三层结构”的深入理解——从一家小餐馆说起

  一个“三层结构”的Web应用程序,就好象是一家小餐馆。

n            表 现 层,所有的.aspx页面就好像是这家餐馆的菜谱。

n            中间业务层,就像是餐馆的服务生。

n            数据访问层,就像是餐馆的大厨师傅。

n            而我们这些网站浏览者,就是去餐馆吃饭的吃客了……

 

 

我们去一家餐馆吃饭,首先得看他们的菜谱,然后唤来服务生,告诉他我们想要吃的菜肴。服务生记下来以后,便会马上去通知大厨师傅要烹制这些菜。大厨师傅收到通知后,马上起火烧菜。过了不久,服务生便把一道一道香喷喷的、热气腾腾的美味端到我们的桌位上——

而我们访问一个基于asp.net技术的网站的时候,首先打开的是一个aspx页面。这个aspx页面的后台程序会去调用中间业务层的相应函数来获取结果。中间业务层又会去调用数据访问层的相应函数来获取结果。 

为什么需要“三层结构”?——初探,就从数据库的升迁开始

一个站点中,访问数据库的程序代码散落在各个页面中,就像夜空中的星星一样繁多。这样一动百动的维护,难度可想而知。最难以忍受的是,对这种维护工作的投入,是没有任何价值的……

有一个比较好的解决办法,那就是将访问数据库的代码全部都放在一个程序文件里。这样,数据库平台一旦发生变化,那么只需要集中修改这一个文件就可以了。我想有点开发经验的人,都会想到这一步的。这种“以不变应万变”的做法其实是简单的“门面模式”的应用。如果把一个网站比喻成一家大饭店,那么“门面模式”中的“门面”,就像是饭店的服务生,而一个网站的浏览者,就像是一个来宾。来宾只需要发送命令给服务生,然后服务生就会按照命令办事。至于服务生经历了多少辛苦才把事情办成?那个并不是来宾感兴趣的事情,来宾们只要求服务生尽快把自己交待事情办完。我们就把ListLWord.aspx.cs程序就看成是一个来宾发出的命令,而把新加入的LWordTask.cs程序看成是一个饭店服务生,那么来宾发出的命令就是:

“给我读出留言板数据库中的数据,填充到DataSet数据集中并显示出来!”

而服务生接到命令后,就会依照执行。而PostLWord.aspx.cs程序,让服务生做的是:

“把我的留言内容写入到数据库中!”

而服务生接到命令后,就会依照执行。这就是TraceLWord2!可以在CodePackage/TraceLWord2目录中找到——

 

posted on 2009-02-04 10:45 向左向右走 阅读(448) 评论(0)  编辑 收藏 引用 所属分类: 学习资料库

只有注册用户登录后才能发表评论。