一直用远程连接SQL的方式来开发应用系统,弊端越来越明显:
1、速度,由于受到网络的影响,速度会大打折扣,甚至出现假死情况
2、效率,由于每个客户端都是直接与服务器数据库建立连接,随着客户端的增多,服务端负荷明显加大
3、安全,服务端SQL必须对外开放1433端口,由此造成安全隐患
解决:
1、采用B/S结构,缺点也很明显,网页的操作形式还是不能和传统应用软件相比,而且存在各种浏览器的代码兼容问题,还必须改写现有代码,个人感觉不是最理想的解决方案。
2、采用Webservice,比上面的好一些,但是SOAP并不适合大数据量的情况。
3、那么我想是不是可以采用COM+/DCOM或者ActiveX的模式,即:在客户端传送一个SQL语句,服务端返回一个RS记录集,不知道这种想法是不是异想天开,从来没有接触过,伪代码:
原代码:
Dim Conn as new adodb.connection
Conn.open strconnection
Dim Rs as new adodb.recordset
sql="Select * from user"
set rs=conn.execute(sql)
if not (rs.eof and rs.bof) then
  strUser=rs("User")
end if设想改进的代码:
Dim Rs as new adodb.recordset
dim RemoteRs as new ("RemoteConn","211.12.3.1")
set Rs=RemoteRs.open("Select * From User")
if not (rs.eof and rs.bof) then
  strUser=rs("User")
end if是不是有这种技术?如何实现?欢迎各位赐教!

解决方案 »

  1.   

    请问3、那么我想是不是可以采用COM+/DCOM或者ActiveX的模式,即:在客户端传送一个SQL语句,服务端返回一个RS记录集,不知道这种想法是不是异想天开,从来没有接触过,伪代码: 这个方法跟C/S 有啥区别?
      

  2.   


    我做过类似的,不过返回的不是rs记录集,而是一条一条的记录[放在一起就是rs记录集了:)],
    由于rs记录集可能很大,一次发送可能会出出现问题,所以我是一条记录一条记录的处理。你只要不怕麻烦,你要的这样的功能是能实现的!
    不过要转变一点想法,可能就是不要想着一次发送一个记录表,
    而是一条记录一条记录发,一条记录一条记录的收一条记录一条记录的处理就好。麻烦包括服务器端及客房端要准备好很多的命令,
    服务器端收到客户端的什么命令就去对数据库做什么动作,返回什么结果。
    还有数据怎么返回、数据怎么校验,等等......
      

  3.   

    楼上的说到底还是 C/S 系统!唯一的区别就是把连接数据库的事情放到 服务器端 做。本质上是不伦不类的 C/S 
      

  4.   

    建议你用b/s + ActiveX控件模式,在控件中完成表查询,弹出窗体显示查询结果
      

  5.   

    可以考虑叫客户购买CTRIX 
      

  6.   

    还是c/s
    不知道像金蝶用友之类的是怎么做的,管家婆采用套接字服务器程序,难道是客户端的socket发送一个请求,服务端一条记录一条记录的发送回来?
      

  7.   

    不会吧!你没试过win2003server的远程桌面吗?同时50个用户,2M光纤就够用了。
    软件商怎么赚钱?按用户数啊!
      

  8.   

    同意一楼的 使用远程桌面连接毕竟远程数据连接 怎样都可能会出现掉包,除非你自己做数据校验?(设想)
    其实假死可以参考老马的ActiveX的多线程  我实际使用后从没假死过了
      

  9.   


    带宽能要多少哦~~现在IDC基本都是10M独享的带宽 公司大了可以百独啊~软件商可以按连接桌面的数量卖钱嘛  据说对数据保密要求高的地方比如FBI (- - 汗个) 都是使用无盘的系统,然后从终端连接到中心服务器的远程桌面 也不知道是不是
      

  10.   

    请参考: http://blog.csdn.net/WallesCai/archive/2008/01/02/2010877.aspx