Enterprise Library 2.0 Hands On Lab 翻译(10):缓存应用程序块(二)

简介:
练习2:持久缓存
该练习将示范如何持久缓存。
 
第一步
打开EmployeeBrowser.sln 项目,默认的安装路径应该为C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Caching\exercises\ex02\begin,并编译。
 
第二步 实现离线缓存
1 .在解决方案管理器中选择EmployeeServices.cs文件,选择View | Code菜单命令并添加如下命名空间。
using  Microsoft.Practices.EnterpriseLibrary.Caching.Expirations;
2 .定位到GetContactDetails方法,并添加如下代码。
public   static  EmployeesDataSet GetContactDetails()

{
    EmployeesDataSet dsEmployees 
= null;

    
// TODO: Add persistent caching with time-out

    
// Attempt to retrieve from cache

    CacheManager cache 
= CacheFactory.GetCacheManager();

    dsEmployees 
= (EmployeesDataSet)cache[CACHE_KEY];

    
// Retrieve from dataProvider if not in Cache and Online

    
if (dsEmployees == null && ConnectionManager.IsOnline)

    
{

        EmployeeDataProvider dataProvider 
= new EmployeeDataProvider();

        dsEmployees 
= dataProvider.GetEmployees();

        
// Expire in 2 days

        AbsoluteTime expiry 
= new AbsoluteTime(new TimeSpan(2000));

        cache.Add(CACHE_KEY, dsEmployees,

            CacheItemPriority.High, 
null,

            
new ICacheItemExpiration[] { expiry });

    }


    
return dsEmployees;

}
3 .修改方法GetEmployeePhoto为如下代码,即离线时不尝试去获取信息。
public   static  Bitmap GetEmployeePhoto(Guid employeeId)

{
    
byte[] photoData = null;

    
// Attempt to retrieve from cache

    CacheManager cache 
= CacheFactory.GetCacheManager();

    photoData 
= (byte[])cache[employeeId.ToString()];

    
// TODO: Retrieve from dataProvider if not in Cache and Online

    
if (photoData == null && ConnectionManager.IsOnline)

    
{

        EmployeeDataProvider dataProvider 
= new EmployeeDataProvider();

        photoData 
= dataProvider.GetEmployeePhotoData(employeeId);

        cache.Add(employeeId.ToString(), photoData);

    }


    
// No data found.

    
if (photoData == null)

        
return null;

    
// Convert bytes to Bitmap

    
using (MemoryStream ms = new MemoryStream(photoData))

    
{
        
return new Bitmap(ms);
    }


}
 
第三步 配置持久缓存
1 .在解决方案管理器中选择项目EnoughPI的配置文件App.config文件,选择View | Open With…菜单命令,选择Enterprise Library Configuration并单击OK按钮。
2 .选择Caching Application Block | Cache Managers | Cache Manager节点,选择Action | New | Isolated Storage菜单命令。
3 .设置属性PartitionNameEmployeeBrowser
PartitionName 允许多个缓存共享相同的物理存储位置。
4 .保存应用程序配置。
 
第四步 运行应用程序
1 .选择Debug | Start Without Debugging菜单命令运行应用程序。浏览少量的雇员信息employees加载到缓存中,不要浏览所有的雇员信息。
2 .在解决方案管理器中选择ConnectionManager.cs,选择View | Code菜单命令,在下面的代码中修改IsOnline属性的值。
static   public   bool  IsOnline

{

    
get return false; }

}
3 .选择Debug | Start Without Debugging菜单命令运行应用程序。现在应用程序处于离线状态并没有连接数据库。
4 .关闭应用程序和Visual Studio.NET
 
更多Enterprise Library的文章请参考《Enterprise Library系列文章















本文转自lihuijun51CTO博客,原文链接: http://blog.51cto.com/terrylee/67641  ,如需转载请自行联系原作者


相关文章
|
8月前
|
缓存 Java 数据库
优化您的Spring应用程序:缓存注解的精要指南
优化您的Spring应用程序:缓存注解的精要指南
129 0
|
8月前
|
缓存 监控 中间件
中间件Cache-Aside策略应用程序直接与缓存和数据库进行交互
【5月更文挑战第8天】中间件Cache-Aside策略应用程序直接与缓存和数据库进行交互
94 4
|
8月前
|
存储 缓存 移动开发
HTML5 应用程序缓存
HTML5的离线缓存(Application Cache)允许网页存储资源以实现离线访问。通过manifest文件指定缓存内容和更新规则,比如列出要缓存的HTML、CSS、JS和图片。在HTML中引用manifest文件后,浏览器会根据文件变化更新缓存。但要注意,应用缓存不自动更新,需手动修改manifest触发,并且现代Web开发更多使用服务工作者(Service Workers)替代,以获得更优的离线体验和更新策略。
|
存储 缓存 数据库
极速Python编程:利用缓存加速你的应用程序
在软件开发中,缓存是一种常用的技术,用于提高系统性能和响应速度。Python提供了多种缓存技术和库,使我们能够轻松地实现缓存功能。本文将带您从入门到精通,逐步介绍Python中的缓存使用方法,并提供实例演示。
321 0
|
存储 缓存 移动开发
前端开发面试题—HTML5应用程序缓存 (离线存储)
今天分享一下我遇到的前端面试题,什么是HTML5应用程序缓存 (离线存储) ?
272 0
前端开发面试题—HTML5应用程序缓存 (离线存储)
|
缓存 前端开发 JavaScript
前端培训-中级阶段(23)- Manifest ApplicationCache应用程序缓存(2019-10-31期)
前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。
187 0
前端培训-中级阶段(23)- Manifest  ApplicationCache应用程序缓存(2019-10-31期)
|
缓存 Java
面经 - 【多线程】在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
面经 - 【多线程】在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
444 0
|
缓存 区块链 Windows
应用程序图标设置 系统图标缓存问题
应用程序图标设置 系统图标缓存问题
202 0
|
21天前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
166 85
|
3月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
88 6