公司最近一个项目开始用的是Winfrom + webservcie实现多个客户端与服务器进行数据交互,但后来测试发现数据超过几百条就很慢了,更不用说上万条记录了。用ADO。NET也可以直接远程操作数据库,但会不会有什么不好的后果。如果用.net remoting的话似乎要用tcp通道才会比webservice性能好一点,但是我们公司用的是万网的空间服务器,支持TCP传输的吗。
在WCF,.NET REMOTING, ADO.NET, WEB SERVICE 这几种方法中哪种最适合二十个左右客户端,每个客户端每次一万条左右数据的交互,望高手指点!

解决方案 »

  1.   

    WCF整合了很多分布式开发技术,试试吧
      

  2.   


    用WCF在internet上交互的话,效率是不是和WEB SERVICE差不多
      

  3.   

    每次一万条显然就是瓶颈,你想想,不说其他的干扰因素,就是所有条件都满足的情况下,你的带宽,你的接收缓冲区,而且根据我的经验,一次一万条的查询也需要个0.0几秒的时间,这些应该从根本上首先优化。
    当然WCF是最好的技术框架,但是你不熟的话根本不会用~
      

  4.   


    WCF也研究过,但没在项目中用过,我如里用ADO.NET直接远程操作数据库最大的弊端是什么呢。
      

  5.   

    不太可能,以前试用直接用ADO,不要说.net,以前直接用原生ADO连远程都受不了,几百条就是不稳定了,多个并发不现实,所以之前大部分的同步都是用FTP,先把数据打包再同步,不过现在很多开始用WS了,期待高手的更佳方案...
      

  6.   

    使用服务器端分页技术。一次读取一万条数据,就相当于是在ASP.NET页面上加载一万条数据一样,肯定要假死了
      

  7.   

    WCF适合进程间信息传递。 但不适合 大批量的信息。
    首先数据要序列化,序列化后还要二进制化。浪费时间。
    如果不是需要什么类对象,还是用Socket 自己传输。
      

  8.   

    wcf ,或者 webservice 我觉得都是可以的关键是有什么应用必须要经常进行1万条的交互? 
    1. 就像上面说的,业务系统中分页的数据最多几百条,怎么会到上万条。
    2. 不知道你们考虑过数据同步问题没有,在同步设计中除了第一次基准同步外,后续的数据变更同步,频率和流量都是相当低的。 再复杂的应用,几百条数据交互就顶天了。 
      

  9.   

    那么大的数据量,
    感觉还是使用SOCKET
    自定义结构来传输,这样可以在根本上去减少数据包的大小
      

  10.   

    谢谢,不过因为服务器是租的,用SOCKET会不会有什么端口问题
      

  11.   

    说错了,用户少、处理量大,应该用OLAP,分析事务处理。
      

  12.   

    你租整台主机的话,都可以解决,否则万网不会允许你在上面运行一个SOCKET服务器端程序,按虚拟主机这个方式,似乎webservices是唯一可行的,试试压缩了传输呢
      

  13.   


    对,这就是遇到的最大问题,公司不愿花太多钱在硬件上投入,所以就只有叫我们从技术上想办法,技术经理叫直接用ADO.NET连接远程数据库,但我总觉得不太可行,所以发帖请教一下大家的意见。
      

  14.   

    虚拟主机有速率及CPU使用率限制,种种限制下,没准还是ADO.NET连接远程数据库最快,可以试试一次100条,来上100次,可以结合存储过程,要是SQL2005,还可以使用SQL CLR
      

  15.   

    考虑后台传输的数据分组策略。估计这么大的数据传输量不会完全需要实时的。
    在这里用webservice还是remoting关系不大,因为数据连接的开销并不大。当然remoting用udp协议,也许会好一点。
      

  16.   

    使用SQL CLR传输压缩后的blob数据应该是最佳实现了
      

  17.   

    ADO.NET直接连接远程,还每次一万条数据,你自己试一下就知道有多慢了。一万条数据就算直接用socket传输起码要一秒到两秒时间,webservice和Remoting就更不止这个时间了。要是20个客户一起和服务器交互,每个客户每次交互一万条数据,我看服务器够呛。我觉得很有必要从这个数据交互量上面下手,应该想办法去最大程度的减少数据交互量,节省资源,我就不信每次交互的数据都完全不同,可以考虑差异传输方式来减少数据的交互量
      

  18.   

    服务器10M光纤,客户端2M宽带,WCF服务(HTTP)分次取,数据经过压缩,一次取200条,我取28000+用了24秒,不过应该还有提升空间,因为对WCF用得不熟
      

  19.   

    谢谢各位的指点,现在已经改成了WEB SERVICE分批传送,一万多条数据从传送到服务端到获取结果再返回一共耗时一分钟左右,还算可以接受,不过仍会继续寻找更有效的方法