2011-09-18 77 views
1

我真的很困惑使用缓存。在ASP.NET缓存中,缓存对象是全局的,所以我知道我们可以在任何地方访问它。但是当我查看缓存应用程序块时,如何使用我在application_start阶段创建的缓存。使用我在application_start上创建的缓存的策略是什么?如何在应用程序启动阶段使用缓存?

由于提前,

+0

你想绝对使用Application Blocks还是ASP.NET Caching也足够了?我不明白你的问题...我认为你应该阅读:http://stackoverflow.com/questions/21870/system-web-caching-vs-enterprise-library-caching-block –

+0

@Davide Piras我读过它在打开这个问题之前。我想使用应用程序块,但假设我查询了数据库并将其放在application_start中的缓存中。然后,例如,我如何在业务层或项目上的任何类中使用它? –

+0

向我们展示了您将对象放入application_start中的缓存中的方式:-) –

回答

1

一旦你创建了正确的配置片段为您的缓存块,并添加到ASP.NET应用程序的web.config,你可以以同样的方式从项目添加到缓存中在asp.net应用程序的任何地方。同样,从在app.config或web.config中共享相同配置片段的业务或服务层,您应该可以从缓存中检索项目。

这很好说明如下:Exploring Caching : Using Caching Application Enterprise Library 4.1

所以只是尝试创建和使用的ICacheManager,例如以这种方式:

//Create Instance of CacheManager 
ICacheManager objCacheManager = CacheFactory.GetCacheManager();  

//Add a new CacheItem to Cache 
objCacheManager.Add("YourKey", yourObject); 
从其他项目或Web服务

然后对IIS运行,但作为另一个应用程序,如果在web.config包含相同的代码段配置缓存,使用此:

//Create Instance of CacheManager 
ICacheManager objCacheManager = CacheFactory.GetCacheManager(); 

// Check If Key is in Cache Collection 
if(objCacheManager.Contains("YourKey")) 
{ 
    var myObject = objCacheManager.GetData("YourKey"); 
} 

你其实应该想象这在应用程序体系结构中处于较低级别时,如果通过业务逻辑从数据库加载数据,我想象那块BL将从数据库中检索并添加到缓存中,然后在下一个查询中检查它是否存在于缓存中如果不是会从数据库再次加载。

有关配置代码段的示例,请查看上面提到的链接。

相关问题