.net Artchitecture的工作原理 - 缓存一切,从缓存中读取

时间:2010-06-12 04:40:45

标签: asp.net architecture caching

您好,我想要一个以下示例: 数据库< - >数据访问+缓存< - >业务逻辑< - > UI

所以基本上你想要的数据库应该可以从缓存中访问,如果它不在缓存中,底层数据访问层将填充if并返回它否则从缓存中返回

有什么不利之处吗?在什么场景中这可能是一个很好的解决方案

2 个答案:

答案 0 :(得分:0)

明显的缺点是缓存有效性(如何知道数据在缓存后没有更改/添加)和内存/磁盘使用情况。

当您的数据是静态的时(无需考虑何时更新缓存),这是一个很好的解决方案。

我们使用类似的方法对动态数据和缓存引入了很多问题。有时缓存更新太昂贵(服务器必须通知所有客户端他们缓存的数据和已更改的数据),有时客户端上的内存使用率太高。

答案 1 :(得分:0)

我喜欢为 System.Web.Caching.Cache 类创建自己的静态包装类。

基本上,您在Web应用程序模块中创建一个类,并创建所有标准Cache函数(获取,添加,删除等)。这些方法需要用泛型来实现,以确保类型安全。

Here就是一个很好的例子

然后创建另一个静态类,其作用类似于从Web层到数据层的服务模型。

您的Web层将调用静态类上的方法,这将首先根据提供的方法参数生成CacheKey,检查缓存,如果找到返回,否则调用数据层,添加到缓存并返回。

根据业务对象的设置方式,您可能需要在对象上提供深层副本(即在Clone方法中实现IClonable和ovveride)。

此外,您的缓存解决方案取决于您的Web场体系结构。如果你有很多网络服务器,你的数据可能会变得陈旧,所以你需要决定那里的最佳选择(SQLCacheDependecy,分布式缓存等)。