• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 在ASP.NET 2.0中操作数据之五十六:使用ObjectDataSource缓存数据

在ASP.NET 2.0中操作数据之五十六:使用ObjectDataSource缓存数据

作者:heker2007 字体:[增加 减小] 来源:互联网 时间:2017-05-11

heker2007通过本文主要向大家介绍了asp:objectdatasource,objectdatasource,objectdatasource控件,asp.net,asp net培训等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

导言

  就计算机科学而言,caching就是将所需要的数据或信息的备份放在某个地方,便于快速访问的这样一个过程。以数据处理(data-driven)程序为例,程序的大部分时间浪费在数据查询上。要提升这种程序的性能,通常的做法是将查询结果存放在程序的存储器里。

  ASP.NET 2.0提供了各种各样的缓存方式。对web页面和用户控件可以通过output caching进行缓存;同样我们可以通过ObjectDataSource 和SqlDataSource控件,在控件级(control level)对数据进行缓存;同时,ASP.NET的data cache提供了丰富的缓存接口(caching API),供页面开发员通过编程缓存对象。在本文及接下来的3篇文章我们将对ObjectDataSource的缓存属性以及data cache进行考察;我们也将探究如何在启动时对application-wide数据进行缓存,以及通过使用SQL cache dependencies对缓存数据刷新。

主要的缓存要点

  由于缓存通过将数据的副本放置在一个便于快速访问的地方来提高程序的总体性能。由于它仅仅是一个副本,当源数据发生改变时,副本不能同步更新。为此,页面开发员应制定一个标准将其清除出内存,可以使用如下的2种方法之一:

  Time-based标准:向内存添加的条目(item),只能在内存里驻留固定或灵活(sliding)的一段时间。比如,开发者可设定一个时间段,比如60秒,当条目添加到内存后,不管访问它的频率有多高,60秒后就会被清除掉;如果是灵活(sliding)处理的话,当最后一次被访问后,未再次被访问的时间一旦超出60秒,也会被清除掉。

  Dependency-based标准:当向内存添加条目时为其分配一个从属体(dependency),当条目对应的从属体发生改变时将条目清除掉。从属体可以是一个文件;另一个缓存条目;或者干脆是这两者的混合体( combination);当然还可以是SQL cache dependencies,它可以向内存添加条目,当源数据改变时将条目清除掉。我们将在接下来的文章《使用SQL缓存依赖项SqlCacheDependency 》里详细考察。

  不管是哪种标准,在条目被清除掉以前,我们都可以对其访问。如果内存达到了它的极限,它会清除掉已有的条目后再添加新的条目。因此,当处理缓存数据时很重要的一点是我们要充分考虑到缓存数据已被清除的可能。在下一篇文章《在分层架构中缓存数据》我们考察采用哪种模式从内存访问数据。

  缓存是提升程序性能的一种较为经济的方法,就像Steven Smith在他的文章《ASP.NET Caching: Techniques and Best Practices:》里阐述的一样:“缓存是获得‘上佳'性能的一种好方法,不需要太多的时间和分析。… 存储器也便宜,要获得你期望的性能,靠缓存技术你需要花30秒;靠优化代码和数据库你可能要几天乃至几周时间…”

  虽然缓存可以显而易见的提升系统性能,但并不是适用于所有的应用程序,比如某些实时(real-time)、频繁更新数据的程序就不适合。
  但是对大部分程序而言,还是适用的。关于ASP.NET 2.0里的缓存的更多背景资料请参考ASP.NET 2.0 QuickStart Tutorials系列的Caching for Performance 部分。

第一步:创建Caching页面

在我们开始以前,首先让我们花些时间来添加包括本篇在内的最近四篇教程需要用到的页面。我们先在项目中新建一个称作Caching的文件夹,接下来,为目录新增以下几个页面,并配置为使用Site.master母板页。

Default.aspx
ObjectDataSource.aspx
FromTheArchitecture.aspx
AtApplicationStartup.aspx
SqlCacheDependencies.aspx

http://files.weikejianghu.com/file_images/article/201605/2016051710390743.png
图1:创建相关的ASP.NET页面

像其它文件夹一样,Caching文件夹里的Default.aspx页面将本系列的文章显示出来。记得用户控件SectionLevelTutorialListing.ascx提供该功能,设计模式里将其拖到页面上。

http://files.weikejianghu.com/file_images/article/201605/2016051710390744.png
图2:为Default.aspx页面添加用户控件SectionLevelTutorialListing.ascx

最后,将这些页面添加到Web.sitemap文件里,特别的,放在“Working with Binary Data” <siteMapNode>:之后:

<siteMapNode title="Caching" url="~/Caching/Default.aspx"
 description="Learn how to use the caching features of ASP.NET 2.0.">
 <siteMapNode url="~/Caching/ObjectDataSource.aspx"
 title="ObjectDataSource Caching"
 description="Explore how to cache data directly from the
 ObjectDataSource control." />
 <siteMapNode url="~/Caching/FromTheArchitecture.aspx"
 title="Caching in the Architecture"
 description="See how to cache data from within the
 architecture." />
 <siteMapNode url="~/Caching/AtApplicationStartup.aspx"
 title="Caching Data at Application Startup"
 description="Learn how to cache expensive or infrequently-changing
 queries at the start of the application." />
 <siteMapNode url="~/Caching/SqlCacheDependencies.aspx"
 title="Using SQL Cache Dependencies"
 description="Examine how to have data automatically expire from the
 cache when its underlying database data is modified." />
