在Remoting中壓縮傳縮DataSet的解決方案
基於.NET Remoting的多層架構的一個問題:傳輸大量數據的DataSet時,出現
System.Runtime.Remoting.RemotingException: Server encountered an internal error. For more information, turn off customErrors in the server 's .config file.
我做過小小的統計,當我Select Top 10000條記錄或以下時,不會出錯,Select Top 20000就會出錯了。本人認為是傳輸有問題,想壓縮下再傳輸,根據網友zendy的 "实现一个压缩Remoting传输数据的Sink:CompressionSink "(http://www.cnblogs.com/caomao/archive/2005/07/29/202942.html) 卻出現了另一個錯誤:
System.Exception: System.FormatException: Header checksum illegal
at NZlib.Compression.Inflater.DecodeHeader() in D:\Hoplun\Compression\NZipLib\Compression\Inflater.cs:line 223
at NZlib.Compression.Inflater.Decode() in D:\Hoplun\Compression\NZipLib\Compression\Inflater.cs:line 397
at NZlib.Compression.Inflater.Inflate(Byte[] buf, Int32 off, Int32 len) in D:\Hoplun\Compression\NZipLib\Compression\Inflater.cs:line 671
at NZlib.Streams.InflaterInputStream.Read(Byte[] b, Int32 off, Int32 len) in D:\Hoplun\Compression\NZipLib\Streams\InflaterInputStream.cs:line 271
問題從今天上午搞到現在,沒有一點進展,現主要有疑問:
1、cnblogs上的zendy提供的解決方案,是否不能壓縮DataSet?因為我使用Zendy提供的Demo,將其如我專案的一樣,將Remoting配置在IIS當中,也可以成功運行。所以有此懷疑。
2、如果要在Remoting中壓縮傳輸DataSet,應該如何做?注意項目很快就要上線使用,不可能再重寫一個擴展DataSet之類的啦!
3、我剛開始大於10000的數據就出錯的問題,是否真如我想的錯誤原因?
4、哪位兄弟姐妹有好的解決方案,能否告知一下。不勝感激!
分數不夠的話,另開貼奉上。
------解决方案--------------------对传输的记录进行分页
大数据量使用压缩不是优先的选择啊
------解决方案--------------------同上,要几条记录传几条记录
------解决方案--------------------你的带宽可能太小。。
不传dataset,去掉Schema存成xml
接收用dataset读。
------解决方案--------------------1 不要传dataset,把数据提取到逻辑层对象直接传
2 数据量大的话,逻辑层和web service都要做分页
------解决方案--------------------数据量大的话,带宽不够咋整都不行。
------解决方案--------------------不要用Remoting效率极其低下无论是二进制的还是Http的,只要返回的行数一多,肯定就不行(我以前在我的C/s程序做过实验),还是直接传DataSet吧,你就感到速度会提升一个数量级的
------解决方案--------------------楼上的看法都没有错误,但是楼主是项目要上马了,没时间改了。
先解决传输问题,如果压缩有问题,就先不要压缩,试试看在传输DataSet之前,将DataSet分解一下,每次读1000条数据,分次传输,每次传输一部分,客户端接收到了以后,再组合起来。
------解决方案--------------------数据10000以上 Remoting 受的了吧,呵呵,
压缩也是需要时间的,还有解压缩
估计是你的程序问题
------解决方案--------------------压缩是一个解决的办法,不知道LZ所采用的压缩方法或类库是什么,我曾经用ICSharpCode.SharpZipLib对DataSet进行压缩,经过实验,数据压缩的比例在1:10到1:6之间,对大数量传输的作用是相当明显的。到目前为止,尚未发现压缩和解压出现问题。
------解决方案--------------------jinliangliu(KingNa) ( ) 信誉:100 2007-7-25 19:47:50 得分: 0
@ttjacky(豆豆糖)
沒辦法,剛開始是不顯示一條記錄,被用戶發現說不能這樣子。呵呵.......
你可以显示呀,但也别显示1W条啊,100条就够了。