.net WebService 大数据量时性能的提高
1.直接返回DataSet对象
?
[WebMethod(Description = "直接返回DataSet对象")] public DataSet GetUserListDateSet() { SqlConnection sqlCon = new SqlConnection("Data Source=.,1444;Initial Catalog=StudyNet;Persist Security Info=True;User ID=**;Password=******"); SqlCommand cmd = new SqlCommand(); cmd.Connection = sqlCon; cmd.CommandText = "select * from T_User"; SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); return ds; }?
2.返回DataSet对象用Binary序列化后的字节数组
[WebMethod(Description = "返回DataSet对象用Binary序列化后的字节数组")] public byte[] GetUserListDateSetBytes() { DataSet ds = GetUserListDateSet(); //序列化 BinaryFormatter ser = new BinaryFormatter(); MemoryStream stream = new MemoryStream(); ser.Serialize(stream, ds); return stream.GetBuffer(); }
3.返回DataSetSurrogate对象用Binary序列化后的字节数组
[WebMethod(Description = "返回DataSetSurrogate对象用Binary序列化后的字节数组")] public byte[] GetUserListDateSetSurrogateBytes() { DataSet ds = GetUserListDateSet(); DataSetSurrogate dss = new DataSetSurrogate(ds); //序列化 BinaryFormatter ser = new BinaryFormatter(); MemoryStream stream = new MemoryStream(); ser.Serialize(stream, dss); return stream.GetBuffer(); }?
4.返回DataSetSurrogate对象用Binary序列化并Zip压缩后的字节数组
[WebMethod(Description = "返回DataSetSurrogate对象用Binary序列化并ZIP压缩后的字节数组")] public byte[] GetUserListDateSetSurrogateZipBytes() { DataSet ds = GetUserListDateSet(); DataSetSurrogate dss = new DataSetSurrogate(ds); //序列化 BinaryFormatter ser = new BinaryFormatter(); MemoryStream stream = new MemoryStream(); ser.Serialize(stream, dss); //压缩 return Compress(stream.ToArray()); } /// <summary> /// 压缩数据 /// </summary> /// <param name="data"></param> /// <returns></returns> public byte[] Compress(byte[] data) { MemoryStream ms = new MemoryStream(); GZipStream zipStream = new GZipStream(ms, CompressionMode.Compress); zipStream.Write(data, 0, data.Length);//将数据压缩并写到基础流中 zipStream.Close(); return ms.ToArray(); }
? 5.结果图
?