http://CC318.com

一个程序的窝

我的窝窝 http://CC318.com 这里有更多内容,不信你试试.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在2.0 中对数据集序列化和反序列化的方法进行了一下简单的封装,使其可以得到重用的效果.见下面的类DatFormatter.

通 过GetBinaryFormatData方法可以转换数据集为二进制,在服务器端使用,转换数据集格式。发送,客户端接收,得到二进制格式数据,使用 RetrieveDataSet方法,反序列化,得到数据集,进行客户端操作。通过这些简单的操作(序列化和反序列化,将数据压缩),可以使数据集等体积 庞大的对象在远程传递中的时间大大减少,并且可以减少网络中断等问题对程序的影响。


using System;
using System.IO;
using System.Data;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace Common
{
public class DataFormatter
{
private DataFormatter() { }
/**//// <summary>
/// Serialize the Data of dataSet to binary format
/// </summary>
/// <param name="dsOriginal"></param>
/// <returns></returns>
static public byte[] GetBinaryFormatData(DataSet dsOriginal)
{
byte[] binaryDataResult = null;
MemoryStream memStream = new MemoryStream();
IFormatter brFormatter = new BinaryFormatter();
dsOriginal.RemotingFormat = SerializationFormat.Binary;

brFormatter.Serialize(memStream, dsOriginal);
binaryDataResult = memStream.ToArray();
memStream.Close();
memStream.Dispose();
return binaryDataResult;
}
/**//// <summary>
/// Retrieve dataSet from data of binary format
/// </summary>
/// <param name="binaryData"></param>
/// <returns></returns>
static public DataSet RetrieveDataSet(byte[] binaryData)
{
DataSet dataSetResult = null;
MemoryStream memStream = new MemoryStream(binaryData);
IFormatter brFormatter = new BinaryFormatter();

object obj = brFormatter.Deserialize(memStream);
dataSetResult = (DataSet)obj;
return dataSetResult;
}
}
}
http://CC318.com