手机版

ASP.NET的运营数据2.0五十七:在分层架构中缓存数据

时间:2021-10-30 来源:互联网 编辑:宝哥软件园 浏览:

导言:

如前一章所述,缓存ObjectDataSource的数据只需要简单设置一些属性。但是,它将数据缓存在表示层中,表示层与ASP紧密耦合。NET的页面缓存策略。我们对系统进行分层的原因之一是为了打破这种耦合。以业务逻辑层为例,将业务逻辑与ASP.NET页面分离;数据访问层将数据访问的细节与ASP.NET页面分开。从某种意义上说,将业务逻辑从数据访问的细节中分离出来是第一步,这使得系统可读性更强、易于维护、易于修改,并且易于按模块划分工作——例如,表示层的开发人员对数据库的细节了解不多,也不妨碍他们的开发工作。当然,将缓存策略与表示层分开也有类似的好处。

在本文中,我们将扩展层次结构,并添加一个缓存层(CL)来实现缓存策略。缓存层包括一个ProductsCL类,它使用像getproducts()和get ProductBycategoryid(categoryid)这样的方法来访问产品信息。调用这些方法时,首先从内存中检索数据,如果内存为空,调用业务逻辑层BLL中ProductsBLL类的对应方法,然后从数据访问层DAL返回获取的数据。ProductsCL类的方法从业务逻辑层BLL获取数据,然后在返回之前缓存数据。

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

//files.jb51.net/file_images/article/201605/2016051711081155.png

图1:缓存层是我们架构中的一个独立层。

步骤1:为缓存层创建一个类。

在本文中,我们创建的缓存层只包含一个ProductsCL类,它只有几个方法。的完整缓存层还应该包含CategoriesCL、EmployeesCL和SuppliersCL类。有了业务逻辑层BLL和数据访问层DAL,缓存层可以被视为一个单独的类库项目,但我们将其视为App_Code文件夹中的一个类。

为了更好地区分缓存层类与DAL类和BLL类,我们在App_Code文件夹中创建新的子文件夹。在资源管理器中,右键单击App_Code文件夹,选择“新建文件夹”,将其命名为cl,并在其中添加一个新类ProductsCL.cs。

//files.jb51.net/file_images/article/201605/2016051711081156.png

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

像BLL中的productsBLL类一样,ProductsCL类应该包含相同的数据访问和修改方法。然而,在本文中,我们只创建了GetProducts()方法(在步骤3中)和GetProducts by categoryid(categoryid)方法(在步骤4中)。您可以在业余时间改进ProductsCL类,并创建相应的CategoriesCL、EmployeesCL和SuppliersCL类。

第二步:读写数据缓存。

ObjectDataSource的缓存属性使用ASP.NET数据缓存来存储从BLL获得的数据。要访问数据缓存,您可以从ASP.NET页面的代码隐藏类或架构层的类中访问它。要通过ASP.NET页面的代码隐藏类类读写数据缓存,可以使用以下模式:

//从缓存读取(读取)对象值=缓存['键'];//向缓存['键']=值中添加新项;缓存。插入(键、值);缓存。插入(键、值、缓存依赖关系);缓存。插入(键、值、缓存相关性、日期时间、时间跨度);缓存类的插入方法可以有许多重载。缓存['键']=值与缓存相同。Insert(key,value),向缓存中添加一个项目,但不指定到期时间(可以理解为缓存持续时间)。更典型的情况是,当我们向缓存中添加一个条目时,我们会指定一个过期时间,它可以是依赖关系,也可以是基于时间的过期时间,或者两者都有,比如上面的最后两个表达式。

如果需要的数据存储在内存中,首先调用缓存层的方法返回数据。如果它不在内存中,请在BLL调用相应的方法。在返回之前缓存数据。就像下面的流程图分析一样。

版权声明:ASP.NET的运营数据2.0五十七:在分层架构中缓存数据是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。