你需要把数据压缩一下,DAtaSet有很大的压缩空间,我做过一个案例,就是用的它
另外,服务器端的程序,需要加一个定时器,定时的做一下GC.Collect()来清理过期的东西,自动回收比较慢.
当然如果数据量实在是太大,就要考虑这种方式是否合适了.
DataSet的内部结构比较大,比原始数据会大不少,如果你有能力,可以把数据库的内容自己组织出一个结构,然后以字符串的形式进行压缩,客户端再反向解开,这样传输量会小,但是灵活性会差很多.

解决方案 »

  1.   

    没办法啊,用Remoting远程访问就是存在速度的问题。这是网络带宽的限制。
    当然如果用专线相连,速度上应该会快些。否则我觉得也没啥好办法。
    以前我做过类似的,用专线相连,速度可以得到保证。
    如果不用专线,做数据压缩包传送的话也会有速度上的问题。
    呵呵,没啥太好的方法。
      

  2.   

    谢谢各位的支持,听说可以不用dataset,而采用对象实体来传送,这样可以避免将sql语句传递给服务端。
    这样可行吗??这样如何实现那??
      

  3.   

    嘿嘿,我们公司的一套系统最初也是打算用远程访问数据库的方法。不过后来一些关键的(访问量比较大)的进程都没办法达到设计效率,只好另外做了一个Remoting的组件用于实时返回Connection String。
      

  4.   

    关注中,我们现在也是用remoting
      

  5.   

    “另外做了一个Remoting的组件用于实时返回Connection   String”
    不是太明白你的意思,ado.net本身有连接池的功能,你不用关心连接对象的。
    只要你的最大并发数<=max pool就不会柱塞。
      

  6.   

    我的意思是说,通过中间件只是获得了connection string,然后利用本地的ado Connection对像连接数据库。这样子才解决效率的问题。
      

  7.   

    楼主这样的做法是错误的,速度很慢,我以前就这么做过,这与压缩不压缩没有关系,是与Remoting的序列化有关系,你试试返回一个2000行的数据,慢的要死,就算你用Tcp模式也没有用,还是放弃吧
    建议还是直接返回DataTable
      

  8.   

    我也正用到Remoting 不我打算在局域网内使用,外网的使用Socket来实现