Web应用性能调优和跟踪、检测.ppt_第1页
Web应用性能调优和跟踪、检测.ppt_第2页
Web应用性能调优和跟踪、检测.ppt_第3页
Web应用性能调优和跟踪、检测.ppt_第4页
Web应用性能调优和跟踪、检测.ppt_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第13章 Web应用性能调优和跟踪检测,内容,如何开发高性能的Web应用 跟踪检测 缓存技术 在Web应用中的异步处理 Health Monitor,如何开发高性能的Web应用,页面和服务器控件处理 状态管理 数据访问 Web 应用程序 编码实践 使用缓存,页面和服务器控件处理,避免到服务器的不必要的往返行程(客户端异步回调) 使用IsPostBack 只在必要时保存服务器控件视图状态 尽量使用缓冲 使用 Transfer,状态管理,当不使用会话状态时禁用它 选择合适的会话状态提供程序 进程内会话状态 作为 Windows 服务的进程外会话状态 SQL Server 数据库中的进程外会话状态,数据访问,SQL Server数据库中,推荐使用存储过程访问数据 合理选择数据访问对象 SqlDataReader:只读访问数据 DataSet:提供更多类型的数据访问操作,Web 应用程序,预编译Web 应用 IIS的回收进程 调整辅助进程的线程数 启用网络园艺 禁用调试模式 优化配置文件,编码实践,尽量不要依赖代码中的异常 适当地使用垃圾回收器和自动内存管理 在托管代码中重写调用密集型的 COM 组件 避免单线程单元 (STA) COM 组件,使用缓存,应用程序缓存 页输出缓存,跟踪检测,跟踪概述 页面级跟踪 演示和练习:查看页面级跟踪信息 应用程序级跟踪 演示和练习:使用跟踪查看器查看跟踪信息 ASP.NET跟踪与System.Diagnostics 跟踪的集成 演示和练习:ASP.NET跟踪与System.Diagnostics 跟踪的集成,跟踪概述,为什么要使用跟踪 跟踪输出信息,跟踪概述(续),跟踪输出信息,页面级跟踪:启用与排序,在页面文件(.aspx)的Page指令中设置Trace属性为true,启用页面级跟踪 设置TraceMode属性指定跟踪消息出现的顺序 SortByTime(默认) SortByCategory,页面级跟踪:自定义输出(编码),启用页面(default.aspx)的页面级跟踪,并在页面的默认事件(Page_Load)中自定义输出消息,protected void Page_Load(object sender, EventArgs e) Trace.Write(“ASPNET_TRACE“, “Page_Load .“); ,页面级跟踪:自定义输出(显示),演示和练习:查看页面级跟踪信息,多媒体演示,应用程序级跟踪,在Web.config文件中配置应用程序级跟踪,通过对节点进行设置,即可启用或禁用应用程序级跟踪 Enabled、pageOutput、RequestLimit、traceMode、localOnly、mostRecent,演示和练习:使用跟踪查看器查看跟踪信息,多媒体演示,ASP.NET跟踪与System.Diagnostics 跟踪的集成,ASP.NET跟踪与System.Diagnostics 跟踪的集成的概述 要让业务类中通过调用System.Diagnostics.Trace类输出的跟踪输出信息随页面跟踪输出一起呈现,则需要完成以下任务: 添加WebPageTraceListener 对象 添加编译开关TRACE进行编译应用,ASP.NET跟踪与System.Diagnostics 跟踪的集成,在Web.Config文件中添加WebPageTraceListener 对象 或者,在Global.asax 文件中添加WebPageTraceListener 对象,void Application_Start(Object sender, EventArgs e) WebPageTraceListener gbTraceListener = new WebPageTraceListener(); System.Diagnostics.Trace.Listeners.Add(gbTraceListener); ,ASP.NET跟踪与System.Diagnostics 跟踪的集成,添加编译开关TRACE进行编译应用,演示和练习:ASP.NET跟踪与System.Diagnostics 跟踪的集成,多媒体演示,缓存技术,缓存概述 应用程序缓存 页输出缓存,缓存概述,为什么使用缓存 应用程序可以将那些频繁访问的数据,以及那些需要大量处理时间来创建的数据存储在内存中,从而提高性能 缓存机制分类介绍 应用程序缓存 页输出缓存,应用程序缓存,应用程序缓存的机制 如何将项添加到缓存中 演示和练习:向缓存中添加项 读取缓存项 从缓存中删除项 从缓存中删除项时通知应用程序 演示和练习:从缓存中删除项时通知应用程序,应用程序缓存的机制,应用程序缓存是由 System.Web.Caching.Cache 类实现的,缓存实例(Cache对象)是每个应用程序专用的,并且每个应用只有一个,通过Page类或UserControl类的Cache属性公开 缓存生存期依赖于应用程序的生存期,当重新启动应用程序后,将重新创建 Cache 对象,也就是说缓存数据将被清空,如何将项添加到缓存中,添加缓存项 设置缓存依赖项 设置缓存过期策略 设置缓存优先级,添加缓存项,通过键和值直接设置项 使用 Insert 方法将项添加到缓存中,Cache“ProductCategories” = dsCategories; / dsCategories是产品分类信息,Cache.Insert(“ProductCategories“, dsCategories); / dsCategories是产品分类信息,设置缓存依赖项,为什么要设置依赖项 依赖项分类 键依赖项 文件依赖项 SQL 依赖项 聚合依赖项 自定义依赖项,设置缓存依赖项,添加缓存项的键依赖项,Cache.Insert(“CacheItem2“, “Cache Item2“, new System.Web.Caching.CacheDependency(null, new string “CacheItem1“ );,设置缓存依赖项,添加缓存项的文件依赖项,Cache.Insert(“FinanceData“, “Cached Item 4“, new System.Web.Caching.CacheDependency(Server.MapPath(“XMLFile.xml“);,设置缓存依赖项,添加缓存项的SQL 依赖项 使用SqlCacheDependency 对象来创建依赖于数据库表中的记录,添加步骤如下: 在Web.config文件的caching节点定义缓存使用的数据库名称 使用代码依赖于该连接对应数据库的某个表的缓存项,Cache.Insert(“cacheitem1“, “Cache Item 1“, new SqlCacheDependency(“AdvWorks“, “Product“);,设置缓存依赖项,添加缓存项的聚合依赖项 用System.Web.Caching.AggregateCacheDependency类添加多个依赖项,System.Web.Caching.CacheDependency dep1 = new System.Web.Caching.CacheDependency(Server.MapPath(“XMLFile.xml“); Cache“CacheItem1“ = “Cache Item 1“ string keyDependencies2 = “CacheItem1“ ; System.Web.Caching.CacheDependency dep2 = new System.Web.Caching.CacheDependency(null, keyDependencies2); System.Web.Caching.AggregateCacheDependency aggDep = new System.Web.Caching.AggregateCacheDependency(); aggDep.Add(dep1); aggDep.Add(dep2); Cache.Insert(“CacheItem2“, “Cached Item 2“, aggDep);,设置缓存过期策略,通过Cache 类自定义如何缓存项以及将它们缓存多长时间。过期类别有: 绝对过期 可调性过期,Cache.Insert(“CacheItem1“, “Cached Item 1“, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 30, 0);,Cache.Insert(“CacheItem1“, “Cache Item1“, null, DateTime.Now.AddMinutes(30), System.Web.Caching.Cache.NoSlidingExpiration);,设置缓存的优先级,用 Add 或 Insert 方法添加项时指定一个 CacheItemPriority 枚举值,Cache.Insert(“CacheItem1“, “Cached Item 1“, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, null);,演示和练习:向缓存中添加项,多媒体演示,读取缓存项,通过键来检索被缓存的项,if(Cache“ProductCategories“ != null) DataSet dsCategories = (DataSet)Cache“ProductCategories“; ,从缓存中删除项,在以下情况下,缓存自动删除 缓存已满 该项已过期 依赖项发生更改 通过代码方式删除 调用Cache类的Remove()方法来删除缓存项,Cache.Remove(“ProductCategories “);,从缓存中删除项时通知应用程序,CacheItemRemovedCallback 委托 该委托定义编写事件处理程序时使用的签名,当对从缓存中删除项进行响应时会调用此事件处理程序 CacheItemRemovedReason 枚举 用于指定删除缓存项的原因,演示和练习:从缓存中移除项时通知应用程序,多媒体演示,页输出缓存,页输出缓存概述 使用页输出缓存 设置页的可缓存性 演示和 练习:缓存整个页面 缓存一个页面的多个版本 演示和练习:缓存一个页面的多个版本 部分页缓存 演示和练习:缓存后替换 使用 SqlCacheDependency 类在 ASP.NET 中缓存 演示和练习:使用 SqlCacheDependency 类在 ASP.NET 中缓存,页输出缓存概述,页输出缓存是指在缓存 ASP.NET 页所生成的部分响应或所有响应 提高Web应用程序的性能 提高Web服务器的吞吐量,设置页的可缓存性:声明性设置,其一:在页面文件(.aspx)或用户控件文件(.ascx)中添加 OutputCache 指令来完成,并设置属性:Duration、Location和VaryByParam或VaryByControl 其二:在Web.config文件中定义缓存配置文件,在配置文件中包括 Location、duration 和 varyByParam 设置 ,在页面或用户控件文件中包含 OutputCache 指令,并将 CacheProfile 属性设置为 Web.config 文件中定义的缓存配置文件的名称,设置页的可缓存性:编程设置,通过System.Web.HttpCachePolicy类来设置和控制页输出缓存,Response.Cache.SetExpires(DateTime.Now.AddSeconds(60); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetValidUntilExpires(true);,演示和练习:缓存整个页面,多媒体演示,缓存一个页面的多个版本,使用VaryByParam属性来设置网页的多个版本 ,缓存因素有: 初始请求 (HTTP GET) 中的查询字符串 回发时传递的控制值(HTTP POST 值) 随请求传递的 HTTP 标头 发出请求的浏览器的主版本号 页中的自定义字符串 HttpCachePolicy类,演示和练习:缓存一个页面的多个版本,多媒体演示,部分页缓存,控件缓存 控件缓存(也称为片段缓存),可以通过创建用户控件来包含缓存的内容,然后将用户控件标记为可缓存来缓存部分页输出 缓存后替换 以声明方式使用 Substitution 控件 以编程方式使用 Substitution 控件 API 以隐式方式使用 AdRotator 控件,演示和练习:缓存后替换,多媒体演示,使用 SqlCacheDependency 类在 ASP.NET 中缓存,使 用 System.Web.Caching.SqlCacheDependency 类创建依赖于数据库中表或行的缓存项,演示和练习:使用 SqlCacheDependency 类在 ASP.NET 中缓存,多媒体演示,在Web应用中的异步处理,异步处理概述 页面的异步处理 演示和练习:创建一个异步处理的页面 异步调用Web服务 演示和练习:异步调用Web服务 客户端异步 演示和练习:在网页中实现客户端回调 数据的异步访问,异步处理概述,在主应用程序线程以外的线程中执行打开大文件、连接远程计算机或数据库查询等耗时较长的任务 增加整个应用的吞吐量,提高应用的响应速度,页面的异步处理:同步执行和异步执行页面流程,页面的异步处理:关键任务,设定页面Page指令中设置属性Async为true 在Page_Load事件方法中调用Page类的AddOnPreRenderCompleteAsync方法,为异步页面注册异步处理的开始和结束事件处理程序委托 在服务器端申明异步请求的发起方法(BeginGetAsyncData)和结束后调用的方法(EndGetAsyncData),并在Page_Load方法中通过调用Page类的AddOnPreRenderCompleteAsync方法注册这两个方法,演示和练习:创建一个异步处理页面,多媒体演示,异步调用Web服务:Begin/End 模式,Wsdl.exe 为 Web 服务中发布的每项操作自动创建三个方法,异步调用Web服务:事件驱动的异步编程模式,基于事件处理回调的新的异步编程模型,可以简化生成多线程应用程序的过程,而不必自己实现复杂的多线程代码,演示和练习:异步调用Web服务,多媒体演示,客户端异步,需要实现的接口: 实现 ICallbackEventHandler 接口 实现 RaiseCallbackEvent和GetCallbackResult 接口方法 需要实现的客户端三个脚本函数: 实现一个调用帮助器方法的函数 实现一个 clientCallBack的函数 实现一个执行对服务器的实际请求的 Helper 函数,演示和练习:在网页中实现客户端回调,多媒体演示,数据库的异步访问,ADO.NET 在其 SqlCommand 类,对BeginExecuteNonQuery、BeginExecuteReader 和 BeginExecuteXmlReader 方法(与 EndExecuteNonQuery、EndExecuteReader 和 EndExecuteXmlReader 方法搭配)提供异步支持,Health Monitor,Health Monitor概述 使用内置的Web事件和提供程序 演示和练习:配置内置的Web事件和提供程序 创建自定义事件提供程序 演示和练习:创建自定义事件提供程序 创建自定义事件 演示和练习:创建自定义事件,HealthMonitor概述,监视应用方案 监视应用程序的性能以确保它正常运行 快速诊断出现故障的应用程序或系统 评估给定应用程序的生命周期期间的重要事件 在Web.conf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论