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

简介:
练习1:使用缓存应用程序块提高性能
该练习将示范如何使用企业库中的缓存应用程序块,并用它提高显示数据的速度。
 
第一步
打开EmployeeBrowser.sln 项目,默认的安装路径应该为C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Caching\exercises\ex01\begin,并编译。
 
第二步 在QuickStarts数据库中填充数据
运行批处理文件SetCachingHOL.bat,默认的安装位置为C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Caching\setup。这样会在QuickStarts数据库中创建Employees数据表并插入一些测试数据,以及创建相应的存储过程。默认的数据库服务器为(local)\SQLEXPRESS,如果需要修改请用记事本打开SetCachingHOL.bat,自行修改。
 
第三步 回顾应用程序
1 .该应用程序主要用来从数据库读取并浏览雇员的详细信息,作为应用程序的一部分,还可以浏览员工的照片信息。
2 .在项目EmployeeBrowser中选择MainForm.cs文件,选择View | Code菜单命令并定位到方法MainForm_Load中,窗体类通过EmployeeService获取数据来显示,而它使用EmployeeDataProvider来返回数据,如下图所示:
注意现在EmployeeService仅仅是EmployeeDataProvider的一个委托,我们将会在这里使用缓存应用程序块。
3 .在解决方案管理器中选择EmployeeDataProvider.cs文件,选择View | Code菜单命令并定位到GetEmployeePhotoData方法。注意这里对数据库的访问做了一秒钟的延迟。
4 .选择Debug | Start Without Debugging菜单命令运行应用程序。注意到这里在浏览雇员的照片时会有一定的延迟。
 
