编写高性能web应用程序的10个入门技巧

编写高性能web应用程序的10个入门技巧

ID:26315037

大小:54.50 KB

页数:10页

时间:2018-11-26

编写高性能web应用程序的10个入门技巧_第1页
编写高性能web应用程序的10个入门技巧_第2页
编写高性能web应用程序的10个入门技巧_第3页
编写高性能web应用程序的10个入门技巧_第4页
编写高性能web应用程序的10个入门技巧_第5页
资源描述:

《编写高性能web应用程序的10个入门技巧》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、编写高性能Web应用程序的10个入门技巧文章类别:ASP.NET技巧来源:作者:发表日期:2006-11-9字体:[大中小]  使用ASP.NET编写Web应用程序的简单程度令人不敢相信。正因为如此简单,所以很多开发人员就不会花时间来设计其应用程序的结构,以获得更好的性能了。在本文中,我将讲述10个用于编写高性能Web应用程序的技巧。但是我并不会将这些建议仅局限于ASP.NET应用程序,因为这些应用程序只是Web应用程序的一部分。本文不作为对Web应用程序进行性能调整的权威性指南—一整本书恐怕都无法轻松讲清楚这个问题。请将本文视作一个很好的起点。  成为工作狂之前,我原来喜欢攀岩。在

2、进行任何大型攀岩活动之前,我都会首先仔细查看指南中的路线,阅读以前游客提出的建议。但是,无论指南怎么好,您都需要真正的攀岩体验,然后才能尝试一个特别具有挑战性的攀登。与之相似,当您面临修复性能问题或者运行一个高吞吐量站点的问题时,您只能学习如何编写高性能Web应用程序。  我的个人体验来自在Microsoft的ASP.NET部门作为基础架构程序经理的经验,在此期间我运行和管理www.ASP.NET,帮助设计社区服务器的结构,社区服务器是几个著名ASP.NET应用程序(组合到一个平台的ASP.NETForums、.Text和nGallery)。我确信有些曾经帮助过我的技巧对您肯定也会有

3、所帮助。  您应该考虑将应用程序分为几个逻辑层。您可能听说过3层(或者n层)物理体系结构一词。这些通常都是规定好的体系结构方式,将功能在进程和/或硬件之间进行了物理分离。当系统需要扩大时,可以很轻松地添加更多的硬件。但是会出现一个与进程和机器跳跃相关的性能下降,因此应该避免。所以,如果可能的话,请尽量在同一个应用程序中一起运行ASP.NET页及其相关组件。  因为代码分离以及层之间的边界,所以使用Web服务或远程处理将会使得性能下降20%甚至更多。  数据层有点与众不同,因为通常情况下,最好具有专用于数据库的硬件。然而进程跳跃到数据库的成本依然很高,因此数据层的性能是您在优化代码时首

4、先要考虑的问题。  在深入应用程序的性能修复问题之前,请首先确保对应用程序进行剖析,以便找出具体的问题所在。主要性能计数器(如表示执行垃圾回收所需时间百分比的计数器)对于找出应用程序在哪些位置花费了其主要时间也非常有用。然而花费时间的位置通常非常不直观。  本文讲述了两种类型的性能改善:大型优化(如使用ASP.NET缓存),和进行自身重复的小型优化。这些小型优化有时特别有意思。您对代码进行一点小小的更改,就会获得很多很多时间。使用大型优化,您可能会看到整体性能的较大飞跃。而使用小型优化时,对于某个特定请求可能只会节省几毫秒的时间,但是每天所有请求加起来,则可能会产生巨大的改善。  数

5、据层性能  谈到应用程序的性能调整,有一个试纸性的测试可用来对工作进行优先级划分:代码是否访问数据库?如果是,频率是怎样的?请注意,这一相同测试也可应用于使用Web服务或远程处理的代码,但是本文对这些内容未做讲述。  如果某个特定的代码路径中必需进行数据库请求,并且您认为要首先优化其他领域(如字符串操作),则请停止,然后执行这个试纸性测试。如果您的性能问题不是非常严重的话,最好花一些时间来优化一下与数据库、返回的数据量、进出数据库的往返频率相关的花费时间。  了解这些常规信息之后,我们来看一下可能会有助于提高应用程序性能的十个技巧。首先,我要讲述可能会引起最大改观的更改。  技巧1—

6、返回多个结果集  仔细查看您的数据库代码,看是否存在多次进入数据库的请求路径。每个这样的往返都会降低应用程序可以提供的每秒请求数量。通过在一个数据库请求中返回多个结果集,可以节省与数据库进行通信所需的总时间长度。同时因为减少了数据库服务器管理请求的工作,还会使得系统伸缩性更强。  虽然可以使用动态SQL返回多个结果集,但是我首选使用存储过程。关于业务逻辑是否应该驻留于存储过程的问题还存在一些争议,但是我认为,如果存储过程中的逻辑可以约束返回数据的话(缩小数据集的大小、缩短网络上所花费时间,不必筛选逻辑层的数据),则应赞成这样做。  使用SqlCommand实例及其ExecuteRea

7、der方法填充强类型的业务类时,可以通过调用NextResult将结果集指针向前移动。图1显示了使用类型类填充几个ArrayList的示例会话。只从数据库返回您需要的数据将进一步减少服务器上的内存分配。Figure1ExtractingMultipleResultsetsfromaDataReader//readthefirstresultsetreader=command.ExecuteReader();//readthedatafromthatresu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。