三层结构与C/S结构相比,优势是什么?

解决方案 »

  1.   

    http://www.xc-soft.com/docs/3tieranddatabase.htm1.1. 传统的C/S模式
    在传统的数据库应用体系中,客户端与数据库完全分开,在客户端上运行了大部分服务,如数据访问规则、业务规则、合法性校验等等。每一个客户端都存在数据引擎,并且每个客户端与数据库服务器建立独立的数据库连接(DB Connection)。基于该种体系的数据库应用系统的优势:开发周期较短,能够适应大部分中小型数据库应用系统的要求(当客户端数量少于50时)。但是,随着数据库应用的日渐发展、数据容量的不断增加、客户端数量的不断增加,该种体系结构显示出了诸多缺陷,主要体现在以下几个方面:1、              可扩充性:对于数据库服务器端,每当建立一个数据连接,就会占用大量的系统资源,当数据连接达到一定数量(如20个)时,数据库服务器的响应速度与处理速度将大打折扣。2、              可维护性:基于传统C/S的数据库应用系统,业务规则通常置于客户端应用程序中。如果业务规则一旦发生变化(随便举个例子,如身份证号码有可能升为19位)时,我们就必须修改客户端应用程序,并且将每个客户端进行相应的升级工作。3、              可重用性:采用传统C/S的设计模式时,数据库访问、业务规则等都固化在客户端应用程序中。如果客户另外提出了B/S的应用需求,则需要在WEB服务器中重新进行数据库访问、业务规则、合法性校验等编码(例如将数据库访问写入ASP代码),而所做的工作与客户端应用程序中的功能完全重复,从而加大了工作量,又使得程序开发者心里感到极不舒服。正因为以上的诸多缺陷,使得三层(多层)体系结构成为目前数据库应用开发的首选,甚至客户有时也会提出该种技术需求。1.2. 三层体系结构
    所谓三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互。这样的好处显而易见:1、              由于数据访问是通过中间层进行的,因此客户端不再与数据库直接建立数据连接。也就是说,建立在数据库服务器上的连接数量将大大减少。例如一个500个客户端的应用系统,500个客户端分别与中间层服务器建立DCOM连接,而DCOM通讯所占用的系统资源极为有限,并且是动态建立与释放连接,因此客户端数量将不再受到限制。同时,中间层与数据库服务器之间的数据连接通过“连接池”进行连接数量的控制,动态分配与释放数据连接,因此数据连接的数量将远远小于客户端数量。2、              可维护性得以提高。因为业务规则、合法性校验存在于中间层,因此当业务规则发生改变时,只需更改中间层服务器上的某个组件(如某个DLL文件),而客户端应用程序不需做任何处理,有些时候,甚至不必修改中间层组件,只需要修改数据库中的某个存储过程就可以了。3、              良好的可重用性。同样,如果需要开发B/S应用,则不必要重新进行数据访问、业务规则等的开发,可以直接在WEB服务器端调用现有的中间层(如可以采用基于IIS的WebClass开发,或直接编写ASP代码)。4、              事务处理更加灵活,可以在数据库端、组件层、MTS(或COM+)管理器中进行事务处理。
      

  2.   

    哈哈,不用听 龙卷风.net 在给你讲大道理~其实3层结构和C/S结构,我知道你的意思,但是你表达错误~首先3层结构可以存在于C/S结构下和B/S结构下,而C/S指的就是软件客户端/服务器端,是2个概念的东西~你可能意思是简单的2层结构和3层结构有什么不一样地方,这我可以告诉你~
    3层结构,其实中间多了一层COM+ 它主要来处理数据的维护,例如,一台服务器,有300个客户端,其中有50个客户端可能会出现并行执行现象,这时如果用单一的2层结构,在服务器端处理,最轻的会出现数据库死锁现象,最重导致机器崩溃,内存泄露,计算机象蜗牛一样,基本上你做的软件都不能用了,就这么简单~但是如果是3层结构的话,那么50的客户端,不是直接提交到服务器端而是交给一个中间逻辑层计算机,由它来处理数据的流向,那就是COM+技术了~这样虽然并行执行可能会有可户机接受数据慢一点,但是不至于死锁现象发生,当然也是看你程序如何去写了~好了,基本上,这就是你想要的功能了~不要让我写代码考证~如果要写代码的话,我到是有C#2005的代码~起码在C#下面实现这些比较简单~会让人直接感受到什么叫做面向对象设计~好了就说那么多~龙卷风.net那里有VB的3层结构代码,问他要把,给他留言~~老龙不好意思,又把你给卖了,哈哈 ~好久不见了,想你了~没事多上上QQ,咱们好好聊聊~