第四步 在EmployeeService类中实现缓存
1 .选择项目EmployeeBrowser,并选择Project | Add Reference…菜单命令,在弹出的对话框中选择Browse项,添加如下程序集。
Microsoft.Practices.EnterpriseLibrary.Caching.dll 
2 .在解决方案管理器中选择EmployeeService.cs文件,并选择View | Code菜单命令。
3 .在代码中添加如下命名空间。
None.gif using  Microsoft.Practices.EnterpriseLibrary.Caching;
4 .添加如下代码到方法GetEmployeePhoto中。
None.gif public   static  Bitmap GetEmployeePhoto(Guid employeeId)
None.gif
ExpandedBlockStart.gif
{
InBlock.gif    
byte[] photoData = null;
InBlock.gif
InBlock.gif    
// TODO: Add Caching of Photo
InBlock.gif
InBlock.gif    
// Attempt to retrieve from cache
InBlock.gif

InBlock.gif    CacheManager cache 
= CacheFactory.GetCacheManager();
InBlock.gif
InBlock.gif    photoData 
= (byte[])cache[employeeId.ToString()];
InBlock.gif
InBlock.gif    
// Retrieve from dataProvider if not in Cache
InBlock.gif

InBlock.gif    
if (photoData == null)
InBlock.gif
ExpandedSubBlockStart.gif    
{
InBlock.gif
InBlock.gif        EmployeeDataProvider dataProvider 
= new EmployeeDataProvider();
InBlock.gif
InBlock.gif        photoData 
= dataProvider.GetEmployeePhotoData(employeeId);
InBlock.gif
InBlock.gif        cache.Add(employeeId.ToString(), photoData);
InBlock.gif
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
// No data found.
InBlock.gif

InBlock.gif    
if (photoData == null)
InBlock.gif
InBlock.gif        
return null;
InBlock.gif
InBlock.gif    
// Convert bytes to Bitmap
InBlock.gif

InBlock.gif    
using (MemoryStream ms = new MemoryStream(photoData))
InBlock.gif
ExpandedSubBlockStart.gif    
{
InBlock.gif        
return new Bitmap(ms);
ExpandedSubBlockEnd.gif    }

InBlock.gif
ExpandedBlockEnd.gif}
该方法使用工厂模式,创建了一个 CacheManager的实例,它可以常驻内存或者存储于物理存储上,这取决于你的配置。 Items可以通过索引被移除,也可以通过 Add方法来增加。
5 .添加如下代码到ClearCache方法中,以便允许窗体来获取新的数据。
None.gif public   static   void  ClearCache()
None.gif
ExpandedBlockStart.gif
{
InBlock.gif    
// TODO: Clear Cache
InBlock.gif

InBlock.gif    CacheManager cache 
= CacheFactory.GetCacheManager();
InBlock.gif
InBlock.gif    cache.Flush();
InBlock.gif
ExpandedBlockEnd.gif}
该方法将从缓存中移除所有的条目。
 
第五步 使用企业库配置工具
1 .使用Enterprise Library配置工具配置应用程序,可以通过开始菜单打开该配置工具,选择所有程序| Microsoft patterns and practices | Enterprise Library | Enterprise Library Configuration,并打开App.config文件。或者直接在Visual Studio中使用该工具打开配置文件。
2 .在解决方案管理器中选中App.config文件,在View菜单或者在右键菜单中选择Open With…,将打开OpenWith对话框,单击Add按钮。
3 .在Add Program对话框中,设置Program name指向EntLibConfig.exe文件,默认的路径为C:\Program Files\Microsoft Enterprise Library January 2006\bin,设置Friendly nameEnterprise Library Configuration,单击OK按钮。
Visual Studio 会把配置文件(App.config)作为一个命令行参数传递给EntLibConfig.exe
4 .在Open With对话框中,选中Enterprise Library Configuration并单击OK按钮。
 
第六步 配置应用程序
1 .右击应用程序并选择New | Caching Application Block
2 .选择Caching Application Block | Cache Managers | Cache Manager节点,可以通过修改这里的一些设置来提高缓存的性能,暂时先保留默认值。
3 .选择File | Save All保存应用程序配置。
4 .在Visual Studio中打开App.config配置文件,现在App.config包含了一些刚才所做的关于缓存的配置,注意到backing storeNull Storage,缓存将存储在内存中。
 
第七步 运行应用程序
1 .选择Debug | Start Without Debugging菜单命令运行应用程序,注意观察浏览雇员照片数据性能上的提高。
2 .关闭应用程序和Visual Studio












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

相关文章
|
3月前
|
缓存 Java 数据库
优化您的Spring应用程序:缓存注解的精要指南
优化您的Spring应用程序:缓存注解的精要指南
49 0
|
2月前
|
存储 缓存 移动开发
HTML5 应用程序缓存
HTML5的离线缓存(Application Cache)允许网页存储资源以实现离线访问。通过manifest文件指定缓存内容和更新规则,比如列出要缓存的HTML、CSS、JS和图片。在HTML中引用manifest文件后,浏览器会根据文件变化更新缓存。但要注意,应用缓存不自动更新,需手动修改manifest触发,并且现代Web开发更多使用服务工作者(Service Workers)替代,以获得更优的离线体验和更新策略。
|
10月前
|
存储 缓存 数据库
极速Python编程:利用缓存加速你的应用程序
在软件开发中,缓存是一种常用的技术,用于提高系统性能和响应速度。Python提供了多种缓存技术和库,使我们能够轻松地实现缓存功能。本文将带您从入门到精通,逐步介绍Python中的缓存使用方法,并提供实例演示。
229 0
|
存储 缓存 移动开发
前端开发面试题—HTML5应用程序缓存 (离线存储)
今天分享一下我遇到的前端面试题,什么是HTML5应用程序缓存 (离线存储) ?
204 0
前端开发面试题—HTML5应用程序缓存 (离线存储)
|
缓存 Java
面经 - 【多线程】在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
面经 - 【多线程】在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
359 0
|
缓存 前端开发 JavaScript
前端培训-中级阶段(23)- Manifest ApplicationCache应用程序缓存(2019-10-31期)
前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。
153 0
前端培训-中级阶段(23)- Manifest  ApplicationCache应用程序缓存(2019-10-31期)
|
缓存 区块链 Windows
应用程序图标设置 系统图标缓存问题
应用程序图标设置 系统图标缓存问题
166 0
|
缓存 数据库 Windows
IIS应用程序池_缓存回收
原文:IIS应用程序池_缓存回收 本人最近由于公司业务,需要把问卷的问题和答案存入缓存中已提高问卷加载速度,减少数据库压力。 缓存关键代码(公司代码已做封装,这里只贴出关键代码): HttpRuntime.
1663 0
|
5天前
|
存储 消息中间件 缓存
Redis缓存技术详解
【5月更文挑战第6天】Redis是一款高性能内存数据结构存储系统,常用于缓存、消息队列、分布式锁等场景。其特点包括速度快(全内存存储)、丰富数据类型、持久化、发布/订阅、主从复制和分布式锁。优化策略包括选择合适数据类型、设置过期时间、使用Pipeline、开启持久化、监控调优及使用集群。通过这些手段,Redis能为系统提供高效稳定的服务。
|
11天前
|
存储 缓存 NoSQL
【Go语言专栏】Go语言中的Redis操作与缓存应用
【4月更文挑战第30天】本文探讨了在Go语言中使用Redis进行操作和缓存应用的方法。文章介绍了Redis作为高性能键值存储系统,用于提升应用性能。推荐使用`go-redis/redis`库,示例代码展示了连接、设置、获取和删除键值对的基本操作。文章还详细阐述了缓存应用的步骤及常见缓存策略,包括缓存穿透、缓存击穿和缓存雪崩的解决方案。利用Redis和合适策略可有效优化应用性能。