C WCF大資料量傳輸解決方案

2021-05-27 23:26:28 字數 4813 閱讀 9152

文章內容列表:

1. 場景:

2. 解決方案

3. wcf契約與服務實現設計靜態圖

4. wcf契約與服務實現設計詳細說明

6. 服務端啟動服務**:

7. 客戶端**

1. 場景:

wcf在網路傳輸中,大資料量傳輸造成網路阻塞,寬頻無法承受;

2. 解決方案

解決wcf在網路傳輸中的大資料量問題:

a.需要把相關資料序列化成位元組流,再對位元組流進行壓縮,再進行傳輸,到了客戶端再做反向操作便可獲得原始資料。

b.如果壓縮後的資料仍然較大時,可以再壓縮流後,再對流進行拆分即可。

(解決方案a圖)

(解決方案2)

3. wcf契約與服務實現設計靜態圖

4. wcf契約與服務實現設計詳細說明

契約介面詳細說明

服務類詳細說明

5. wcf契約與服務**實現:

契約**

契約**

1using system;

2using system.collections.generic;

3using system.linq;

4using system.runtime.serialization;

5using system.servicemodel;

6using system.text;

7/**日期:2008-04-16

9///來自:

10namespace wcfdatatransfers

1143

44  

45}46

實現契約服務**

實現契約服務**

1using system;

2using system.data;

3using system.runtime.serialization;

4using system.runtime.serialization.formatters.binary;

5using system.io;

6using system.io.compression;

7using system.collections.generic;

8using system.linq;

9using system.servicemodel;

10using system.text;

11/**日期:2008-04-16

13///來自:

14namespace wcfdatatransfers

1527

28        private byte buffer_all = null;

29        private byte buffer_currect = null;

30        private int get_buffer_length = 1000;

31        private long remain_length;

32        private memorystream stream;

33        /**

34        /// 生成乙個測試的資料集

35        ///

36        ///

37        private dataset inittestdataset()

38       

5152            ds.tables.add(table);

5354            return ds;

55       

56        }

57        /**

58        /// 初始化壓縮位元組流

59        ///

60        ///

61        private void initbuffers(dataset ds)

62       

76        /**

77        /// 提供內部使用壓縮字流的方法

78        ///

79        ///

80        ///

81        ///

82        private byte compression(byte data, compressionmode mode)

83       

95                else

96                while (l != 0);

112                    zip.close();

113                    return os.toarray();

114                }

115            }

116            catch

117           

121            finally

122           

125        }

126127        idatatransfers 成員#region idatatransfers 成員

128        /**

129        /// 獲取所有位元組流

130        ///

131        ///

132        public byte getallbuffer()

133       

138        /**

139        /// 設定壓縮後位元組流分塊,每一塊的大小

140        ///

141        ///

142        public void setbufferlength(int length)

143       

146        /**

147        /// 讀取壓縮後位元組流一塊,並提公升位元組流的位置

148        ///

149        ///

150        public bool readnextbuffer()

151       

162                else

163               

168169                bo = true;

170            }

171            else

172                bo = false;

173            return bo;

174          

175        }

176        /**

177        /// 獲取當前塊的位元組流

178        ///

179        ///

180        public byte getcurrentbuffer()

181       

188189        #endregion

190    }

191}

1926. 服務端啟動服務**:

static void main(string args)

7. 客戶端**

code

1 //例項化wcf客戶端

2            datatransfersclient client = new datatransfersclient();

3            memorystream stream = new memorystream();

4            byte buffer;

5            //獲取所用塊壓縮流,並組裝

6            while(client.readnextbuffer())

7           

11            stream.position = 0;

12            buffer= new byte[stream.length] ;

13            stream.read(buffer,0,buffer.length);

14            stream.close();

15            //解壓壓縮流

16            byte bytes = compression(buffer,compressionmode.decompress);

17            stream = new memorystream(bytes);

18            iformatter formatter = new binaryformatter();

19            //反序列化

20            dataset ds=(dataset) formatter.deserialize(stream);

21            stream.close();

22            this.datagridview1.datasource = ds;

23            this.datagridview1.datamember="test";

24            this.label1.text = ds.tables[0].rows.count.tostring();

25            client.close();

EXCEL大資料量匯出的解決方案

將web頁面上顯示的報表匯出到excel檔案裡是一種很常見的需求。潤幹報表的類excel模型,支援excel檔案資料無失真的匯入匯出,使用起來非常的方便。然而,當資料量較大的情況下,excel本身的支援最多65535行資料的問題便凸顯出來。下面就給出大資料量匯出到excel的解決方案。首先,對於資料...

C S程式對於大資料量瀏覽的解決方案

對於大資料量的使用者顯示,b s程式幾乎清一色的使用分頁的方式呈現,一般的,這種方式下使用者會檢視前幾頁的資料,當仍然沒有找到他所需要的資料時,他會選擇重新查詢。在c s下的程式中,使用分頁方式,受到了一些挑戰 一方面,老的滾動條給使用者留下了較好的體驗,在任何介面下都照搬分頁的方式顯示,會給客戶很...

測試json大資料量傳輸

最近考慮到專案以後可能需要在系統間大批量傳輸資料,一般肯定想到的是使用json,但是不確定json能不能支撐的住,所以測試下,很簡單 測試的model 對外http介面 http請求 測試結果 10萬條資料總共請求用時 1116 20萬條資料總共請求用時 611 30萬條資料總共請求用時 625 4...