Hi,
In the line of Method Extensions here is some Extensions for Cache and Session for ASP.NET.
These uses the Cache and Session Compression of my previous post.
Compression Extensions
public static class CompressionExtensions
{
/// <summary>
/// Compresses the specified data.
/// </summary>
/// <param name="data">The data.</param>
/// <returns></returns>
public static byte[] Compress(this byte[] data)
{
using (MemoryStream output = new MemoryStream())
{
using (DeflateStream def = new DeflateStream(output, CompressionMode.Compress))
{
def.Write(data, 0, data.Length);
}
return output.ToArray();
}
}
/// <summary>
/// Decompresses the specified data.
/// </summary>
/// <param name="data">The data.</param>
/// <returns></returns>
public static byte[] Decompress(this byte[] data)
{
using (MemoryStream input = new MemoryStream())
{
input.Write(data, 0, data.Length);
input.Position = 0;
using (DeflateStream def = new DeflateStream(input, CompressionMode.Decompress))
{
using (MemoryStream output = new MemoryStream())
{
byte[] buff = new byte[64];
int read = -1;
read = def.Read(buff, 0, buff.Length);
while (read > 0)
{
output.Write(buff, 0, read);
read = def.Read(buff, 0, buff.Length);
}
def.Close();
return output.ToArray();
}
}
}
}
}
Cache Compression Extensions
public static class CacheExtensions
{
/// <summary>
/// Compress and Set Object in cache.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="cache">The cache.</param>
/// <param name="Key">The key.</param>
/// <param name="o">The o.</param>
public static void SetInCache<T>(this Cache cache, String Key, T o)
{
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
bf.Serialize(ms, o);
byte[] bts = ms.ToArray();
cache[Key] = bts.Compress();
}
}
/// <summary>
/// Decompress and Get Object from cache.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="cache">The cache.</param>
/// <param name="Key">The key.</param>
/// <returns></returns>
public static T GetFromCache<T>(this Cache cache, String Key)
{
if (cache[Key] == null)
return default(T);
byte[] bts = (byte[])cache[Key];
byte[] uncompressed = bts.Decompress();
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream(uncompressed))
{
T o = (T)bf.Deserialize(ms);
return o;
}
}
}
Session Compression Extensions
public static class SessionExtensions
{
/// <summary>
/// Compress and Set Object in Session.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="session">The session.</param>
/// <param name="Key">The key.</param>
/// <param name="o">The o.</param>
public static void SetInSession<T>(this HttpSessionState session, String Key, T o)
{
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
bf.Serialize(ms, o);
byte[] bts = ms.ToArray();
session[Key] = bts.Compress();
}
}
/// <summary>
/// Decompress and Get Object from Session.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="session">The session.</param>
/// <param name="Key">The key.</param>
/// <returns></returns>
public static T GetFromSession<T>(this HttpSessionState session, String Key)
{
byte[] bts = (byte[])session[Key];
byte[] uncompressed = bts.Decompress();
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream(uncompressed))
{
T o = (T)bf.Deserialize(ms);
return o;
}
}
}
Hope this Help's
Stay Tuned !
Views(1531)

