ASP.NET网站的系统架构和性能优化

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:liuqinggang
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着互联网的发展,新技术层出不穷,基于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网站的系统架构
  
  系统架构是指将应用系统的每个功能部分垂直地分解到各个独立的逻辑层中,每个逻辑层只与相邻的逻辑层通过接口通讯。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 数据层的性能优化
  大规模、多用户、高流量的网站,最大的性能瓶颈就是数据层,例如:数据库连接打开和关闭,数据表的连接,数据的检索和排序等。所以数据层是首先需要优化的地方。
  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 表示层的优化
  表示层是负责显示和与用户交互的动态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网站的典型的三层系统架构,并从数据层,业务层,表示层和服务器的分工四个方面,提出一些性能优化的方案,供大家参考。
  
  参考文献:
  [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.
其他文献
书名:传统文化研究  作者:舒坤尧  出版社:中國水利水电出版社  出版时间:2016年  ISBN:9787517037101  定价:54元  中华文化源远流长,绵延至今。在中华民族伟大复兴的历史性节点上,发扬并传承优秀传统文化势在必行。笔者在完成科研项目“广西民族地区通用语言态度和使用情况实证研究”(项目编号:桂教师范【2019】27号)时,参考了舒坤尧编著、中国水利水电出版社出版的《传统文
摘要:《全唐诗》对唐代诗歌进行比较全面的整理和辑录,尽管在编纂内容和作品次序等方面存在着许多争议,但并不影响它的文献价值和文学价值。本文以《全唐诗》为切入点,对其音乐神韵的美学内涵进行了简要分析,以此来充分认识唐代诗歌在音乐美学方面的重要价值。  关键词:《全唐诗》 音乐性 美学价值 研究  引言  唐代是诗歌的国度,是诗歌发展的顶峰,树立了后世永远无法企及的艺术丰碑。目前,文坛存有五万多首唐诗,
摘要:介绍了VxWorks下USB驱动的层次结构,分析了USB设备驱动程序开发的一般方法和关键技术。在此基础上实现了VxWorks下LM9833设备驱动,达到了预期目标。所给出的VxWorks下USB设备驱动设计的一般步骤为在VxWorks下开发其它USB设备驱动提供了参考。  关键词:VxWorks;USB设备驱动;管道;回调  中图分类号:TP316文献标识码:A文章编号:1009-3044(
卢纶是中唐著名诗人,他的《塞下曲》尤其出名,是中唐边塞诗的优秀代表作。《塞下曲》又叫《和张仆射塞下曲》,共六首。根据《卢纶诗集校注》的意见,这一组诗当作于贞元二年(公元786年)秋,时卢纶三十九岁,是名将浑一成不瑊的幕僚。从题目看,这组边塞诗是卢纶与诗友张延赏的唱和之作。“林暗草惊风”[1]是这组诗的第二首,虽不如第三首“月黑雁飞高”那样广受赞誉,却也有不少好评,而且这首诗在唐代李广形象接受史上有
摘要:针对C语言课程传统模式教学中的问题,我们进行了改革与探索,建立了新的教学模式。新教学模式采用了实例教学法、形象比喻法等手段,取得了良好的教学效果。  关键词:程序设计;实例教学;错误分析;上机实践  中图分类号:G642文献标识码:A文章编号:1009-3044(2008)08-11ppp-0c    1 引言    随着高等教育事业的不断发展,教学改革正在逐步深化,给我们的教学工作提出了新
作为中华民族的“根”与“魂”,传统文化涉及的内容非常广泛,蕴含着广博的哲学思想和人文精神,也是我国古代道德教育的重要载体和形式。当下,发掘传统文化中丰富的德育资源,关注传统文化的德育价值,不仅能够提升人们的思想道德素质和文化软实力,还能够推动社会和谐发展,激发世代依存的道德情感,从而更好地构筑中国精神、中国价值、中國力量。陈守聪、王珍喜编著的《中国传统文化的价值与现代德育构建》一书基于对中华传统文
摘要:网络改变着我们得生活,越来越多的人都通过网络来观看电视节目,让人们有了更多的频道选择。在此基础上,各种基于P2P 流媒体播放软件层出不穷,本文将着重介绍P2P 流媒体技术,包括流媒体传输协议以及如何实时传送。最后简要介绍流媒体播放的实现架构。  关键词:P2P;流媒体;流式传输  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)15-2pppp-0c    Abs
摘要:在数据库开发时,编号问题是必须要考虑的问题。该文主要介绍了自动编号与手工编号的几种编号方法,通过具体实例讨论它们的生成方法、实现过程及优缺点。用户可以结合自己的实际需要来选择合适的编号方法。  关键词:编号方法;SQL Server;数据库  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)24-1109-04  Brief Analysis of Coding
他秉持“处处留心皆学问”的古训,对生活、对外界事物始终保持着新闻工作者长期养成的职业敏感,处处留心,事事留意,继而抓拍到了一些有趣味、有意境的人物和场景。  在人人都是“报道员”的新媒体时代,似乎只要有手机、相机,就可以拍拍照、摄摄影,其实这是一种误解。要知道,和其他艺术门类一样,摄影不仅仅是一项技术活。要想出一点“彩”,或者拍出佳作、力作,没有对生活的热爱和对技术的精益求精,没有对艺术的不懈追求
摘要:随着计算机网络的飞速发展,各企业及院校的网络已大量普及,虽然windows2000server被大多数网络中心作为各种服务端的操作系统,但linux也以其运行速度快、具有良好的代码开放性、适应性强、支持多用户多文件系统、各种网络服务如(FTP、WWW、Email)容易构建及维护等特点被广泛应用。文章通过对Linux和APACHE的介绍,就具体如何在Linux下构建WWW服务作了说明。  关键