【散分】顺便问个WebService传输大数据量的问题

wangping_li 2008-12-15 09:49:23

WebService传输大数据量时的问题,我测试传输10W通过RemotingFormat来序列化,传输到客户端直到绑定到dataGridView上要17S,但是CPU占用非常厉害.后来将序列化的二进制数据进行压缩再传输,好像效果也不是很明显.不知道大家有没有好点的办法
我传输大数据量实在是业务需要,并不是要显示这么多给客户看的,所以就不说分页之类的哈,关键时有没有办法解决CPU占用问题,望高人指点迷津啊,不胜感激!!!!
YY一下:好像网上有个挺流行的名字:张茆,今天突然看到有人说:名字好啊,"茆"字,花字无底,柳字无边,简直就是"残花败柳"
...全文
802 54 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
54 条回复
切换为时间正序
请发表友善的回复…
发表回复
funstar888 2011-03-10
  • 打赏
  • 举报
回复
sorry,刚才打错了,压缩二进制,然后客户端分段多线程拼接
funstar888 2011-03-10
  • 打赏
  • 举报
回复
客户端分段多纯种拼接
wangping_li 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 51 楼 CloneCenter 的回复:]
引用 46 楼 wangping_li 的回复:
引用 44 楼 CloneCenter 的回复:
CPU的占用率居高不下,应该是在 Web Service 序列化数据的时候出现的。排除其他方法,可以考虑减少一下数据量,将需要的数据分段传输。比如,第一次传第一天的数据,第二次传第二天的数据,直到数据传输完成为止。

我也这么想的,但是客户一次性要把一个月的订单全打印出来,也就是这些数据要传给报表控件处理的
如果一次性传一点的就得很N次打了,客户…
[/Quote]
如果像你说的这样的话,CUP下来了,那时间又上去了
CloneCenter 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 46 楼 wangping_li 的回复:]
引用 44 楼 CloneCenter 的回复:
CPU的占用率居高不下,应该是在 Web Service 序列化数据的时候出现的。排除其他方法,可以考虑减少一下数据量,将需要的数据分段传输。比如,第一次传第一天的数据,第二次传第二天的数据,直到数据传输完成为止。

我也这么想的,但是客户一次性要把一个月的订单全打印出来,也就是这些数据要传给报表控件处理的
如果一次性传一点的就得很N次打了,客户说不行,哪怕是500页,他也要一次性…
[/Quote]
数据通过内部方法多传递几次,然后在客户端将这些读取到的数据合并起来,交给打印控件。对客户来说,是一次性结束的。
wangping_li 2008-12-15
  • 打赏
  • 举报
回复
up
wangping_li 2008-12-15
  • 打赏
  • 举报
回复
没人来啊,散分也没人接.是不是分太少了?
下班结贴哈
byte377 2008-12-15
  • 打赏
  • 举报
回复
UP JF
wangping_li 2008-12-15
  • 打赏
  • 举报
回复
To:yuwenge
我就是二进制序列化再压缩的,其实在时间问题上我倒是可以接受,就是有没有什么办法减轻下CPU负担?
如果输转那10几秒CPU基本上是100%,我想的是能控制在70%~80也好很多
angker2008 2008-12-15
  • 打赏
  • 举报
回复
怀着谦虚的心来学习。。记得给分就是
xxyping 2008-12-15
  • 打赏
  • 举报
回复
晕,来晚喽
wangkk125 2008-12-15
  • 打赏
  • 举报
回复
不懂
顶下先
qiying1988 2008-12-15
  • 打赏
  • 举报
回复
10分
shikongmocheng 2008-12-15
  • 打赏
  • 举报
回复
WEB Service 下实现大数据量的传输
http://www.cnblogs.com/hhq80/archive/2007/03/15/675872.html
卧_槽 2008-12-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wangping_li 的回复:]
引用 3 楼 jinjazz 的回复:
cup是客户端还是服务器端?你不要直接往控件上榜定,评定webservice的性能直接用测试工具打开,客户端邦定如果数据很多也是很费资源的。另外压缩只能减轻传输压力,对于cpu占有是增加负担的。你还是先找出什么导致cpu高占有率。

CPU是服务端,客户端还好.主要是服务端序列化的时候,我在想如果在做这个事情的时候同时又有很多人访问的话就挂掉了
我也觉得压缩会给CUP增加负担,所以现在去掉了.我觉…
[/Quote]
觉得cpu复旦大就申请买个好机器。
大头_衍 2008-12-15
  • 打赏
  • 举报
回复
学习!!
卧_槽 2008-12-15
  • 打赏
  • 举报
回复
webservice需要自己实现二进制序列化,然后再压缩一下。
.net自带了加密压缩的类库,自己找找。网上也有相关现成的类。
在客户端再自己实现解压和反序列化。

一般文字信息可以达到90%的压缩比。10m以内数据的压缩和解压几乎感觉不到,相对于网络传输占用的时间而言。

这样做可以说让webservice也达到了remoting的传输效率,如果你有空,还可以做一下压缩后的加密,安全性又上一个台阶了。
wangping_li 2008-12-15
  • 打赏
  • 举报
回复
谢谢gomoku的意见,我去试下
fellowcheng 2008-12-15
  • 打赏
  • 举报
回复
up
gomoku 2008-12-15
  • 打赏
  • 举报
回复
1. Better to use NetTcpBinding, which uses binary message encoding.
2. If you use Http binding, then you can use MTOM (Message Transmission Optimization Mechanism), which reduces the overhead of encoding:


<wsHttpBinding>
<binding name="myHttpBinding" messageEncoding="Mtom" />
</wsHttpBinding>
wangping_li 2008-12-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhnzzy 的回复:]
我弄过的WEB SERVIVE传数据给报表打印,好像超过400多页就不太灵了.也就是先序列化后给他传了
[/Quote]
我就是传输给报表打印的,控件内部自带了分页的,所以我就得把我的数据全取给它.如果一次少取些的话那样用户要打印N次,操作不方便用户肯定不接受的.我也用surrogatesample试过,都感觉差不多,主要是CPU占有率的问题,客户端接收数据还好办,开个线程慢慢跑.那也快的
加载更多回复(34)

111,096

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