快速入门使用了一个顶层的处理程序来捕获任何场景中的任何异常。处理程序显示了一个带有异常信息的对话框。
快速入门在构建和运行应用程序之前不需要执行任何安装步骤。[注意:默认的快速入门配置不使用持久后端存储。]
快速入门提供两个版本。第一个版本使用工厂创建Enterprise Library 对象,例如使用CacheFactory.GetCacheManager 方法创建CacheManager 实例, 以及使用new操作符创建ProductData 实例。
第二个版本演示了集成Unity 应用程序块。创建和填充UnityContainer 实例是使用配置文件中
构建并运行快速入门
快速入门以源代码的形式发布,这意味着在运行之前必须编译它,可以使用 Visual Studio 来构建快速入门。
构建缓存快速入门
快速入门中的漫游带有定义好的配置,它被包括在 App.config 文件中。这个文件放置在快速入门项目文件的文件夹中。
要修改或查看这些设置,使用 Enterprise Library 配置控制台打开包含快速入门项目文件目录中的 App.config 文件。App.config 包含了配置数据。
在每次构建代码时,Visual Studio 复制 App.config 文件到项目的输出目录中(创建的快速入门可执行文件的目录),并改名为 CachingQuickStart.exe.config 。
这意味着如果要使用配置控制台修改任何配置设置,如到期周期,并且计划重建解决方案,就必须打开快速入门源目录中的 App.config 文件来修改配置。可以用配置控制台打开 CachingQuickStart.exe.config 文件。然而,这些改变将在下次成功构建中被覆盖。
这意味着当使用配置控制台打开 App.config 文件并修改配置设置时,必须复制文件到输出目录。可以手工复制,也可以重建项目来完成此目的。记住,简单的修改配置设置没有必要重建代码。运行在成功构建之上的命令是为了方便构建。
漫游:添加条目到缓存中
漫游示范了如何添加条目到缓存中。
重建示例
1. 配置缓存。必要的步骤,请参见输入配置信息。
2. 在 QuickStartForm 类中为 CacheManager 对象声明一个成员变量。
private ICacheManager primitivesCache;
3.在 QuickStart_Load 方法中,添加下列代码以创建 CacheManager 。对 GetCacheManager 的调用没有包含CacheManager 的名称,所以工厂创建了声明在配置文件中的默认 CacheManager 对象。
this.primitivesCache = CacheFactory.GetCacheManager();
4. 创建要添加到缓存中的条目。下列代码创建了一个 Product 类型的条目。
string id="ProductOneId";
string name = "ProductOneName";
int price = 50;
Product product = new Product(id, name, price);
5. 添加条目到缓存中。下列代码使用了 Add 方法的一个重载,重载包含清理优先级(在此为2),条目在到期时不刷新的指令、从条目的最后访问时间开始的5分钟的到期时间。
primitivesCache.Add(product.ProductID, product, CacheItemPriority.Normal, null,
new SlidingTime(TimeSpan.FromMinutes(5)));
漫游:从缓存中移除条目
此漫游示范了如何从缓存中移除条目。
重建此示例
1. 配置缓存。必要的步骤,请参见缓存快速入门中的“快速入门配置”。
2. 在 QuickStartForm 类中为 CacheManager 对象声明一个成员变量。
private ICacheManager primitivesCache;
3. 在响应用户请求从缓存中移除条目的方法中,添加下列代码。
// Prompt the user for the key of the item to be removed. if (this.selectItemForm.ShowDialog() == DialogResult.OK) { // Request that the item be removed from the cache. this.primitivesCache.Remove(selectItemForm.ItemKey); }
漫游:从缓存中获取条目
此漫游示范了如何从缓存中获取条目。
重建示例
1. 配置缓存。必要步骤,请参见缓存快速入门中的“快速入门配置”。
2. 在 QuickStartForm 类中为 CacheManager 对象声明一个成员变量。
private ICacheManager primitivesCache;
3. 在响应用户请求从缓存中读取条目的方法中,添加下列代码。
// Prompt the user for the key of the item to be read. if (this.selectItemForm.ShowDialog() == DialogResult.OK) { // Read the item from the cache. If the item is not found in the cache, the // return value will be null. Product product = (Product) this.primitivesCache.GetData(selectItemForm.ItemKey); }
漫游:清除缓存
此漫游示范了如何清除缓存,清空缓存中的所有数据。
重建此示例
1. 配置缓存。必要步骤,请参见缓存快速入门中的“快速入门配置”。
2. 在 QuickStartForm 类中为 CacheManager 对象声明一个成员变量。
private ICacheManager primitivesCache;
3. 在响应用户请求清空缓存的方法中,添加下列代码。
this.primitivesCache.Flush();
漫游:加载缓存
快速入门的此节说明了如何主动加载缓存和如何被动加载缓存。
解决方案概述
图 1 说明了快速入门如何从缓存中获取数据。
图 1 说明了如何几点:
1. 配置缓存,定义名为 Loading Scenario Cache Manager 的 CacheManager 的对象。对于必要的步骤,请参见缓存快速入门中“快速入门的配置”。
2. 在 ProductData 类中定义用于 CacheManager 对象的成员变量。
private ICacheManager cache;
3. 通过添加下列代码来创建 CacheManager 对象。工厂使用在配置文件中的名称来创建 CacheManager 对象。
cache = CacheFactory.GetCacheManager("Loading Scenario Cache Manager");
4. 从 XML 文件中加载完整的数据集到缓存中。
List
for (int i = 0; i < list.Count; i++)
{
Product product = listi;
cache.Add(product.ProductID, product);
}
被动加载缓存
可以被动的缓存数据以获取应用程序请求的数据,并缓存它以备以后的请求使用。
被动加载缓存
1. 配置缓存,定义名为 Loading Scenario Cache Manager 的 CacheManager 的对象。对于必要的步骤,请参见缓存快速入门中“快速入门的配置”。
2. 在 ProductData 类中定义用于 CacheManager 对象的成员变量。
private ICacheManager cache;
3. 通过添加下列代码来创建 CacheManager 对象。工厂使用在配置文件中的名称来创建 CacheManager 对象。
cache = CacheFactory.GetCacheManager("Loading Scenario Cache Manager");
4. 添加下列在请求以获取 Product 时将执行的代码。
Product product = (Product)cache.GetData(productID); // Does our cache already have the requested object? if (product == null) { // Requested object is not cached; therefore, retrieve it from // the data provider and cache it for more requests. product = this.dataProvider.GetProductByID(productID); if (product != null) { cache.Add(productID, product); } } return product;
缓存与主数据源的比较
要查看在缓存中的数据与主数据源中的数据有什么不同,单击 Edit Master Data 按钮,然后修改 XML 文件中的某些值。如果在主数据修改之前条目已经在缓存中,并在修改后从缓存中获取它,从缓存中获取的数据将与主数据源中的数据不匹配。