关于ASPNET的性能优化及其安全性的探讨.docx
- 文档编号:5934941
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:3
- 大小:18.23KB
关于ASPNET的性能优化及其安全性的探讨.docx
《关于ASPNET的性能优化及其安全性的探讨.docx》由会员分享,可在线阅读,更多相关《关于ASPNET的性能优化及其安全性的探讨.docx(3页珍藏版)》请在冰豆网上搜索。
关于ASPNET的性能优化及其安全性的探讨
关于ASP.NET的性能优化及其安全性的探讨
[论文关键词] 性能优化安全性
[论文摘要]本文主要从在网站开发中的性能及其安全性入手,介绍了如何将Web应用程序运行得越来越快,并且能够得到扩展以处理 性能表示系统执行任务的速度和效率。
就Web站点的性能而言,它对整个站点的点击率起着不可忽视的作用。
如果一个性能很差的网站长期没有改进,你就会发现潜在的用户全都跑光了。
1.利用JIT编译器提高程序执行速度
高性能代码旨在能少做工作就少做工作,这是不言而明的。
在编译任何的应用程序时,编译器把源代码转换为Microsoft中间语言。
要在一个具体环境中执行应用程序,一个JIT编译器先接受MSIL输出并把指令转换为主机处理的本机指令,再以即时方式编译代码,以便应用程序开始执行。
但是,JIT编译器不是把程序集中所有的MSIL都在开始执行前转换为本机代码,只是一次编译一个方法。
JIT编译器采用的这种方法有两个性能上的优势。
第一个优势:
这项技术把编译的成本分摊在一个较长的时间内,由于执行会比JIT编译器把所有的MSIL都进行编译看起来要快,这样感觉到应用程序的性能提高了。
如果把长时间的暂停或等待时间分成小块,把它们分散开,你的用户就不会注意到它们,用户对你的应用程序的性能也会比较满意。
第二个优势:
JIT编译器不编译在执行期间用不到的方法。
因此不会做没有必要的工作,无论什么时候省去不必要的处理工作,你就会发现可以获得真正的性能增益。
2.减少运行时的工作
在底层,基础结构为了让我们工作轻松,做了大量的基础工作。
虽然把这个体系结构用做一个黑盒很不错,但有时了解使一切如此无缝的运行的实现细节也是很有益的。
掌握了这些额外的信息,我们经常可以更有效地在运行程序时获得速度上的优势。
其实现主要有以下三种方法:
(1)视图状态的优化
视图状态是性能的无声杀手。
自动视图状态管理是服务器控件的功能,该功能使服务器控件可以在往返过程上重新填充它们的属性值(不需要编写任何代码)。
但是,因为服务器控件的视图状态在隐藏的窗体字段中往返于服务器,所以该功能确实会对性能产生影响。
因此,开发人员应该知道在哪些情况下视图状态会有所帮助,在哪些情况下它影响配器的性能。
例如,如果将服务器控件绑定到每个往返过程的数据上,则将用数据绑定操作获得的新值替换保存的视图状态。
在这种情况下,禁用视图状态可以节省处理时间。
默认情况下,为所有服务器控件启用视图状态。
若要禁用视图状态,将控件的EnableViewState属性设置为false。
从某种意义上说,视图状态是有史以来最伟大的事情。
毕竟,视图状态使页面和控件能够在回发之间保持状态。
因此,不必像在传统的ASP中那样编写代码,以防止在单击按钮时文本框中的文本消失,或在回发后重新查询数据库和重新绑定DataGrid。
但是,视图状态也有缺点:
当它增长得过大时,某些控件(例如文本框)会根据视图状态做出相应判断;其他控件(特别是DataGrid和GridView)则根据显示的信息量确定视图状态。
一个糟糕的GridView容易将浏览器和Web服务器之间连接的有效带宽减少50%以上。
能够提供比 更简单的方法将视图状态保留在会话状态中。
(2)尽量减少服务器控件的使用
服务器端的控件不仅能生成视图状态,它们也需要额外的运行时间处理绑定到成员变量。
由于它们会使用服务器资源,即使它们非常易于使用,但是服务器控件并不总是完成任务的最佳选择,在许多情况下,一个简单的呈现或数据绑定代入就可以完成任务。
所以,Web页面上服务器端的控件应该保持在最低的数量上。
(3)把异常减到最少
不要依赖代码中的异常。
因为异常大大地降低性能,所以不应该将它们用作控制正常程序流程的方式。
异常是通知程序执行期间发生的错误的一个非常有用的设备。
程序不能忽视异常——它们将会改变程序的执行流。
在运行时的托管环境中,用try和catch设置异常处理代码只对性能有可以忽略不计的影响,但程序抛出异常时却有性能的损失。
如果将try…catch语句使用为if语句,将抛出更少的异常,运行得更快。
3.有效使用内存和缓存
只要可能,就缓存数据和页面输出。
使用缓存机制有两点需要注意。
首先,不要缓存太多项,缓存每个项均有开销,特别是在内存使用方面。
不要缓存容易重新计算和很少使用的项。
其次,给缓存的项分配的有效期不要太短。
很快到期的项会导致缓存中不必要的周转,并且经常导致 提供了一个很健壮的安全系统,我们可以轻松地利用这个安全系统消除在ASP中为Web应用程序提供用户级别的安全性而编写的大量代码。
这就意味着你需要编写较少的代码可以实现标准化的安全。
的配置体系和安全体系
NET框架提供了一个丰富又灵活的配置系统,使得应用程序开发及管理人员能够在整个应用程序、站点和计算机中定义和使用可扩展的配置数据。
其中为整个Web服务器提供配置设置,每一个Web应用程序根目录以及各级子文件夹都可以有自己的名称为Web.Config的配置文件。
配置文件都是基于XML格式的文本文件,通常用来保存一些常量或者安全设置、SQL连接字符串和其他常规的配置数据等。
每一个Web.Config文件只在该文件夹和其子文件夹下起作用,每个子文件夹的配置继承父文件夹的的配置,并覆盖相同的选项。
对于在Web.Config中没有进行设置的属性,其取值将继承Machine.Config中属性的设置。
如果配置文件被更改, 将检测到新的配置并自动使它起作用,无需重新启动服务器。
另外, 通过配置IIS来保护各级Web.Config配置文件,拒绝浏览器直接URL访问。
身份验证和授权策略
当IIS收到用户请求时,它首先查看资源是如何受到保护的。
资源可以用匿名访问保护,或者用标准的本地或活动目录证书保护。
接下来,IIS通过标准的访问控制列表查看用户对请求的资源是否有访问权限。
如果任一项检查失败,IIS甚至在请求到达之前就拒绝它。
在上述过程中发生了两件事。
用户身份验证,然后被授权。
如果一个资源被请求,IIS对请求进行了身份验证并授权,下一步是由提供它自己的身份验证和授权。
这为开发人员自定义的身份验证提供了基础结构,不必从头开发一个安全基础结构。
在应用程序中为验证用户身份提供了三种方法:
(1)Windows身份验证
Windows身份验证提供了与传统的Windows账号相似的集成。
该模式的工作方式和正常的IIS身份验证相同。
在这种模式下,要禁用对你站点的匿名访问,以保护你的站点不被未授权用户侵入。
然后要更新Web.Config文件,指定身份验证模式为Windows身份验证,并指定应该使用用户被IIS质询时输入的证书作为该应用程序的证书。
Windows身份验证是最快的身份验证模式,因为它依赖于IIS模式,因为你不能控制登录页面模式的证书来源——并且该模式要求通过网络访问Windows证书来源,这就意味着它不十分适合于公共的Web应用程序,因为你不能控制客户端或网络访问。
(2)Forms身份验证
Forms身份验证允许开发人员生成他们自己的标准登录页面,并根据文件中的条目进行身份验证,或者使用他们自己的身份验证文件。
Forms身份验证是可自定义性最强的身份验证方法。
因为你能够控制身份验证文件和方法。
和Windows身份验证不同的是Forms身份验证要求单独访问证书来源。
应尽量简化身份验证例程,并去除总想包括在内的外部元素。
这些工作只能放在其他时间来作,它们只会延缓登录进程。
(3)Passport身份验证
Passport身份验证允许你把你的应用程序和MicrosoftPassport服务集成在一起。
该模式的基本工作方式是当检测一个未进行身份验证的请求时,把登录证书从一个Passport登录窗口发送到Passport服务。
Passport身份验证是最慢的身份验证方法,因为为了验证证书,它要求通过Internet进行Web服务类型的通信。
Passport方法也是有前途的,因为用户只要记住一套证书就能登录到受Passport保护的Web站点中。
三、结束语
对网站来说,性能和安全性十分重要。
提供了若干新的策略和编程方式,在信息产业高速发展的今天,只有将这些新的策略和编程方式合理应用到站点的开发中,以此来提高站点的性能和安全性,我们的站点才会受到
[1]ScottWorle着王文龙刘湘宁译:
ASP.NET技术内幕[M].人民邮电出版社,2002
[2]AllenJamesAvery着侯译:
ASP.NET性能高级编程[M].清华大学出版社,2003
[3]Patrick ASP.NET Revealed[M].WroxPress,2004
尚俊杰秦卫中:
程序设计案例教程[M].北京:
清华大学出版社,2005
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关于 ASPNET 性能 优化 及其 安全性 探讨
![提示](https://static.bdocx.com/images/bang_tan.gif)