WebService中的DataSet序列化使用
2012-04-19 09:30
597 查看
服务端代码:
============================================================
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Xml;
using System.Data.SqlClient;
using System.Runtime.Serialization.Formatters.Binary;
using CompressDataSet;
using System.IO;
namespace WebService1
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod(Description = "获取DataSet,并进行操作")]
public bool BackUpUserTable(byte[] ds)
{
//获取用户传来的DataSet序列化 并反序列化
MemoryStream ms = new MemoryStream(ds);
BinaryFormatter bf = new BinaryFormatter();
Object o = bf.Deserialize(ms);
DataSetSurrogate dss = (DataSetSurrogate)o;
DataSet dataSet = dss.ConvertToDataSet();
//自定义操作内容
// ***
return false;
}
}
}
客户端代码:
================================================================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CompressDataSet;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace WindowsClient
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 更新服务端数据库方法
/// </summary>
/// <param name="userName"></param>
public void UpdateInfo()
{
//封装DataSet
DataSet ds = new DataSet();
DataTable table = new DataTable();
table.Columns.Add("a");
table.Columns.Add("b");
table.Columns.Add("c");
for (int i = 0; i < 10; i++)
{
DataRow row = table.NewRow();
row["a"] = i.ToString() + "a";
row["b"] = i.ToString() + "b";
row["c"] = i.ToString() + "c";
}
//把DataSet序列化
DataSetSurrogate dss = new DataSetSurrogate(ds);
MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, dss);
//把流装到数组里
byte[] io = ms.ToArray();
//调用WebService
ServiceReferenceUserService.Service1SoapClient userService = new WindowsClient.ServiceReferenceUserService.Service1SoapClient();
//操作
if (userService.BackUpUserTable(io))
{
MessageBox.Show("成功!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
============================================================
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Xml;
using System.Data.SqlClient;
using System.Runtime.Serialization.Formatters.Binary;
using CompressDataSet;
using System.IO;
namespace WebService1
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod(Description = "获取DataSet,并进行操作")]
public bool BackUpUserTable(byte[] ds)
{
//获取用户传来的DataSet序列化 并反序列化
MemoryStream ms = new MemoryStream(ds);
BinaryFormatter bf = new BinaryFormatter();
Object o = bf.Deserialize(ms);
DataSetSurrogate dss = (DataSetSurrogate)o;
DataSet dataSet = dss.ConvertToDataSet();
//自定义操作内容
// ***
return false;
}
}
}
客户端代码:
================================================================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CompressDataSet;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace WindowsClient
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 更新服务端数据库方法
/// </summary>
/// <param name="userName"></param>
public void UpdateInfo()
{
//封装DataSet
DataSet ds = new DataSet();
DataTable table = new DataTable();
table.Columns.Add("a");
table.Columns.Add("b");
table.Columns.Add("c");
for (int i = 0; i < 10; i++)
{
DataRow row = table.NewRow();
row["a"] = i.ToString() + "a";
row["b"] = i.ToString() + "b";
row["c"] = i.ToString() + "c";
}
//把DataSet序列化
DataSetSurrogate dss = new DataSetSurrogate(ds);
MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, dss);
//把流装到数组里
byte[] io = ms.ToArray();
//调用WebService
ServiceReferenceUserService.Service1SoapClient userService = new WindowsClient.ServiceReferenceUserService.Service1SoapClient();
//操作
if (userService.BackUpUserTable(io))
{
MessageBox.Show("成功!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
相关文章推荐
- WebService使用DataSetSurrogate压缩Dataset的序列化和解压反序列化传输 (转)
- WebService中Dataset的压缩序列化和解压反序列化(DataSetSurrogate的使用)
- WebService使用DataSetSurrogate压缩Dataset的序列化和解压反序列化传输
- WebService中Dataset的压缩序列化和解压反序列化(DataSetSurrogate的使用)
- WebService使用DataSetSurrogate压缩Dataset的序列化和解压反序列化传输
- WebService中Dataset的压缩序列化和解压反序列化 >> DataSetSurrogate的使用
- WebService中Dataset的压缩序列化和解压反序列化(DataSetSurrogate的使用)
- WebService使用DataSet -- 用BinaryFormatter 序列化减少流的大小
- webservice使用EF生成的model序列化问题
- 一个使用WebService xml和序列化对象的小例子(一)
- webservice---序列化和反序列化(针对网上DataSet优化)
- WebService中使用DataTable造成"无法序列化"的解决办法
- 使用json序列化类型为“ajax学习.DataSetComment+T_CommentDataTable”的对象时检测到循环引用。
- 使用WebService动态生成DataSet绑定到Reporting Services
- 使用WebService动态生成DataSet绑定到Reporting Services
- 使用json序列化类型为“ajax学习.DataSetComment+T_CommentDataTable”的对象时检测到循环引用。
- ASP.NET 使用Get方式请求WebService,并得到DataSet结果
- WebService中Dataset的压缩序列化和解压反序列化
- 转:使用WebService动态生成DataSet绑定到Reporting Services
- 使用Django与Piston构建RESTful WebService及Django