关于ASP.NET的性能优化及其安全性的探讨(2)
作者:佚名; 更新时间:2014-12-05
从某种意义上说, 视图状态是有史以来最伟大的事情。毕竟, 视图状态使页面和控件能够在回发之间保持状态。因此, 不必像在传统的ASP中那样编写代码, 以防止在单击按钮时文本框中的文本消失, 或在回发后重新查询数据库和重新绑定DataGrid。但是, 视图状态也有缺点: 当它增长得过大时, 某些控件(例如文本框) 会根据视图状态做出相应判断; 其他控件(特别是DataGrid 和GridView) 则根据显示的信息量确定视图状态。一个糟糕的GridView 容易将浏览器和Web 服务器之间连接的有效带宽减少50%以上。ASP.NET 2.0能够提供比ASP.NET 1.x 更简单的方法将视图状态保留在会话状态中。
(2)尽量减少服务器控件的使用
服务器端的控件不仅能生成视图状态,它们也需要额外的运行时间处理绑定到成员变量。由于它们会使用服务器资源,即使它们非常易于使用, 但是服务器控件并不总是完成任务的最佳选择, 在许多情况下, 一个简单的呈现或数据绑定代入就可以完成任务。所以,Web页面上服务器端的控件应该保持在最低的数量上。
(3)把异常减到最少
不要依赖代码中的异常。因为异常大大地降低性能, 所以不应该将它们用作控制正常程序流程的方式。
异常是通知程序执行期间发生的错误的一个非常有用的设备。程序不能忽视异常——它们将会改变程序的执行流。在ASP.NET运行时的托管环境中,用try和catch设置异常处理代码只对性能有可以忽略不计的影响,但程序抛出异常时却有性能的损失。如果将try…catch语句使用为if语句,将抛出更少的异常,运行得更快。
3.有效使用内存和缓存
只要可能, 就缓存数据和页面输出。使用ASP.NET 缓存机制有两点需要注意。首先, 不要缓存太多项,缓存每个项均有开销, 特别是在内存使用方面。不要缓存容易重新计算和很少使用的项。其次, 给缓存的项分配的有效期不要太短。很快到期的项会导致缓存中不必要的周转, 并且经常导致更多的代码清除和垃圾回收工作。高周转率可能说明存在问题, 特别是当项在到期前被移除时。
不要给每个请求分配过多内存, 因为这样垃圾回收器将必须更频繁地进行更多工作。另外, 不要让不必要的指针指向对象, 因为它们将使对象保持活动状态, 并且应尽量避免含Finalize 方法的对象, 因为它们在后面会导致更多的工作。特别是在Finalize调用中永远不要释放资源, 因为资源在被垃圾回收器回收之前可能一直消耗着内存。最后这个问题经常会对Web 服务器环境的性能造成毁灭性的打击, 因为在等待Finalize 运行时, 很容易耗尽某个特定的资源。
二、安全性
ASP.NET提供了一个很健壮的安全系统,我们可以轻松地利用这个安全系统消除在ASP中为Web应用程序提供用户级别的安全性而编写的大量代码。这就意味着你需要编写较少的代码可以实现标准化的安全。
1.ASP.NET 的配置体系和安全体系
NET 框架提供了一个丰富又灵活的配置系统, 使得应用程序开发及管理人员能够在整个应用程序、站点和计算机中定义和使用可扩展的配置数据。其中Machine.Config 为整个Web 服务器提供配置设置, 每一个ASP.NET Web 应用程序根目录以及各级子文件夹都可以有自己的名称为Web. Config 的配置文件。配置文件都是基于XML 格式的文本文件, 通常用来保存一些常量或者安全设置、SQL 连接字符串和其他常规的配置数据等。每一个Web. Config 文件只在该文件夹和其子文件夹下起作用, 每个子文件夹的配置继承父文件夹的的配置, 并覆盖相同的选项。对于在Web. Config 中没有进行设置的属性, 其取值将继承Machine. Config 中属性的设置。如果配置文件被更改, ASP.NET 将检测到新的配置并自动使它起作用, 无需重新启动服务器。另外, ASP.NET 通过配置IIS 来保护各级Web. Config 配置文件, 拒绝浏览器直接URL 访问。
上一篇:试析信息素质与计算机应用能力
下一篇:浅析职高计算机教学“三步曲”
热门论文