博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
    串行化数据读取类实现了IXmlSerializable接口,实现了.NET 1.0下的WebService大数据量传输,是DataSet类的一个高性能的替代类。由于SerialDataReader类采用DataReader从数据库提取数据,大大的降低了大数据量的情况下IIS服务器的内存压力。
根据实际测试,相同的数据的情况下,SerialDataReader实际传输数据量是DataSet的1/2左右,传输速度相比较DataSet大概能提高大约1倍左右。另外,CompressSerialDataReader类提供了数据压缩处理,性能上更加强悍,如果使用CompressSerialDataReader,相同数据量的情况下能比DataSet快5倍。
    无论是SerialDataReader类还是CompressSerialDataReader类都提供了客户端异步读取数据的能力,能够保证调用WebMethod时能够一边传输数据一边往UI上填充数据。
    PS:最佳实践是在SerialDataReader的DataRowTransported事件中不要填充UI,而是将数据缓存,在UI线程中通过同步对象循环的读取数据,这样能够获得比响应事件来填充数据快将近一倍。
例子代码:
在UI线程中
While(true)
{
    if ( hasData )
    {
        FillData();
    }
    //保证可以响应事件
    Application.DoEvent();
}
在传输线程中:
OnDataTransported()
{
   SyncLock( Buffer )
  {
     Buffer.Add( Data );
  }
}
如果在使用上有什么疑问,欢迎来信咨询,我的邮箱zengezenge@hotmail.com
源代码下载地址
https://files.cnblogs.com/zengezenge/SerialDataReader.rar