基於.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、哪位兄弟姐妹有好的解決方案,能否告知一下。不勝感激!分數不夠的話,另開貼奉上。
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、哪位兄弟姐妹有好的解決方案,能否告知一下。不勝感激!分數不夠的話,另開貼奉上。
不知是這個問題太簡單了還是什么原因,CSDN上的高手不屑於出手嗎?自己再頂,等高手出現。能夠給點分析也好啊。
終於有兩位出來說話了。高人難等啊.......上面兩位是理想狀態,我現在的情況是,頁面上有一個查詢按鈕,是按條件來查詢的,如果什么條件都不輸的話,是希望全部顯示,而全部顯示出來的數據就有10多萬條。以致於出錯啦。當然,選擇條件顯示自然不會出錯嘍。不過,yan63(silence like a cancer grows)的意思,是否直接在數據庫中就分好頁,再傳輸?能否說詳細點,或者直接給個代碼說明......
不传dataset,去掉Schema存成xml
接收用dataset读。
---------------------------------------
就算是winform,也没有这么显示数据的做法,如果是webform,那服务器的负载更是可观,对于用户,估计得有上百只蜻蜓的复眼。
搜一下csdn上大数据量分页显示的帖子,很多的
像你说的这种情况,返回记录集的前10-15条就可以了,更多的数据可以在用户翻页的时候再传
zip的压缩,对xml等文本类文件的压缩比较理想,对二进制作用不大(相对)
2 数据量大的话,逻辑层和web service都要做分页
還是說如果數據量較小的話,干脆不壓縮還好一些?
講得有道理,兄臺似乎也對Remoting深有研究,能否留下聯系方式,交流一下。
呵呵..
是top N之類嗎?
將DataSet分解?分次傳輸?客戶端再組合?
沒有很看懂?可否詳細點?
我傳遞的數據是用的二進制,只是分頁的時候,我直接用的gridview,邦定objectDataSource。分頁傳送,如今似乎改動太大的了。不是嗎?
或者兄弟有沒有現成demo學習借劍下。
呵呵。
確實可以傳輸過來15000條左右,但速度是“驚人的”,不敢這樣子。@ttjacky(豆豆糖)
沒辦法,剛開始是不顯示一條記錄,被用戶發現說不能這樣子。呵呵.......
我使用的是NZipLib出現問題,后下載了7z組件,也出現問題。
直到如今,這種辦法看來是行不通的,所以我已改用分頁傳輸了。如果你真壓縮成功過,給我一個demo,行嗎?我再看看,謝謝![email protected]
http://blog.csdn.net/zlc810821/archive/2005/02/25/301855.aspx
或类似的文章,很多的
如果在本地调用没有问题,再考虑部署到remoting环境中。
前提是你先把dataset序列化为xml文本...(-_#)或者考虑一下其他二进制压缩的算法
支持用这个。是在自定义层压缩加密
至于DataSet能否压缩。其实不是这么区分的。序列化地都可以。里面其实是在formatter之后进行的自定义处理。处理的是流。所以只要能序列话的。至于是什么不重要吧。
沒辦法,剛開始是不顯示一條記錄,被用戶發現說不能這樣子。呵呵.......
你可以显示呀,但也别显示1W条啊,100条就够了。