日韩亚洲欧美在线com|日本xxxx色视频在线播放|国产熟妇与子伦hd|欧美freesex黑人又粗又大|国产欧美日韩一区二区三区

服裝管理軟件開發注意事項(三)

 在提交數據的時候,我們需要每次進行權力檢查,那么緩存應用是個不錯的解決方案之一:

具體實現方式如下:

 

using System;
using System.Web;
using System.Web.Caching;

namespace NGuestBook.Utility
{
    
/// <summary>
    
/// 用于緩存操作
    
/// </summary>
    public sealed class CacheAccess
    {
        
/// <summary>
        
/// 將對象加入到緩存中
        
/// </summary>
        
/// <param name="cacheKey">緩存鍵</param>
        
/// <param name="cacheObject">緩存對象</param>
        
/// <param name="dependency">緩存依賴項</param>
        public static void SaveToCache(string cacheKey, object cacheObject, CacheDependency dependency)
        {
            Cache cache 
= HttpRuntime.Cache;
            cache.Insert(cacheKey, cacheObject, dependency);
        }

        
/// <summary>
        
/// 從緩存中取得對象,不存在則返回null
        
/// </summary>
        
/// <param name="cacheKey">緩存鍵</param>
        
/// <returns>獲取的緩存對象</returns>
        public static object GetFromCache(string cacheKey)
        {
            Cache cache 
= HttpRuntime.Cache;

            
return cache[cacheKey];
        }
    }
}

保存和取緩存

using System;
using System.Configuration;
using System.Reflection;
using System.Web;
using System.Web.Caching;
using NGuestBook.Utility;

namespace NGuestBook.Factory
{
    
/// <summary>
    
/// 依賴注入提供者
    
/// 使用反射機制實現
    
/// </summary>
    public sealed class DependencyInjector
    {
        
/// <summary>
        
/// 取得數據訪問層對象
        
/// 首先檢查緩存中是否存在,如果不存在,則利用反射機制返回對象
        
/// </summary>
        
/// <param name="className">數據訪問類名稱</param>
        
/// <returns>數據訪問層對象</returns>
        public static object GetDALObject(string className)
        {
            
/// <summary>
            
/// 取得數據訪問層名稱,首先檢查緩存,不存在則到配置文件中讀取
            
/// 緩存依賴項為Web.Config文件
            
/// </summary>
            object dal = CacheAccess.GetFromCache("DAL");
            
if (dal == null)
            {
                CacheDependency fileDependency 
= new CacheDependency(HttpContext.Current.Server.MapPath("Web.Config"));
                dal 
= ConfigurationManager.AppSettings["DAL"];
                CacheAccess.SaveToCache(
"DAL", dal, fileDependency);
            }

            
/// <summary>
            
/// 取得數據訪問層對象
            
/// </summary>
            string dalName = (string)dal;
            
string fullClassName = dalName + "." + className;
            
object dalObject = CacheAccess.GetFromCache(className);
            
if (dalObject == null)
            {
                CacheDependency fileDependency 
= new CacheDependency(HttpContext.Current.Server.MapPath("Web.Config"));
                dalObject 
= Assembly.Load(dalName).CreateInstance(fullClassName);
                CacheAccess.SaveToCache(className, dalObject, fileDependency);
            }

            
return dalObject;
        }

        
/// <summary>
        
/// 取得業務邏輯層對象
        
/// 首先檢查緩存中是否存在,如果不存在,則利用反射機制返回對象
        
/// </summary>
        
/// <param name="className">業務邏輯類名稱</param>
        
/// <returns>業務邏輯層對象</returns>
        public static object GetBLLObject(string className)
        {
            
/// <summary>
            
/// 取得業務邏輯層名稱,首先檢查緩存,不存在則到配置文件中讀取
            
/// 緩存依賴項為Web.Config文件
            
/// </summary>
            object bll = CacheAccess.GetFromCache("BLL");
            
if (bll == null)
            {
                CacheDependency fileDependency 
= new CacheDependency(HttpContext.Current.Server.MapPath("Web.Config"));
                bll 
= ConfigurationManager.AppSettings["BLL"];
                CacheAccess.SaveToCache(
"BLL", bll, fileDependency);
            }

            
/// <summary>
            
/// 取得業務邏輯層對象
            
/// </summary>
            string bllName = (string)bll;
            
string fullClassName = bllName + "." + className;
            
object bllObject = CacheAccess.GetFromCache(className);
            
if (bllObject == null)
            {
                CacheDependency fileDependency 
= new CacheDependency(HttpContext.Current.Server.MapPath("Web.Config"));
                bllObject 
= Assembly.Load(bllName).CreateInstance(fullClassName);
                CacheAccess.SaveToCache(className, bllObject, fileDependency);
            }

            
return bllObject;
        }
    }
}

 

 

 

 

 

主站蜘蛛池模板: 国产成人久久精品av| 亚洲色偷精品一区二区三区| 精品久久久无码人妻中文字幕| 狠狠躁夜夜躁人人爽天天不| 少妇内射兰兰久久| 日韩中文字幕一区在线观看 | 精品国产av一区蜜臀av| 欧美自拍另类欧美综合图片区| 亚洲色大成网站www永久麻豆| 欧美18videosex性欧美黑吊 | 欧美一区二区三区爽爽爽| 狠狠躁夜夜躁人人爽天天不| 一区二区日韩在线观看| 加勒比色综合久久久久久久久| 各处沟厕大尺度偷拍女厕嘘嘘| 亚洲一区二区三区久久| 少妇人妻无码永久免费视频| 99国产精品永久免费视频| 久久无码人妻丰满熟妇区毛片| 又大又黄又粗又爽的免费视频| 国产成人av一区二区三区在线观看| 性一交一乱一伦一| 欧美成aⅴ人高清怡红院| 日韩精品无码av中文无码版| 天美麻花果冻视频大全英文版| 亚洲欧美日韩人成在线播放| 国产精品国产自线拍免费软件| 国产成人精品三级麻豆| 精品国产三级a∨在线| 奇米色欧美一区二区三区在线| 欧美激情网页一区三区| 无码精品黑人一区二区三区| 国产在线不卡精品网站| 国产午夜精品一区二区三区老| 精品无码国产av一区二区三区| 最新国产精品剧情在线ss| 国产超碰无码最新上传| 亚洲自偷精品视频自拍| 成人亚洲a片v一区二区三区日本| 欧美人与动性行为视频| 久久久久爽爽爽爽一区老女人|