ASP.NET网站的系统架构和性能优化
作者:谢运佳
来源:《电脑知识与技术·学术交流》2008年第24期
摘要:随着互联网的发展,新技术层出不穷,基于ASP.NET平台的网站和应用越来越广泛,用户对网站的访问速度的要求也越来越高。网站的访问速度取决于很多因素,该文主要从网站的系统架构和性能优化两方面入手,结合实际经验,提出一些最佳技术实践和解决方案,供大家参考。
关键词:ASP.NET;网站架构;性能优化
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)24-1166-02 ASP.NET Website Architecture and Performance Optimization XIE Yun-jia
(School of Educational Technology and Communication,GuangDong Polytechnic Normal University,Guangzhou 510665,China)
Abstract: With the development of the Internet and new technology, Website based on ASP.NET is becoming more and more widely used. Meanwhile, the users have a growing demand of the speed of visiting the web pages, which is decided by many factors. This paper combined with own practical experiences, gives some best practices and technology solutions on how to build an ASP.NET-Based website of multi-layer architecture with best performance.
Key words: ASP.NET;website architecture;performance optimization
随着互联网的发展,新技术层出不穷,基于ASP.NET的网站和应用越来越广泛,用户对网站的访问速度的要求也越来越高。网站的访问速度取决于很多因素,例如网络的速度、服务器的性能、网站的系统架构、数据库的应用策略,以及Web页面本身的设计等等。本文主要从网站的系统架构和网站性能优化两方面入手,结合自己的一些实际经验,并以广州市天河区教育局门户网站为例子,提出一些最佳技术实践和解决方案。
1 ASP.NET网站的系统架构
龙源期刊网 http://www.qikan.com.cn
系统架构是指将应用系统的每个功能部分垂直地分解到各个独立的逻辑层中,每个逻辑层只与相邻的逻辑层通过接口通讯。ASP.NET网站通常采用三层的系统架构,如图1所示:
图1 网站三层系统架构
1) 表示层:网站与用户交互的界面,由动态Web页面组成。
2) 业务层:获得表示层用户的输入,执行业务处理,调用数据层,并把结果返回给表示层呈现给用户。
3) 数据层:负责保存和维护系统数据。
这种分层的系统架构带来的好处是高性能、灵活性、可维护性和可扩展性。
广州市天河区教育局门户网站就采用这种典型的3层架构,获得较好的性能,并为以后的系统维护和功能扩展留有空间,网站采用IIS6.0 作为Web服务器,SQL Server 2005 作为数据库服务器,以Visual Studio 2005 作为开发工具,采用C#语言,基于ASP.NET 2.0平台开发完成。
2 ASP.NET网站的性能优化
良好的网站系统架构只是获得优异的网站性能的第一步,针对不同的需求还需要采取更多的优化措施,来获得更好的性能,让用户等待的时间更短,为用户提供更好的使用体验和更便捷的服务。
2.1 数据层的性能优化
龙源期刊网 http://www.qikan.com.cn
大规模、多用户、高流量的网站,最大的性能瓶颈就是数据层,例如:数据库连接打开和关闭,数据表的连接,数据的检索和排序等。所以数据层是首先需要优化的地方。
1)开启并设置数据库连接池。可以通过数据库连接字符串中的Max Pool Size 和Mini Pool Size来设置最大连接数和最小连接数,来获得较好的性能。例如:\"Server=(local); Integrated Security = SSPI; Database=MyDatabase; Max Pool Size=100; Min Pool Size=5\"。
2) 采用存储过程。存储过程是数据库内置的用来访问和维护数据的内部程序,具有预编译、速度快、效率高、灵活安全等特点。使用存储过程会牺牲一定的可移植性,但带来的却是性能几倍的提升。
3) 其他的方法,例如:为数据表添加索引,可以提高查询速度;谨慎使用多表连接和嵌套的查询,用内连接或者左连接代替;数据表庞大时,分割数据表等等。 2.2 业务层的优化
业务层是集中完成业务逻辑的地方,同时向上连接表示层,向下连接数据层,也是性能优化一个关键的地方。可以采取的措施包括“数据缓存和SQL缓存依赖”、“用户自定义控件”和“处理回传事件”。
1) 数据缓存和SQL缓存依赖。缓存可以极大地提高网站性能,是系统性能优化一个需要重点考虑的方面。借助ASP.NET 2.0配合SQL Server 2005,可以采用“数据缓存加SQL缓存依赖”的技术方案。数据缓存应用了Cache机制,任何添加到缓存中的项目都能被任何其他页面、控件或者组件访问。把经常需要的数据放入数据缓存项中,即可以在多个页面和组件中共享信息,又可以减少数据库的连接次数,这可以明显缩短系统相应时间和提高系统性能。如果缓存项中的数据依赖数据库中的数据,则可以通过SQL缓存依赖,在指定的数据库中的数据发生修改时,自动地重新载入缓存数据。
2) 用户自定义控件。用户自定义控件一方面可以提高软件组件的复用程度,提高软件开发和生产效率,另一方面还可以提高系统性能,特别是在一个大的页面上存在一个或者多个局部的刷新或者更新。把大页面上每个单独刷新或者更新的部分,定义成用户自定义控件,当更新时,服务器只需要处理和传输这个控件的数据,减轻服务器的负担,降低网络带宽的压力。 3) 处理回传事件。通过Page类的IsPostBack属性来判断是新的请求还是回传事件,如果是回传事件,则无需重新载入页面控件和数据,可以节省时间和带宽。 2.3 表示层的优化
龙源期刊网 http://www.qikan.com.cn
表示层是负责显示和与用户交互的动态Web页面,表示层的优化可以从以下几个方面入手。
1) 页面输出缓存。页面输出缓存不同于数据缓存:数据缓存是缓存数据库中读取的数据或者应用程序计算出来的数据,页面输出缓存则是缓存整个Web页面所呈现的内容,当下一次用户请求的时候,就直接从缓存中取出这个页面。更深入一点的优化手段还可以使用带参数的页面输出缓存和部分页面缓存。
2) 生成静态页面。页面输出缓存的一个替代方案就是让动态的Web页面生成静态的HTML页面,这也是一个可以显著提高页面打开速度的方法,特别是网站首页,访问的人数多,又包含很多部分都是需要从数据库中读取数据然后进行逻辑处理的,如果是生成静态的HTML页面,不需要访问数据库也没有逻辑处理,页面生成和显示的速度提高不少。 3) 管理ViewState。ViewState用于维护客户端在回传过程中的页面状态,随着页面上控件数目的增多,ViewState信息将明显增大,导致大量的网络传输和服务器压力。通过有选择性的禁用控件的ViewState,可以显著改善网络流量和网站性能。
4) 单独的CSS和JavaScript脚本文件。把CSS和JavaScript脚本文件单独放入一个文件中,可以减小页面文件的体积,还可以在整个网站中共享脚本,减少重复下载。 2.4 服务器的分工
除了系统架构和程序设计之外,另外一个对网站性能有重要影响是服务器的分工。一个好的建议是采用3个独立的服务器:Web服务器、数据库服务器、文件下载和图片服务器,各司其职,即安全,又可以避免因为文件和图片下载占用了大量的CPU时间和网络带宽。 3 结束语
网站的系统架构和性能优化是一个没有尽头的研究之路,系统架构师和程序员总在追求极致性能的解决方案。本文分析了ASP.NET网站的典型的三层系统架构,并从数据层,业务层,表示层和服务器的分工四个方面,提出一些性能优化的方案,供大家参考。
参考文献:
龙源期刊网 http://www.qikan.com.cn
[1] Stephen Walther.ASP.NET揭秘(卷2)[M].谭振林,译.北京:人民邮电出版社,2007:135-190.
[2] 张英刚.NET平台网站架构调优实践点滴[J].程序员,2008(1):83-84.
[3] Cristian Darie,Karli Watson.ASP.NET2.0电子商务开发实战[M].施游,译.北京:人民邮电出版社,2007:147-153.
[4] 张南平,陈小倩.ASP.NET性能优化[J].微机发展,2005(8):88-91.
[5] 曾诚.高性能ASP.NET应用程序的探讨与研究[J].湖北大学学报:自然科学版,2004(1):19-22.
[6] 沈军.基于ASP.NET2.0技术的Web数据库多层架构设计与实现[J].电子测量技术,2008(2):76-79.
[7] 张松,李曦.分布式多层架构中中间层的优化设计[J].计算机应用,2005(5):1058-1060.
因篇幅问题不能全部显示,请点此查看更多更全内容