在使用BDE开发三层数据库时,有些人将TDatabase组件放到服务器端的主窗体中,有些人将TDatabase放到远程数据模块中,两种做法的优缺点是什么?哪种做法更合理?请教各位。

解决方案 »

  1.   

     三层数据库应该不用BDE吧
      

  2.   

    http://topic.csdn.net/u/20080413/08/7097bddf-8bb6-4134-a5f7-d9be3028be51.html
    三层用这个.
      

  3.   

    不用BDE、不用ADO、不用DBEXPRESS、干脆不用DELPHI。
      

  4.   

    用ADO好一点.为了方便系统维护,一般将公用的数据库像(TDatabase组件)放在
    数据模块中,在三层当中也是这样.
      

  5.   

    我一般都是把ADO的几个控件放到远程数据模块里。
      

  6.   

    人是自自寻烦恼,层越多越烦越不稳定看来有些人是没有亲身体验过三层 我使用过RamObject与IdTcp后的感受: 供大家参考
    1\连接过程的区别: 
    两层:Ado直接连接Dbms,进行查询和更新 
    三层:客户端加密SQL指令---发送---服务端接受解密----通过线程进行临时连接DBMS----查询到结果---转换成流并加密压缩---发送---客户端接受解密解压----恢复到db控件中 三层比两层多出了若干中间的环节,所以肯定了三层的速度没有两层的快,这是早就定论的. 
    对查询后得到的本地数据集进行更新时,不能像两层直接更新了,三层除了更新本地的,同时还得发出指令更新远程数据库. 2\Adocon容易出现的问题 
    三层中使用Adoconneciton,通过多个线程建立连接,在使用同一个ADocon时是不稳定的,必须为每个线程建立一个adocon,这样由于登录验证的时间,所以更加影响了执行速度.而两层是早已连接上了的,且不会出错. 3\数据库安全问题 
    两层是通过加密符对Ado访问口令的加密 
    三层因为不涉及到数据库口令,但TCP通讯时少不了加密,否则,只要连接上IP:PORT,就可以发送指令执行了, 
    两种加密都在客户端中,对于反汇编来说,安全性是差不多的了 4\经常谈到的维护问题 
    提到三层,多数人认为可以减少维护量,把所有的业务逻辑放在中间层,便于集中维护. 
    大家想一下,现在有多少人真正做到客户端无逻辑运算的,这种做法只是学着B/S,而浪费客户机的资源. 
    对于C/S的,他与B/S有着很大的区别,就像QQ也不可能做到逻辑在服务器,维护更新可以通过自动升级来完成. 5\开发周期 
    三层必竟是多了一层,好多内容都是拆分开在两端同时开发,代码的完整性及维护没有两层简单,开发周期也长 6\三层的优势 
    由于我水平有限,至目前所理解的三层优势,只是可以减少 两层adocon连接的个数,从而减少服务器需分配的资源,对于两层,当连接数过多时,数据库是承受不了的,三层调用数据后可以释放连接,不像两层始终占着. 说了这么多,不是为了说三层不好,而是两层当数据环境在一定范围内是有优势的,而三层则是突破这个数据环境的优势. 
    就好比,一共有10个客户端,三层的优势是绝对不会超过两层 这个是要看环境进行权衡
      

  7.   

    谢谢LENCON,我用三层是为了跨路由的复杂网络。问题是将TDatabase组件放到服务器端的主窗体中与TDatabase放到远程数据模块中,两种做法的优缺点是什么?TDatabase放到远程数据模块中,远程数据模块是多线程的,每个线程建立一个TDatabase的连接。可是在一些三层例子中TDatabase被放到服务器端的主窗体中,每个远程数据模块中的数据集组件在与服务器端的主窗体中TDatabase组件打交道时,是否还要考虑线程同步问题?两种做法的优缺点是什么?这个度应该如何掌握?