ASP.NET的性能优化及其安全性的探讨

来源 :商场现代化 | 被引量 : 0次 | 上传用户:green_wong
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要] 本文主要从ASP.NET在网站开发中的性能及其安全性入手,介绍了如何将Web应用程序运行得越来越快,并且能够得到扩展以处理更多的并发用户,以及如何利用ASP.NET的安全系统来实现最高性能的安全代码。
  [关键词] ASP.NET 性能优化 安全性
  
  我们用ASP.NET开发网站,无论我们写的ASP.NET应用程序有多么好,无论在Web站点中添加了多少很酷的新特性,如果我们的站点在处理用户请求时哪怕只是让用户等待了几秒钟,用户也不会对我们的站点留下好印象。事实上,如果用户等得太久,他们就会放弃而去访问另一个站点。那么,如何才能提高站点的响应速度,这就要考虑到我们在开发过程中如何优化ASP.NET的性能。
  
  一、性能开发及其优化
  
  性能表示系统执行任务的速度和效率。就Web站点的性能而言,它对整个站点的点击率起着不可忽视的作用。如果一个性能很差的网站长期没有改进,你就会发现潜在的用户全都跑光了。
  
  1.利用JIT编译器提高程序执行速度
  高性能代码旨在能少做工作就少做工作,这是不言而明的。
  在编译任何ASP.NET的应用程序时,编译器把源代码转换为Microsoft中间语言(MSIL)。要在一个具体环境中执行应用程序,一个JIT编译器先接受MSIL输出并把指令转换为主机处理的本机指令,再以即时方式编译代码,以便应用程序开始执行。但是,JIT编译器不是把程序集中所有的MSIL都在开始执行前转换为本机代码,只是一次编译一个方法。JIT编译器采用的这种方法有两个性能上的优势。第一个优势:这项技术把编译的成本分摊在一个较长的时间内,由于执行会比JIT编译器把所有的MSIL都进行编译看起来要快,这样感觉到应用程序的性能提高了。如果把长时间的暂停或等待时间分成小块,把它们分散开,你的用户就不会注意到它们,用户对你的应用程序的性能也会比较满意。第二个优势:JIT编译器不编译在执行期间用不到的方法。因此不会做没有必要的工作,无论什么时候省去不必要的处理工作,你就会发现可以获得真正的性能增益。
  
  2.减少运行时的工作
  在底层,ASP.NET基础结构为了让我们工作轻松,做了大量的基础工作。虽然把这个体系结构用做一个黑盒很不错,但有时了解使一切如此无缝的运行的实现细节也是很有益的。掌握了这些额外的信息,我们经常可以更有效地在运行程序时获得速度上的优势。其实现主要有以下三种方法:
  (1)视图状态的优化
  视图状态是性能的无声杀手。自动视图状态管理是服务器控件的功能, 该功能使服务器控件可以在往返过程上重新填充它们的属性值(不需要编写任何代码)。但是, 因为服务器控件的视图状态在隐藏的窗体字段中往返于服务器, 所以该功能确实会对性能产生影响。因此, 开发人员应该知道在哪些情况下视图状态会有所帮助, 在哪些情况下它影响配器的性能。例如, 如果将服务器控件绑定到每个往返过程的数据上, 则将用数据绑定操作获得的新值替换保存的视图状态。在这种情况下, 禁用视图状态可以节省处理时间。默认情况下, 为所有服务器控件启用视图状态。若要禁用视图状态,将控件的EnableViewState 属性设置为false。
  从某种意义上说, 视图状态是有史以来最伟大的事情。毕竟, 视图状态使页面和控件能够在回发之间保持状态。因此, 不必像在传统的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 访问。
  
  2.ASP.NET身份验证和授权策略
  当IIS收到用户请求时,它首先查看资源是如何受到保护的。资源可以用匿名访问保护(大多数Web站点都是如此),或者用标准的本地或活动目录证书保护。接下来,IIS通过标准的访问控制列表(ACL)查看用户对请求的资源是否有访问权限。如果任一项检查失败,IIS甚至在请求到达ASP.NET之前就拒绝它。
  在上述过程中发生了两件事。用户身份验证,然后被授权。如果一个ASP.NET资源被请求,IIS对请求进行了身份验证并授权,下一步是由ASP.NET提供它自己的身份验证和授权。这为开发人员自定义的身份验证提供了基础结构,不必从头开发一个安全基础结构。
  ASP.NET在应用程序中为验证用户身份提供了三种方法:
  (1)Windows身份验证
  Windows身份验证提供了与传统的Windows账号(或者是活动目录账号或者是本地账号)相似的集成。该模式的工作方式和正常的IIS身份验证相同。在这种模式下,要禁用对你站点的匿名访问,以保护你的站点不被未授权用户侵入。然后要更新Web. Config文件,指定身份验证模式为Windows身份验证,并指定ASP.NET应该使用用户被IIS质询时输入的证书作为该应用程序的证书。
  Windows身份验证是最快的身份验证模式,因为它依赖于IIS模式,因为你不能控制登录页面模式的证书来源——并且该模式要求通过网络访问Windows证书来源,这就意味着它不十分适合于公共的Web应用程序,因为你不能控制客户端或网络访问。
  (2)Forms身份验证
  Forms身份验证允许开发人员生成他们自己的标准登录页面,并根据Web.Config文件中的条目进行身份验证,或者使用他们自己的身份验证文件。Forms身份验证是可自定义性最强的身份验证方法。因为你能够控制身份验证文件和方法。
  和Windows身份验证不同的是Forms身份验证要求单独访问证书来源(即使证书存储在Web.Config中)。应尽量简化身份验证例程,并去除总想包括在内的外部元素(像检索个性化设置、用户图片等)。这些工作只能放在其他时间来作,它们只会延缓登录进程。
  (3)Passport身份验证
  Passport身份验证允许你把你的应用程序和Microsoft Passport服务集成在一起。该模式的基本工作方式是当检测一个未进行身份验证的请求时,ASP.NET把登录证书从一个Passport登录窗口(在Web服务器上安装Passport服务时也安装该登录窗口)发送到Passport服务。
  Passport身份验证是最慢的身份验证方法,因为为了验证证书,它要求通过Internet进行Web服务类型的通信。Passport方法也是有前途的,因为用户只要记住一套证书就能登录到受Passport保护的Web站点中。
  
  三、结束语
  
  对网站来说, 性能和安全性十分重要。ASP.NET 提供了若干新的策略和编程方式,在信息产业高速发展的今天,只有将这些新的策略和编程方式合理应用到站点的开发中,以此来提高站点的性能和安全性,我们的站点才会受到更多的用户的亲睐。
  
  参考文献:
  [1 ]Scott Worle著王文龙刘湘宁译:ASP. NET技术内幕[M]. 人民邮电出版社,2002
  [2 ]K.scott AllenJames Avery著侯译:ASP. NET性能高级编程[M].清华大学出版社,2003
  [3 ]Patrick A.Lorenz. ASP. NET 2.0 Revealed[M].Wrox Press ,2004
  [4]尚俊杰秦卫中:ASP.NET 程序设计案例教程[M].北京:清华大学出版社,2005
