petshop4.0详解四:PetShop之ASP.NET缓存
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-04-12
得调用者可以直接调用,而不用关心内部的实现方式。以CacheDependency工厂为例,我们需要为调用者提供获得AggregateCacheDependency对象的简便方法,因而创建了DependencyFacade类: public static class DependencyFacade { private static readonly string path = ConfigurationManager.AppSettings["CacheDependencyAssembly"]; public static AggregateCacheDependency GetCategoryDependency() { if (!string.IsNullOrEmpty(path)) return DependencyAccess.CreateCategoryDependency().GetDependency(); else return null; } public static AggregateCacheDependency GetProductDependency() { if (!string.IsNullOrEmpty(path)) return DependencyAccess.CreateProductDependency().GetDependency(); else return null; } public static AggregateCacheDependency GetItemDependency() { if (!string.IsNullOrEmpty(path)) return DependencyAccess.CreateItemDependency().GetDependency(); else return null; } } DependencyFacade类封装了获取AggregateCacheDependency类型对象的逻辑,如此一来,调用者可以调用相关方法获得创建相关依赖项的AggregateCacheDependency类型对象: AggregateCacheDependency dependency = DependencyFacade.GetCategoryDependency(); 比起直接调用DependencyAccess类的GetDependency()方法而言,除了方法更简单之外,同时它还对CacheDependencyAssembly配置节进行了判断,如果其值为空,则返回null对象。 在PetShop.Web的App_Code文件夹下,静态类WebUtility的GetCategoryName()和GetProductName()方法调用了DependencyFacade类。例如GetCategoryName()方法: public static string GetCategoryName(string categoryId) { Category category = new Category(); if (!enableCaching) return category.GetCategory(categoryId).Name; string cacheKey = string.Format(CATEGORY_NAME_KEY, categoryId); // 检查缓存中是否存在该数据项; string data = (string)HttpRuntime.Cache[cacheKey]; if (data == null) { // 通过web.config的配置获取duration值; &nbs |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于petshop4.0详解四:PetShop之ASP.NET缓存的所有评论