</siteMapNode>

</div>

完成Web.sitemap文件的更新后,让我们在浏览器里查看,左边的菜单栏显示caching章节的文章http://files.weikejianghu.com/file_images/article/201605/2016051710390745.png
图3:网站地图Site Map包含了Caching章节的文章

第二步:在Web Page页面里展示产品

  本文考察怎样使用ObjectDataSource控件内置(built-in)的缓存功能。在开始之前,我们首先需要创建一个页面,用一个ObjectDataSource控件调用ProductsBLL class类获取产品信息,再用GridView控件展示出来。

  首先打开Caching文件夹里的ObjectDataSource.aspx页面。从工具箱拖一个GridView控件到页面,设置其ID为Products,再从智能标签里选择将其绑定到一个ObjectDataSource控件,ID为ProductsDataSource。设该ObjectDataSource使用ProductsBLL class类。

http://files.weikejianghu.com/file_images/article/201605/2016051710390746.png
图4:设置ObjectDataSource控件使用ProductsBLL Class类

  在本页面,我们要创建一个允许编辑的GridView控件,当ObjectDataSource控件里的缓存数据发生改变时,我们可以通过GridView的界面查看到底会发生什么。在SELECT标签里选择默认的GetProducts()方法, 但是在UPDATE标签里选择接受productName, unitPrice 和productID作为输入参数的UpdateProduct()重载方法。

http://files.weikejianghu.com/file_images/article/201605/2016051710390747.png
图5:在UPDATE标签里选择重载的UpdateProduct()方法

  最后,在INSERT和DELETE标签里选择“(None)”,点完成按钮。一旦完成“设置数据源向导”,Visual Studio会将ObjectDataSource控件的OldValuesParameterFormatString属性设置为original_{0}。就像在前面的教程之16章《概述插入、更新和删除数据》里探讨的一样,该属性要么删除掉,要么设置为{0},不然的话更新操作会报错。

  此外,完成向导后,Visual Studio会将产品的所有数据列添加到GridView控件,将除了ProductName, CategoryName和UnitPrice之外的所有绑定列(BoundFields)删除。然后,分别将上述3列的HeaderText属性改为Product”, “Category”和“Price”。由于ProductName是必需的,将ProductName列转变成模板列(TemplateField),在EditItemTemplate里添加一个RequiredFieldValidator控件;同样的,将UnitPrice列也转换成模板列,并添加一个CompareValidator控件,确保用户输入的是大于或等于0的有效的货币值。除此以外,你还可以作一些界面上的改进,比如使UnitPrice值居中,或分别对UnitPrice的只读和编辑界面作一些格式化的处理。

  在GridView的智能标签里点相关项启动编辑、分页、排序功能。

  注意:想回顾怎样自定义GridView的编辑界面吗?请参考前面的文章之20《定制数据修改界面》 

http://files.weikejianghu.com/file_images/article/201605/2016051710390848.png

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 在ASP.NET 2.0中操作数据之五十六:使用ObjectDataSource缓存数据
  • 在ASP.NET 2.0中操作数据之六:编程设置ObjectDataSource的参数值
  • 在ASP.NET 2.0中操作数据之四:使用ObjectDataSource展现数据
  • gridview+objectdatasource+aspnetpager整合实例
  • 动态指定任意类型的ObjectDataSource对象的查询参数
  • asp.net 使用ObjectDataSource控件在ASP.NET中实现Ajax真分页

相关文章

  • 2017-05-11asp.net5中的用户认证与授权(1)
  • 2017-05-11在ASP.NET 2.0中操作数据之五:声明参数
  • 2017-05-11让Asp.NET的DataGrid可排序、可选择、可分页
  • 2017-05-11.net后台页面统一验证是否登录
  • 2017-05-11详解.NET中使用Redis数据库
  • 2017-05-11asp.net读取excel文件的三种方法示例
  • 2017-05-11ASP.NET实现个人信息注册页面并跳转显示
  • 2017-05-11ASP.NET GridView中加入RadioButton不能单选的解决方案
  • 2017-05-11C# Math.Round()函数问题
  • 2017-05-11C#中的委托和事件学习(续)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net下比较两个等长字符串是否含有完全相同字符(忽略字符顺序)
    • .NET微信公众号 用户分组管理
    • asp.net XML文件操作实现代码
    • Asp.net使用SignalR实现聊天室的功能
    • .Net整合Json实现REST服务客户端的方法详解
    • Asp.net MVC中获取控制器的名称的方法
    • .net生成验证码
    • ASP.NET中为TextBox中添加calendar.js示例代码
    • ASP.NET生成eurl.axd Http异常错误的处理方法
    • .NET Visual Studio 代码性能分析工具

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有