其他文献
[摘 要] 本文采用求和自回归移动平均模型(ARIMA),对我国1952年~2006年的就业人数的数据进行时间序列分析,结果显示ARIMA(2,1,1)模型提供了较准确的预测结果,可用于未来的预测,就此可为我国社会保障部门提供一些参考数据。  [关键词] 时间序列分析 就业人员合计 ARIMA模型 未来预测    充分就业与经济增长、物价稳定、国际收支平衡并列为各国政府管理经济的四大目标。近年来,
期刊
[摘 要] 本文分析了对影响我国当前经济运行的两种不确定因素——国际政治因素和非传统安全因素,并得出了应采取的对策。以便对我国经济正常运行提供参考。  [关键词] 我国经济运行 不确定因素 国际政治 非传统安全    改革开放30年来,我国经济取得举世瞩目的成就。中国广阔的市场为世界提供了空前的发展机遇,中国的繁荣也同时带动了周边及各贸易伙伴的复苏。中国对世界经济走势发挥着越来越重要的影响。今天当
期刊
[摘 要] 为了找到既有金融或经济意义,又能够简化Black-Scholes方程的方法或变量代换,本文利用币制替换,引入新的变量,在此新变量下,Black-Scholes方程被极大地简化,相应的边界条件也被给出,同时也指出,再做简单的变量代换可将Black-Scholes方程化为标准的热传导方程。  [关键词] 期权定价 Black-Scholes方程 偏微分方程 币制替换    期权定价问题是金
期刊
[摘要] 本文介绍了ERP系统和MES系统实现集成一些要点,以及采用BizTalk server的基于中间件的系统集成的实现方法。  [关键词] ERP MES XML 中间件    一、前言    ERP(EnterpriseResourcePlanning,企业资源计划系统)是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。它把客户需求和企业内部的制造
期刊
[摘要] 本文详细分析了ARP协议以及实现ARP攻击的原理,列举了ARP病毒的各种常见现象,并给出了具体的防御方法。  [关键词] ARP协议 ARP病毒 分析 防御    一、ARP协议及攻击原理分析    ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写,局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。所谓“地址解析”就是主机在
期刊
[摘 要] 随着我国商业银行法人治理结构的日益完善,将价值最大化作为银行经营管理的最终目标己经成为股东、银行管理者和经营者的共识,那么如何衡量银行的价值创造能力以及如何建立以价值创造为核心的激励约束机制成为目前广泛讨论的问题。目前国际上广泛应用的一种新指标—经济增加值即EVA为商业银行的价值创造带来了新的评价方法,为实现商业银行价值最大化目标提供了可借鉴的思想和方法。  [关键词] EVA 银行价
期刊
[摘要] XML是一种描述型的可扩展标记语言,Web上数据交换和表达的标准形式。本文详细阐述了XML在数据库方面数据存储的应用及.NET中配置信息存储的具体实现。  [关键词] XML NXD 配置文件 序列化    数据库技术及其应用系统的发展,使得其在传统的商业和事务处理领域内逐步成熟,取代了原有的基于文件系统的数据处理方式,成为计算机信息系统中的重要基础和支柱。但随着Internet的飞速发
期刊
[摘要] 贸易争端解决机制是WTO不可缺少的一部分,是多边贸易机制的支柱,在经济全球化发展中颇具特色。争端解决机制的基本原则是平等、迅速、有效、双方接受。这个原则是经全体WTO的成员同意,如果他们认为其他成员正在违反贸易规则,受到贸易侵害的成员将使用多边争端解决机制,而不是采取单边行动,这意味着所有WTO的成员将遵守议定的程序和尊重裁决,不管是受到贸易侵害的成还是违反议定的成员。 在关贸总协定及W
期刊
[摘要] 本文以海尔的多元化经营战略为例,介绍了其多元化的进程,分析了其在非相关多元化过程中出现失误的原因,并且对海尔今后的多元化发展提出了若干建议。实施多元化战略必须要以企业自身的核心竞争力为基础,以增强核心竞争力为目的,适度的多元化才是主流。  [关键词] 多元化 战略 海尔 非相关多元化    多元化经营是企业在成长过程中的一种经营战略,是美国经营战略专家H. IgorAnsoff1957年
期刊
[摘要] ERP系统的应用是一项高风险、高投入项目,实施的整个过程存在种种风险。企业要对风险有充分认识,在整个ERP的实施过程中,应注意实施ERP系统前期的可行性分析,避免ERP选型风险,避免ERP实施风险,建立一套行之有效的风险管理机制,从而提高ERP系统的实施成功率。  [关键词] ERP系统 风险控制    ERP系统集成了企业运营的各个方面,一个完整的ERP系统亦即是人力资源、财务、销售、
期刊