如题啊,三层架构是指什么?  最近模糊了汗汗。。

解决方案 »

  1.   

    呵呵。我一直以为是DAL,BLL,Model/View
      

  2.   

    model,dal,bll,汗自己个
    俺是来看高手的
      

  3.   

    最简单的   说白了.写3个项目,一个项目调另一个项目. 
    1个项目是表示层(就是直接呈现给用户的,asp.net就是指的网站) 
    2个项目是逻辑层(项目的逻辑处理) 
    3个项目是数据层(数据库想关访问) 项目1调用项目2,项目2调用项目3 举个例. 如对用户等录功能来说. 你把根据用户名,密码查询用户信息的数据库操作放到项目3中(就是数据库层中出来) 
    项目2个调用项目3中所返回的用户信息,对其进行逻辑处理.比如.把返回的数据处理成 
    User类然后反回. 
    项目1(表示层)中   调用项目2(逻辑层)返回的User类   再对页面进行出来. 
    这样的好处是.最明显的是,代码重用,维护简单.移植性强. 如其他地方还要用到用户信息,可以直接调用数据层中的方法. 又如。系统以前是用的sqlServer,现在要改成Oracle那么.数据层的代码就有可能需要修改. 
    但对于逻辑层,表示层来说.不需要改动。 
    等等... 
      

  4.   

    数据处理层DAL
    业务逻辑层BLL
    页面设计层
      

  5.   

    既然发在Asp.net区,俺们就以页面来说吧。。页面设计层能详细说说伐?
      

  6.   


    阁下的表示层指的是.aspx文件还是.aspx.cs文件?
      

  7.   

    "阁下的表示层指的是.aspx文件还是.aspx.cs文件? "
    我理解:表示层一般在.aspx文件进行实现;逻辑层和数据层可以在.aspx文件或.aspx.cs文件加以实现,是可以啊
      

  8.   

    数据访问层,就是一系列和数据库操作相关的内容
    业务逻辑层,一些后台代码,脚本等
    表示层,UI,user interface,界面,table,div+css等
      

  9.   

    表现层
    业务逻辑层
    数据层最简单的   说白了.写3个项目,一个项目调另一个项目. 
    =========================
    这种理解是错误的,不是一个项目或一个(dll)就是一层
      

  10.   

    三层架构 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)  1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
      2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
      3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增、删、改、查。
      

  11.   

    数据处理层DAL
    业务逻辑层BLL
    页面设计层UI个别的有MODEL
    调用ui-->BLL-->DAL
      

  12.   

    三层架构一般指的是界面层,业务层,数据层。界面层就是系统的操作界面,和用户直接交互的地方。业务层又称为逻辑层,英文名称是Business Logic Layer,简称BLL,是执行业务逻辑的地方,也就是业务规则都在这一层体现。数据层也称为数据访问层,英文名称是Database Access Layer,简称DAL,这里是直接和数据库进行交互的地方,也是整个系统里唯一允许访问数据库的地方。除此之外,还有一个业务实体层,这个层比较特殊,就是定义实体类的地方,有些人把这个层归属业务层,有些人把这个独立出来,变成一个公共层。各个层次之间的访问关系:界面层只能单向访问业务逻辑层,业务逻辑层只能单向访问数据层,这三层都可以访问公共模块(公共层)。这样做有很多好处,比如界面层就不知道数据层的存在,我们在界面层或者数据层做的更改都不会对双方造成大的影响。这一点很重要,因为这样我们开发的数据层就可以同时被多个系统使用,比如同时被BS和CS的系统使用;另外,我们也可以同时支持多个数据库,比如我们可以让系统同时支持oracle,access,sql server,而界面层不用更改。当然,这种单向调用就牵涉到我们上面所说的业务实体层的归属问题,如果我们把它放到业务罗基层,就会破坏这种关系,所以最好把它独立出去,做成公共层。优点和缺点:三层架构的优点上面说了很多,出了那些以外还有易扩展,层次清晰等特点,但缺点也很明显,就是如果一个系统非常简单,那么就不适合使用三层架构,这样会把简单的事情搞复杂。点评:N层架构对于大型的系统开发是很有好处的,这也是大部分系统所采用的。对于通常的N'层开发来说,三层是最常见的,但是还有更复杂的,比如四层,五层等,这些扩展性更好,但是难度也更高,所以三层开发对我们来说是必须要掌握的。
      

  13.   


    简称MVC  
    数据处理层DAL  M  Model
    业务逻辑层BLL  C  Control
    页面设计层      V  View
      

  14.   

    LS大部分已经忽悠了概念概念是死的...开发顺序: dal- >> bll - >> ui好的三层(其实是虚的)扩展,维护,非常好...3层最重要的部分  BLL 业务逻辑是整个项目的核心.业务的扩展,维护,也是整个项目的命脉.业务层方面可以延伸到23种设计模式.如aop等.当然这样就不片面的就3个工程. 所以我说三层是虚的.只是个代名词而已.
      

  15.   

    数据处理层DAL 
    业务逻辑层BLL 
    页面设计层
    你可以查一下msdn
      

  16.   

    所谓三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。
    三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互。表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
    业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
    数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增、删、改、查。
     
      

  17.   

    第一层是连接数据库层 DataAccessLayer (自定义命名空间 如Database open close 等方法)
    第二层是逻辑处理层 BussinessLogicLayer(根据业务需要 调用DataAccessLayer里类库构造函数)
    第三层就是用户界面了 也就是页面
      

  18.   


    msdn里面有?怎么个搜索法?我搜索三层架构貌似找不到结果
      

  19.   

    数据处理层DAL 
    业务逻辑层BLL 
    页面设计层
      

  20.   

    http://topic.csdn.net/u/20070808/18/fea8d58c-b3c3-48b5-9148-5110c0379e23.html
      

  21.   

    三层架构是什么?这个"三"在古汉语中有多的意思,也就是多层结构.这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。 三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互。三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互。三层结构分别为:表 现 层:位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。在.NET中,把页面表单元素实现为一个model类。把传这个model类对象传递给业务层。把页面表单元素实现为一个model类。把传这个model类对象传递给业务层。中间业务层:负责处理用户输入的信息,或者是将这些信息发送给数据访问层进行保存,或者是调用数据访问层中的函数再次读出这些数据。中间业务层也可以包括一些对“商业逻辑”描述代码在里面。在.NET中的实现也就是构造一个Sql语句,用model类构造一个参数数组.再把这个参数数组和sql语句传递给数据层.
    数据访问层:仅实现对数据的保存和读取操作。数据访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。.NETK中也就是把这些参数数组添加在Command类的参数集合中.实现对数据库的操作把这些参数数组添加在Command类的参数集合中.实现对数据库的操作那为什么要使用三层架构呢?其实最大的一点就是 针对大型系统的应用,如果不用分层结构,在将来的维护中将非常麻烦.介绍微软.NET架构在CSDN有一篇很好的文章,我把它粘在这里:
    Microsoft.NET 为三层结构做的准备 
      Microsoft .NET Framework是微软推出的一套下一代开发平台。.NET 基于开发人员的角度来说它是一个公共平台的类库(FCL),包含了近100 个命名空间(namespace)的近5000个类,想想看这是多的强大,还包括一个公共语言运行库(CLR)。因为只要符合.NET的公共运行规范(CLS的语言都可以 使用它提供的强大的类,并编译为微软的中间语言(MSIL),在其他的应用中就可以当作一个组件来调用。同时享受公共运行库带来的一切好处: 垃圾自动回收(GC)、实时编译(JIT)、跨语言互动、跨平台。 .NET 还可比喻是操作系统提供给开发人员的面向对像的API。 ASP.net是.net中的一部分。它最大的优点除了是编译执行速度快外,我觉得最大的优点是页面和代码分离的编写方式,再加上.net库提供的支持事件的各种WEB控件,以及.NET公共平台的类库(FCL),和以前编写网页方式相比可谓是一场革命.
    三层架构图如下:
           CIOCPServer
             ||
             ||
          CCutomHPServer
             ||
             ||
           CTestServer
    以后我们要讨论的就是这个看上去并不复杂的三层架构图,下面就此架构图中的主要类进行简要说明。
      CIOCPServer:
      完成端口服务器基本通信类,它使用winnt/2000/xp平台特有完成端口特性,对通信模型进行封装,向它的派生类提供以下基本扩展接口(可被重载的虚函数):
      1、有客户端连接时的处理接口;
      2、客户端断开时的处理接口;
      3、从客户端收完数据后的处理接口;
      4、向客户端发送完数据后的处理接口;
      5、网络通信及服务器处理出现错误时的处理接口。
      CCustomHPServer:
      典型的高性能服务器类,CIOCPServer是其基类之一(之一?难道还有另外的基类,回答是:当然,呵呵,别急,后面会介绍),此类在CIOCPServer的基础上,封装了三个数据队列及三类处理线程,介绍如下:
      1、接收数据包队列及接收线程:用于存放刚收到的数据包,此数据包还没有进行逻辑意义上的拆解,接收线程从此队列中取出数据包,并将其形成一个逻辑意义上完整的数据包加入到“处理数据包队列”中;
      2、处理数据包队列及逻辑处理线程:已经拆解成了逻辑意义上的数据包,逻辑处理线程对此类数据包进行逻辑解析,这里就是服务器的主要逻辑部分,有的数据包在处理完成后,可能是需要向客户端返回处理结果的,此时就需要逻辑线程在处理完成后将返回结果的数据包放入“发送数据包队列”中;
      3、发送数据包队列及发送线程:待发送的数据包队列,由发送线程根据数据包里的客户端套接字发送给特定客户端。
      CTestServer:
      此类是一个测试类,主要用于演示如何在CCustomHPServer的基础上派生一个真正的应用服务器,并用于说明它需要重载实现CCustomHPServer的哪些重要虚函数。
      基于以上的结构,我们的服务器通信模型,可以一层一层地实现,一层一层的测试。在CIOCPServer中,它本身是不带有任何数据队列的,所有的网络数据都是即来即处理,没有保存数据,实现的是即时响应。在CIOCPServer里,有两类重要线程:AcceptThread线程和WorkerThread线程。其中,AccetpThread线程使用Accept或AcceptEx函数来接收客户端的连接请求,并实现客户端socket与完成端口句柄的绑定,“有客户端连接时的处理接口”就是在这里封装的;而WorkerThread线程是我们在完成端口中常说的“工作者线程”,它由get函数触发工作,除“有客户端连接时的处理接口”之外的其它接口,都在这里进行封装。
    通上面可以看出三层架构中,对每一层的分工非常明确。通过这个实习项目,我第一次接触三层架构,它给我的第一感觉就是易于维护,在实际开发中代码层次分得很清楚,开发起来效率高。其它方面我可能还不是很清楚。以后用多了可能慢慢就会深入了解
      

  22.   

    就个人理解,数据库的数据-5经DAL层取到,到了BLL就有了实际的意义,比如-5度(摄氏温度),而在UI层则可以是Web页面,也可以是Windows应用程序,甚至是手机平台,这都无所谓,并且实际显示出来的可能不过是一个显示比较冷的图标而已。为什么需要三层结构,下面是群里一位朋友说的:为了能方便替换表现层或者持久层实现.
    为了更好的代码重用.
    为了代码组织更清晰.
    为了团队分工协作.
    为了测试工作方便进行....再好的架构师也不能应对保证系统以后的所有的变化,只能尽量再尽量的让系统有比较好的大的方向的扩充和替换能力
      

  23.   

    三层:MVC
    模型,视图,控制器
      

  24.   

    MVC
    与业务层,数据访问层,表示层有什么区别吗
      

  25.   

    谢谢大家,感谢jiang_jiajia10,lovehongyun,dd__dd,guolimin1118,amandag  给出的详细解答啊。。大家让偶学习到很多啊。纯个人观点呢,表现层仅为网页的html应用程序的GUI游戏开发的openGL或者DirectX..
    印象中在N年前看过一本书,好像是讲三层架构分为表现层,中间层,数据库层。
    记得在看三层架构的时候也不知道什么数据库处理,实体,业务逻辑什么之类的。或许是年老不更事了,记错了,记不清了。。顺便再请教下闵老师啊,你所说的持久层是指?
    按你所述我估计应该是数据库处理之类的封装。。或许包括文本读写操作。
    但是个人理解持久层为数据库迷惑的是持久层到底是持久化数据的操作还是持久化数据保存的数据?
    有没有更为权威的说话?
      

  26.   


    数据层(DataAccess)
    逻辑层(Business Logic Layer)
    表示层(Presentation Layer)根据微软Scott Mitchell讲解
      

  27.   

    表现层(表示层) 
      用户界面,外部接口,会话管理 
       就是你的ASPX页面业务逻辑层 
      业务过程和规则,业务模型 
      写在app_code或.dll里的访问数据库的类和一些常用操作.数据访问层 
      数据访问和存储,数据管理 
      你的数据库.
      

  28.   

    找份petshop4.0de资料
    然后看源代码
      

  29.   

    呵呵,来学习的。
    三层架构有哪些?界面层,业务层,数据层。
    MVC和它一样吗?都有什么优点和缺点?
    大家现在都在用MVC开发模式吗?呵呵,MVC只是听说,还不知怎么用的?
      

  30.   

    拿持久化来讲吧,持久化更像一个过程。。即把数据持久到硬盘或者数据库的过程,至少更广一点讲可以包括持久到内存。。
    持久?何解,我暂不是很好理解,拿语法上讲,应该是个形容词吧?yaji_ya讲解讲解。
    持久层,应该算是个名词吧,关键在层上了,这个层应该指的是哪部分?这样描述个人认为很容易误解吧。
    个人比较偏向于持久到的层,即数据库或者硬盘甚至内存。可很多人往往指的却是持久化层。。难道持久层和持久化类封装没有区吗?就像数据层和数据访问层?两个一样?
      

  31.   

    网上找的,拿来分享===========================================================
    系统各层次职责
    1.UI(User Interface)层的职责是数据的展现和采集,数据采集的结果通常以Entity object提交给BL层处理。Service Interface侧层用于将业务或数据资源发布为服务(如WebServices)。
    2.BL(Business Logic)层的职责是按预定的业务逻辑处理UI层提交的请求。
    (1)Business Function 子层负责基本业务功能的实现。
    (2)Business Flow 子层负责将Business Function子层提供的多个基本业务功能组织成一个完整的业务流。(Transaction只能在Business Flow 子层开启。)
    3.ResourceAccess层的职责是提供全面的资源访问功能支持,并向上层屏蔽资源的来源。
    (1)BEM(Business Entity Manager)子层采用DataAccess子层和ServiceAccess子层来提供业务需要的基础数据/资源访问能力。
    (2)DataAccess子层负责从数据库中存取资源,并向BEM子层屏蔽所有的SQL语句以及数据库类型差异。
    DB Adapter子层负责屏蔽数据库类型的差异。
    ORM子层负责提供对象-关系映射的功能。
    Relation子层提供ORM无法完成的基于关系(Relation)的数据访问功能。
    (3)ServiceAccess子层用于以SOA的方式从外部系统获取资源。
    注: Service Entrance用于简化对Service的访问,它相当于Service的代理,客户直接使用Service Entrance就可以访问系统发布的服务。Service     Entrance为特定的平台(如Java、.Net)提供强类型的接口,内部可能隐藏了复杂的参数类型转换。
    (4)ConfigAccess子层用于从配置文件中获取配置object或将配置object保存倒配置文件。
    4.Entity侧层跨越UI/BEM/ResourceManager层,在这些层之间传递数据。Entity侧层中包含三类Entity,Aspect
     Aspect贯穿于系统各层,是系统的横切关注点。通常采用AOP技术来对横切关注点进行建模和实现。
    1.Securtiy Aspect:用于对整个系统的Security提供支持。
    2.ErrorHandling Aspect:整个系统采用一致的错误/异常处理方式。
    3.Log Aspect:用于系统异常、日志记录、业务操作记录等。规则
    1.系统各层次及层内部子层次之间都不得跨层调用。
    2.Entity object 在各个层之间传递数据。
    3.需要在UI层绑定到列表的数据采用基于关系的DataSet传递,除此之外,应该使用Entity object传递数据。
    4.对于每一个数据库表(Table)都有一个DB Entity class与之对应,针对每一个Entity class都会有一个BEM Class与之对应。
    5.有些跨数据库或跨表的操作(如复杂的联合查询)也需要由相应的BEM Class来提供支持。
    6.对于相对简单的系统,可以考虑将Business Function子层和Business Flow 子层合并为一个。
    7.UI层和BL层禁止出现任何SQL语句。错误与异常
            异常可以分为系统异常(如网络突然断开)和业务异常(如用户的输入值超出最大范围),业务异常必须被转化为业务执行的结果。
    1.DataAccess层不得向上层隐藏任何异常(该层抛出的异常几乎都是系统异常)。
    2.要明确区分业务执行的结果和系统异常。比如验证用户的合法性,如果对应的用户ID不存在,不应该抛出异常,而是返回(或通过out参数)一个表示验证结果的枚举值,这属于业务执行的结果。但是,如果在从数据库中提取用户信息时,数据库连接突然断开,则应该抛出系统异常。
    3.在有些情况下,BL层应根据业务的需要捕获某些系统异常,并将其转化为业务执行的结果。比如,某个业务要求试探指定的数据库是否可连接,这时BL就需要将数据库连接失败的系统异常转换为业务执行的结果。
    4.UI层(包括Service层)除了从调用BL层的API获取的返回值来查看业务的执行结果外,还需要截获所有的系统异常,并将其解释为友好的错误信息呈现给用户。
      

  32.   

    MVC是一种三层架构  
    数据处理层Model    对数据库的操作。主要是SQL文,还有结构的定义
    业务逻辑层Control  根据对页面的操作,选择做什么处理,调用哪个数据库操作,在此层做
    页面设计层View     页面呈现
    这样分层主要是结构清晰。程序修改和维护比较容易
    如果只是对表的查询条件变化了,一般只需要修改Model层,其它地方不变。
      

  33.   

    95的?MVC是三层结构?别误导人。。
      

  34.   

    我也很迷糊aspx.cs 算什么层?数据验证在aspx.cs 还是在bll层? 比如判断输入不能为空?
      

  35.   


    呵呵,他的原话为:MVC是一种三层架构如果三层架构在他的思维里有很多种,哪MVC或许也是一种吧
      

  36.   

    三层构架(3 Tier/MultiTier)并非这种代码逻辑上的层次划分。无论是MVC、还是MS PetShop的“7层划分”,这里面的“层”的概念,和三层构架的“层”并不相同。通常的“三层构架”指的是应用系统的三大物理层的划分:数据库服务器、应用服务器、瘦客户端(多数并非指浏览器)。而MVC和PetShop的层,是代码逻辑上的层,是为了降低代码耦合而作的重构性的代码分区,但在物理运行空间上,未必是分离的。如果我们用PetShop的模式开发了一个单机的Access的小程序,那么这个程序只能说是1 tier,不能说是三层构架,尽管代码中划分了7大层次。如果我们开发了这样层次的系统:1)数据库服务器 2)Asp.Net的Soap服务 3)访问Soap的SmartClient 这样的结构才可以称之为“三层构架”。
      

  37.   

    其实很多人有一个误区,那就是拿.Net的一些片面的概念来硬套三层构架。而实际上,三层结构在.Net出现前很久之前就有了,就MS而言,比较成熟的三层构架平台是Win NT 4的MTS。后来COM+出现并日臻完善。金蝶的构架,就是VC开发COM+中间层,然后让VC/VB开发的瘦客户来访问。