web service下實(shí)現(xiàn)大數(shù)據(jù)量的傳輸_第1頁
web service下實(shí)現(xiàn)大數(shù)據(jù)量的傳輸_第2頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 ,設(shè)置RemotingFormat = 再序列化,通過WebService 傳輸,客戶端接收,再反序列化,確實(shí)效果大大的優(yōu)于直接傳送DataSet,不僅網(wǎng)絡(luò)傳輸中如此,即下面分別WebService 里面的方法和客戶端反序列化取 DataSet 的方法1. 服務(wù)器上面取數(shù)據(jù),填充數(shù)據(jù)集,轉(zhuǎn)換為二進(jìn)制格式/Methodforusersdataquerywith/param/publicbyteBinaryUserSelect(refstringmandStringBuilder.Append(SELECT*FROMt_Users;); DataSet dsResult = new DataSe

2、t();上面都是取數(shù)據(jù)的,無需關(guān)心.二進(jìn)制壓縮數(shù)據(jù)集是下面一小段 MemoryStream ms = new MemoryStream(); IFormatter bf = new BinaryFormatter(); bf.Serialize(ms, dsResult);catch (Exception err=return2. 通過WebService把byte格式的數(shù)據(jù)發(fā)送到客戶端,這里就是WebService自己的事情了3.客戶端接收到 byte格式的數(shù)據(jù),對其進(jìn)行反序列化,得到數(shù)據(jù)集,進(jìn)行客戶端操作/GetuserdatawithBinary/publicDataSetstringe

3、rr=bytebUserData=svc.ByteArrayUserSelect(/publicDataSetstringerr=bytebUserData=svc.ByteArrayUserSelect(referr); if (err != )err = ;returnMemoryStreamms=newMemoryStream(bUserData); IFormatter bf = new BinaryFormatter();object obj = bf.Deserialize(ms); return同樣一臺機(jī)器,手工生成 12000 條數(shù)據(jù),在本地使用 WebService 分、傳輸

4、并在客戶端顯示數(shù)據(jù)集和 byte格式的數(shù)據(jù) 傳輸?shù)牟顒e尚且如此,通過網(wǎng)絡(luò)傳輸?shù)臅r間優(yōu)化自然會更明顯.net1.1 下面微軟提供DataSetSurrogate 開發(fā)地/default.aspx?scid=kb;en-us;829740 DataSetSurrogate 在.net址 web service 端(文件形式)publicvoidSurrogateReadTable(string/DataSet通過SurrogateClassBinaryDataSetmandType.Text,select * from /實(shí)例DataSetSurrogate,傳取出的 DATASET 到構(gòu)造函sd

5、s=new/實(shí)例化二進(jìn)制StreamWriter swDat;/寫到本地一個文件bf.Serialize(swDat.BaseStream, sds);/這里可以知道序列/寫到本地一個文件bf.Serialize(swDat.BaseStream, sds);/這里可以知道序列化后的文件的privatevoidder,System.EventArgs/反序列化BinaryStream能通過SurrogateClass/從WEBSERVICEStreamReader swDat;object o=bf.Deserialize(swDat.BaseStream);DataSetsds = (Dat

6、aSetSurrogate) o; webservice端(Byte方式public byte SurrogateRead1()DataSet ds; sds=newDataSetSurrogate(ds); MemoryStream s= new MemoryStream(); BinaryFormatterbf=newBinaryFormatter();bytee=returnprivatevoidder,System.EventArgs/*bytee=returnprivatevoidder,System.EventArgs/*反序列化BinaryStream能通過SurrogateCl

7、ass/從WEBSERVICEbyte vBinaryFormatterbf=newBinaryFormatter(); object o=bf.Deserialize(br);sds = (DataSetSurrogate) o; 我個人覺得用 byte方式會安全些,畢竟不用在客戶端產(chǎn)生文件,不用擔(dān)心數(shù)據(jù)的安2.0 中對數(shù)據(jù)集序列化和反序列化的方法進(jìn)行了一下簡單的封裝,使其可以得到重用的效果.見下面的類通過方法可以轉(zhuǎn)換數(shù)據(jù)集為二進(jìn)制,在服務(wù)器端使用,轉(zhuǎn)換數(shù)據(jù)集格式。發(fā)送,客戶端接收,得到二制格式數(shù)據(jù),使用 方法,反序列化,得到數(shù)據(jù)集,進(jìn)行客戶端操作。通過這些簡單的操作(序列化和反化,將數(shù)據(jù)壓

8、縮),可以使數(shù)據(jù)集等體積龐大的對象傳遞中的時間大大減少,并且可以減少網(wǎng)絡(luò)中斷等問題對程序的影usingusing34567893456789usingusingusingnamespacepublicclassprivateDataFormatter()/SerializetheDataofdataSettobinary/param/ bytebinaryDataResult=MemoryStream memStream = new MemoryStream(); IFormatter brFormatter = new BinaryFormatter(); binaryDataResult = memStream.ToArray();return/RetrievedataSetfromdataofbinary/param/icpublicDataSetRetrieveDataSet(byteDataSetdataSetResult=M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論