您的位置:首页 > 其它

DataSet高性能数据传输方式的实现

2006-10-10 16:15 555 查看
客户端调用

//直接dataset
protected void Button2_Click(object sender, EventArgs e)
{
DateTime start = DateTime.Now;
GetData.GetData g=new GetData.GetData();
object obj = g.GetItems();
DataSet ds = (DataSet)obj;
this.GridView1.DataSource = ds.Tables[0].DefaultView;
this.GridView1.DataBind();
TimeSpan t1 = new TimeSpan(start.Ticks);
TimeSpan t2 = new TimeSpan(DateTime.Now.Ticks);
TimeSpan ts = t2.Subtract(t1).Duration();
Response.Write(ts.ToString());
}
//序列化
protected void Button3_Click(object sender, EventArgs e)
{
DateTime start = DateTime.Now;
GetData.GetData g = new GetData.GetData();
byte[] bytes = g.getItemsBytes();

using (MemoryStream ms = new MemoryStream(bytes))
{
IFormatter f = new BinaryFormatter();
object obj = f.Deserialize(ms);
DataSet ds = (DataSet)obj;
this.GridView1.DataSource = ds.Tables[0].DefaultView;
this.GridView1.DataBind();
TimeSpan t1 = new TimeSpan(start.Ticks);
TimeSpan t2 = new TimeSpan(DateTime.Now.Ticks);
TimeSpan ts = t2.Subtract(t1).Duration();
Response.Write(ts.ToString());
}
}

服务器端提供:

[WebMethod]
public byte[] getItemsBytes()
{
DataSet ds = GetItems();
ds.RemotingFormat = SerializationFormat.Binary;
using (MemoryStream ms = new MemoryStream())
{
IFormatter f = new BinaryFormatter();
f.Serialize(ms, ds);
return ms.ToArray();
}
}
[WebMethod]
public DataSet GetItems()
{
DataSet ds = new DataSet();
DataTable dt = new DataTable("TB_test");
dt.Columns.Add("ID", typeof(System.Int32));
dt.Columns.Add("Name", typeof(System.String));
for (int i = 0; i < 50000; i++)
{
DataRow dr = dt.NewRow();
dr["ID"] = i;
dr["Name"] = "name" + i.ToString();
dt.Rows.Add(dr);
}
ds.Tables.Add(dt);

return ds;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: