现有一个项目,网络是VPN,通过ADO 连接 SQL server2000,
可能有100个并发用户,总用户量200-300个.考虑到两层的优越性,不知道这么多点有没有问题
请有经验的朋友指点一下

解决方案 »

  1.   

    三层比较好,参考
    delphi demo中的MIDAS中Pooler
      

  2.   

    请针对VPN这种网络状态和这么多点的基础上进行发言
      

  3.   

    看来有些人是没有亲身体验过三层
    多去搜一下有关两层与三层比较的贴子使用过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个客户端,三层的优势是绝对不会超过两层所以,在我提出的环境上,请有经验的同志帮我权衡一下利弊
    VPN网络
    200-300个操作点
    约100个并发
    用什么好?
      

  4.   

    你的VPN稳定性如何?
    如果像在北京/上海/广州三地建立VPN,那么在上面用ADO绝对会让你痛不欲生
    世上最远的距离是什么?电信与网通!
    如果能保证VPN的稳定,那ADO还是不错的
      

  5.   

    我们这里用VPN的必竟还不多,稳定性是不错的
    两层ADO没问题吧
      

  6.   

    没有连接过那么的客户,并发数也没有那么大,但是在vpn这个网络上运行过20个客户端,至于并发数没有测试过,这种情况下运行效率还是可以的,每笔交易完了后要更新的表有四个,每个表的记录数大约在60000左右,当然了每次只是按条件更新其中的某几条记录!
      

  7.   

    关注中,我会Midas开发但还没有付诸实施,所谓的三层是指代码设计而不是网络格局这种事情要根据业务规则变化剧烈程度而定,
    例如某erp软件厂商的客户既有制造业又有商业
    这时就要考虑分层设计以适应变化。
      

  8.   

    我认为按照楼主的需求,二层C/S应该能够很好地解决问题.如果以后要扩展还是建议使用三层.楼主lencon 也说得很清楚,也很实在.各有各的好处,楼主自己权衡一下.
      

  9.   

    有近三百的用户量,一百多的并发,那么显然在使用两层的结构上,增大大增加DBMS的压力,理论上来讲,至少在同一时间有50~200个甚至更多的连接,这对于DBMS来讲是一个巨大的挑战.而如果是一个基于频繁录入和修改(如审核等),事必会产生众多的并发事务,那么这个资源消耗就难以评估了.外加上如果有报表的话,则数据的统计汇总等等又需要大量的资源,这个成本也不太小.个人建议,如果业务需求相当复杂,并且系统庞大的话,还是考虑一下使用通用的多层结构来缓和DBMS的压力,这不仅仅只是一个数据访问的直接性.前面提到的指令加密,其实三层结构也可以采用VPN,则这部分工作就可以省却;而如果是简单业务,则可以走自定义的TCP通道,这样子性能并不比直接访问DBMS差.
      

  10.   

    这么多并发用户数,建议还是使用多层结构来缓冲压力,毕竟1台应用服务器扛不过,可以多加几台缓解缓解。
    两层结构里也有挺垃圾的系统,如新**的工程管理软件,PB做的,里面东西一多,巨慢无比。
    所以速度问题见仁见智,主要看设计功力,外加不断的调试、优化。
    VPN问题,因为电信、网通的瓶颈,所以要采用统一宽带供应商是比较必要的,并不是北方就没电信,只是电信占弱势。这样可以提升VPN间的速度。说个我做过的例子,供参考:地磅系统+简单的供销、财务一体化的系统,三层结构,60多个用户,24小时保持15~30并发,数据库和应用层在一台服务器上,布置在河南,使用网通宽带接入,后来更换为电信宽带,VPN故障率大大降低,少数客户端在杭州,使用电信VDSL,两者VPN连接。杭州客户端主要是查看用,数据量不大,速度还可以。因地磅是个24小时不间断工作的实时系统,所以稳定性要求比较高,系统每天新增大约800~1000条记录,每条数据处理2次。除了有次蠕虫病毒大爆发的时候,经常不能连接登陆之外,其他时间还算稳定。其实我做的是个伪三层,仅负责数据转发,业务逻辑有些是放在数据库里的存储过程中,数据库的压力比较大,有预算的话,应该把数据库服务器独立出来。