我有一个需要在缓存中存储数据的类。 最初我在asp.net应用程序中使用它,所以我使用了System.Web.Caching.Cache。
现在我需要在Windows服务中使用它。 现在,据我了解,我不应该在非asp.net应用程序中使用asp.net缓存,所以我正在调查MemoryCache。
问题是它们不兼容,所以我改为在asp.net应用程序中使用MemoryCache,或者我需要创建一个适配器,以确保两个缓存实现具有相同的接口(可能派生自ObjectCache并在内部使用asp.net缓存?)
在asp.net中使用MemoryCache有什么含义?
Nadav
答案 0 :(得分:7)
我会选择你的第二个选项并稍微重构一下。我将创建一个接口和两个提供程序(它们是您的适配器):
public interface ICachingProvider
{
void AddItem(string key, object value);
object GetItem(string key);
}
public AspNetCacheProvider : ICachingProvider
{
// Adapt System.web.Caching.Cache to match Interface
}
public MemoryCacheProvider : ICachingProvider
{
// Adapt System.Runtime.Caching.MemoryCache to match Interface
}
答案 1 :(得分:4)
今天早上我遇到了一个可以帮助解决这种情况的图书馆。它是一个CacheAdapter,允许您针对公共接口进行编码,并通过配置交换缓存机制(System.Web.Caching,System.Runtime.Cache或AppFabric)。