欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
WebService傳輸DataSet的一點(diǎn)想法和實(shí)踐
由于DS的體態(tài)豐腴,選用何種序列化就很多的選擇了,我嘗試過(guò)如下方法:

  1,    SOAPFomatter

  2, BinaryFomatter 

  3,SOAPFomatter + SharpZipLib

  4,BinaryFomatter + SharpZipLib

  5, DataSetSurrogate (http://support.microsoft.com/default.aspx?scid=kb;en-us;829740)

  6, DataSetSurrogate + SharpZipLib

  7, PAB.CompressDataSet.Wrapper (http://www.eggheadcafe.com/articles/20031219.asp)

若論壓縮效果,第7種辦法是最優(yōu)秀的,第2名是第6種辦法。

若論速度,第7種和第6種幾乎差不多。。。(最快的好像是第2種)

PAB.CompressDataSet.Wrapper 據上文所說(shuō),乃是通過(guò)反向工程.NET Compact Framework而得到的壓縮代碼,我估計它也采用了類(lèi)似于DataSetSurrogate那樣的替代對象來(lái)存儲。本來(lái)我是很傾向使用這個(gè)方法的,可惜這個(gè)咚咚沒(méi)有源碼(且DLL加了混淆)。。。而反觀(guān)第6種,我們則可以輕松坐擁全部源碼,所以最后我還是選擇了第6種辦法的。下面的一點(diǎn)代碼,可供各位曬笑:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Xml.Serialization;
using System.Data;
using ICSharpCode.SharpZipLib.Checksums;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;

/// <summary>
  /// 壓縮數據集
  /// </summary>
  /// <param name="ds"></param>
  /// <returns></returns>
  public static byte[] CompressDS(DataSet ds)
  {
   MemoryStream ms = new MemoryStream();
   ZipOutputStream zos = new ZipOutputStream(ms);
   zos.PutNextEntry(new ZipEntry(ds.DataSetName));   
   BinaryFormatter bf = new BinaryFormatter();
   DataSetSurrogate dss = new DataSetSurrogate(ds);
   bf.Serialize(zos, dss);
   zos.CloseEntry();
   zos.Close();
   byte[] ret = ms.ToArray();   
   ms.Close();
   return ret;
  }

  /// <summary>
  /// 解壓數據集
  /// </summary>
  /// <param name="byt"></param>
  /// <returns></returns>
  public static DataSet DecompressDS(byte[] byt)
  {
   MemoryStream ms = new MemoryStream(byt);
   BinaryFormatter bf = new BinaryFormatter();
   ZipInputStream zis = new ZipInputStream(ms);
   zis.GetNextEntry();   
   DataSetSurrogate dss = (DataSetSurrogate)bf.Deserialize(zis);
   zis.Close();
   ms.Close();
   DataSet ds = dss.ConvertToDataSet();
   return ds; 
  } 

基于SharpZipLib實(shí)現上面兩個(gè)函數后,DS壓縮的任務(wù)就完成了。BTW,VS2005里邊,.NET FW 自帶了CompressStream,我們可以跟SharpZipLib說(shuō)再見(jiàn)了:)

至于WS怎么傳輸,在CSDN上看到Tomgus (小橋流水) 老兄轉載的http://www.cnblogs.com/flyskywlh/archive/2005/08/18/217382.html,乃Flyskywlh老兄的大作。

     首先我也很同意使用byte[]數組傳輸,非常方便。至于具體WebMethod的方式,我在實(shí)際應用中是大量使用實(shí)體WebMthod的,比如:

[WebMethod]

public DataSet GetOrders() {};    //獲取所有訂單

 

[WebMethod]

public DataSet UpdateOrders(DataSet dsOrders){};     //更新指定訂單

 

因為采取這種模式,所以系統里邊有極多的WebMethod(WinformUI僅通過(guò)WS交互),一個(gè)標準WM的調用流程是:

客戶(hù)端壓縮WM中所有DS型的參數-〉調用WM-〉服務(wù)器端解壓所有DS型的參數-〉執行實(shí)際WM-〉對DS型的返回值進(jìn)行壓縮-〉客戶(hù)端接收并解壓得出結果DS

上述流程的具體實(shí)現很麻煩,在客戶(hù)端用了AOP的透明代理的概念;服務(wù)器端則用了動(dòng)態(tài)調用WS的技術(shù)。實(shí)現這種“雙代理”的模式后,對于WS端或Winform端,壓縮與不壓縮變得透明了,兩方面的程序員都不用再關(guān)心這個(gè)問(wèn)題了。而且我覺(jué)得“雙代理”還可以為我們處理其他很多的問(wèn)題,比如排隊,異步操作,權限等等。那位朋友||大拿||高人有興趣探討這個(gè)問(wèn)題的,小可甚喜!

 
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
初學(xué)Web Service筆記之怎樣提高WebService性能大數據量網(wǎng)絡(luò )傳輸處理 - 綠色的風(fēng) - 博客園
http://dampce032.iteye.com/blog/1553879
C# DataSet對象序列化并壓縮和反序列化及解壓縮
datatable序列化為byte[]
C# Form,Control 控件序列化
ListView控件的使用
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久