在相同环境下,为什么读取1万条数据时。CS的秒进,BS几乎要几分钟,并且有时还会导致页面死掉,相同环境已经排除了网络等各个因素,为什么有如此大的区别呢,究竟是慢在哪,小弟不才,希望各位。能告知一二。

解决方案 »

  1.   

    没有做过相关的实验。可能是webform和winform的生命周期有关,但是你的测试相差太大了,有点说不过去。你确定测试环境相同?访问人数一样?如果访问人数不同的话,由于w3wp.exe辅助进程又iis调用,所以可能导致占用的连接数不一样。个人见解!期待高手不吝赐教!
      

  2.   

    先看看你写的方法
    数据库连接
    一般来说,web都不会超过form
    你想一个就是本地、
    一个还得解析协议你可以做一个简单的例子,不要太复杂,影响的因素有很多,楼主不防用相关测试软件测试 一下就明白哪个地方慢web的httpwatch
    winform的俺不太知道,这些软件可以帮助你分析
      

  3.   

    你认为全世界人访问google网页,都让你改成一个客户端winform程序使用数据库的客户端驱动去访问什么google的关系数据库?本来,网页访问如果本地访问数据库的话,肯定远程调用关系数据库的客户端驱动来访问要快。但是让你一问,完全给误导了。响应速度慢,是web服务器不断产生和下载html这种机制造成的,web服务器为了能够供上万、上十万人同时使用(而不是像所谓c/s数据库驱动那样在供几十个人使用时就会卡壳)而做了优化,于是这种web就慢了。牺牲了速度,但是提高了网站的服务数量。
      

  4.   

    这个我不想说太多了。你对于网络的概念停留在办公室内的OA程序的理解上,你理解的c/s程序其实就是个使用人家c/s数据库的客户端做的程序(与本地访问数据库完全一样的方法来调用客户端驱动去访问c/s数据库),那么你的c/s程序的概念是不足以讨论互联网问题的。如果想讨论基于互联网或者校园、企业、城域等网的c/s问题,你至少要对类似一个简单网游之类的网络环境来考虑,比如你要让一个城市里几千个或者上万个客户端同时通过c/s方式访问一个服务,这样才好吧c/s跟b/s做客观的对比。
      

  5.   

    (1) Web应用:Client Browser(HTML解析显示) <- Network(HTTP) <- ASP.NET <- ADO.NET <- DB
    (2) Winform:Client UI(控件显示) <- ADO.NET <- DB上面简单描述两种应用的过程,楼主觉得差别如何?而且在解析HTML的时候,不同浏览器的内核性能也不一样。Chrome的Webkit会比IE稍微快些。
      

  6.   

    估计google不会用iis这样的东西。太慢。自已写个简单的自己用的服务器端也不是难事。至少在c++区已经有人这样用。
    cs肯定比bs要快。因为bs也是cs上的衍生品。
      

  7.   

    你对CS程序理解有误.
    cs
    C=client
    s=server
    按你现在的描述来讲,我认为你的cs程序实际上 只是个 server程序.  而没有所谓的 client因为你就直接在数据库服务器或者数据库服务器的内网环境的服务器上 直接运行的 winform 程序 所以你会觉得数据嘎嘎的快.
    而BS慢的原因是因为跨网域了, 你在外网的某台电脑上去访问 你的IIS 的页面这样,没有区别才怪.bs从本质上讲也就是个CS程序.  因为他也具备 客户端<--->服务器端 的通信本质.所以,如果你要对比速度, 那么你应该把测试环境放对等.对等公平的环境下2者会有少量差别,但这个差别不应该是你能感觉到的.采用bs模式 将会多一些界面内容必须从服务器端get回来. 比如图片,按钮,界面框架 等等 (当然了,由于这些东西采取Html和js css等脚本去描述,所以也是相当的轻便的).而  cs模式 所有的客户端界面都已经预存在本地了. 所以从速度优势上来讲,他的优势就在这里:不需要下载一些html,css js等东西.
    -----------------------然后剩下的数据交互,  由于bs模式的 server端驱动是iis  而cs端驱动是 服务器端代码自实现的. 如果代码水平相当的话, 对数据库的访问2者没什么区别.
    -----------------------说到这里,我想你也应该明白了为什么你 测试的结果会有几分钟的差距了.
      

  8.   

    我觉得最根本原因是cs结构可以直接操作内存,而bs结构不能直接操作内存。所以cs应该更快些。
      

  9.   

    读取数据的速度应该相近或者相同的,慢的应该在呈现上。WEB要先解析成HTML,然后再传输的浏览器(个人愚见)。我觉得你的问题主要在Web显示1W数据上的问题,可以一次把数据全读到内存中,然后分页显示
      

  10.   

    一个C/S传输需要20几个字节的对象用HTML协议就需要1K多,将近两个数量级了,自然是一个秒记一个分钟记了。因此B/S如果按照C/S的编程方法处理(频繁的小规模数据交互),那肯定是死定了。只有两条路可走:1.生成完页面全部数据再传过去 2. AJAX(在本地生成页面数据)
      

  11.   

    第一条路已经走到头了,因为服务器的负载实在受不了,因此现在都在找拨第二条路,GOOGLE就是这么做的,实际上B/S理念还是不错的,为什么不再进一步,完全放弃HTTP的协议体系呢?现在是个变革时代,可能再过2年,很多WEB技术都要过时了
      

  12.   

    在考虑相同网络环境的情况下时,用户数访问的多少是一个决定性因素,如果一个服务器不论bs还是cs都只有少数的(比如个位数)客户端连接的话,是一样的,但是随着访问客户端增加,bs的server端同时处理的请求的量会很大,会造成延迟。相反,cs的程序上client负责处理业务请求,分担了server的某些压力,所以会觉着cs模式下的程序比较快~~ 
    个人拙见 还望赐教 呵呵~~
      

  13.   

    我认为这个与BS或CS无关.试想:一次性提取万条记录,用户能没等待的心理准备吗?
    使用进度条或者分页.