Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET 2.0数据教程之五十九:体系分层缓存数据

ASP.NET 2.0数据教程之五十九:体系分层缓存数据2010-08-12 翻译:CSDN 王文涛返回“”

导言:

正如前面章节所言,缓存ObjectDataSource的数据只需要简单的设 置一些属性。然而,它是在表现层对数据缓存,这就与ASP.NET page页面缓存策 略(caching policies)紧密的耦合(tightly couples)起来。我们对体系机构分层 的原因之一便是打破这种耦合。拿业务逻辑层为例,将业务逻辑从ASP.NET页面脱 离出来;而数据访问层将数据访问的细节ASP.NET页面脱离出来。从某种意义来说 ,将业务逻辑和数据访问细节脱离出来是首先,这样的话使系统更易读、易维护 、易修改,便于按模块分工—比如,表现层的开发者对数据库的细节不甚了 解也不妨碍其开发工作。当然,将缓存策略从表现层脱离出来也有类似的好处。

本文我们将对层次机构进行扩充,新添一个缓存层(Caching Layer,简称 CL)以实施缓存策略。该缓存层包括一个ProductsCL类,该类用类似 GetProducts(), GetProductsByCategoryID(categoryID)等方法来访问产品信息 。调用这些方法时先从内存检索数据,如果内存为空则调用业务逻辑层BLL里的 ProductsBLL类的相应方法,再从数据访问层DAL返回获取的数据。该ProductsCL 类的方法从业务逻辑层BLL获取数据后先对数据缓存后再返回。

如图1所示 ,缓存层CL位于表现层和业务逻辑层。

图1:在我们的体系结构中缓存层(CL)是单独的一层

第一步:创 建缓存层的类

在本文,我们创建的缓存层仅仅包含一个ProductsCL类,它 只有几个方法。

完整的缓存层还应该包含CategoriesCL, EmployeesCL, 和SuppliersCL类。有了业务逻辑层BLL和数据访问层DAL,缓存层完全可以当成一 个单独的类库工程(Class Library project),不过我们将它作为App_Code文件夹 里的一个类来处理。

为了更好的将缓存层类和DAL类、BLL类区分开,我们 在App_Code文件夹里创建一个新的子文件夹。在资源管理器里右击App_Code文件 夹,选择“新文件夹”,命名为CL,在里面添加新类 ProductsCL.cs

图2添加名为CL的文件夹和名为ProductsCL.cs的类

跟BLL里的 ProductsBLL类一样,ProductsCL类应该包含相同的数据访问和修改方法。不过在 本文,我们只创建GetProducts()方法(在第3步)和GetProductsByCategoryID (categoryID)方法(在第4步)。你可以在空闲的时候对ProductsCL类进行完善,并 创建相应的CategoriesCL, EmployeesCL和 SuppliersCL类