学到的一种把数据集序列化为本地文件的方法

对于需要频繁访问的数据,可以在用户第一次访问该数据的时候将其序列化为本地文件,这样,用户再次访问该数据的时候就无需再次访问数据库,而是直接将本地文件反序列化为数据集,这样能大大的优化系统的性能。

实现序列化和反序列化的类:

 1 using System;
 2 using System.Data;
 3 using System.Configuration;
 4 using System.Web;
 5 using System.Web.Security;
 6 using System.Web.UI;
 7 using System.Web.UI.WebControls;
 8 using System.Web.UI.WebControls.WebParts;
 9 using System.Web.UI.HtmlControls;
10 using System.Runtime.Serialization;
11 using System.IO;
12 using System.Runtime.Serialization.Formatters.Binary;
13 
14 /// <summary>
15 /// Summary description for FileIO
16 /// </summary>
17     public class FileIO<T>
18     {
19         public void Serialize(T items, string sFile)
20         {
21             IFormatter formatter = new BinaryFormatter();
22 
23             Stream stream = new FileStream(HttpContext.Current.Server.MapPath(sFile), FileMode.Create,
24             FileAccess.Write, FileShare.None);
25             formatter.Serialize(stream, items);
26             stream.Close();
27         }
28 
29         public T Deserialize(string sFile)
30         {
31             IFormatter formatter = new BinaryFormatter();
32             Stream stream = new FileStream(HttpContext.Current.Server.MapPath(sFile), FileMode.Open,
33             FileAccess.Read, FileShare.Read);
34             T items = (T)formatter.Deserialize(stream);
35             stream.Close();
36             return items;
37         }
38     }
39 

将数据集序列化为本地文件时,需在本地新建一个BIN文件,即新建一个文本文件,然后把文本文件的后缀名"txt"改为"bin"

     DataSet dsList = new DataSet()
     
//填充数据集
        FileIO<DataSet> file = new FileIO<DataSet>();
        file.Serialize(dsList, 
"cache/cache.bin"); //序列化缓存
        Cache["mDS"= dsList; 

读取本地文件

     FileIO<DataSet> file = new FileIO<DataSet>();
            ds 
= file.Deserialize("cache/cache.bin");

参考:http://www.cnblogs.com/eicesoft/archive/2007/09/11/889654.html

 

posted @ 2007-09-13 14:43  Async Liu  阅读(406)  评论(0编辑  收藏  举报