开发与优化基于ASP.NET平台的Web应用程序外文翻译资料

 2022-12-05 16:59:59

英语原文共 14 页,剩余内容已隐藏,支付完成后下载完整资料


开发与优化基于ASP.NET平台的Web应用程序

George Vorobiov, Software and Solutions Group, Intel Corporation Carl Dichter, Software and Solutions Group, Intel Corporation John Benninghoff, Software and Solutions Group, Intel Corporation Charlie Hewett, Software and Solutions Group, Intel Corporation

关键词:ASP.NET CLR 性能 优化

摘要

本篇论文探讨了开发和优化基于ASP.NET平台的Web应用程序在英特尔架构上的性能最佳方法。我们概述了ASP.NET平台并且讨论了一系列优化方法,这些方法可以运用在基于我们的来自开发和描述电子商务工作负载的研究成果的一类程序上。我们也想把我们的知识传播到优化软件配置行业上,由ASP.NET提供的丰富功能集的使用,还有CLR上来。

我们的主要重点是描述和提高这些应用程序的性能。很有效地应用程序的设计和支撑这个软件的基础设置将会被探讨。应用程序的描述显示了参与请求响应和响应生成的组件。我们也展示了性能问题和面对ASP.NET开发者的权衡的分析。最后,我们讨论了工作量的优化来包括不同的使用新兴的分布式计算场景的技术,比如Web Services和.NET Remoting。

简介(引言)

ASP.NET是微软公司一个新的建立在CLR平台的上层的网页开发平台,并且它继承了许多类似于ASP平台的特征。尽管在命名和提供的APIs上有相似之处,但是这两个平台的实施就它们的底层技术和性能特点方面而言没有太多相同。相比较于ASP平台过去使用可解读的脚本语言,而且和操作系统的其他组件的交互上有限制,新的ASP.NET平台能够使用很多不同的编程语言,这些语言都被编译成IL并且可以利用由CLR和Windows.NET提供的所有特点。

这个新的编程模式一些好处如下:

  • 实现前台逻辑代码和HTML脚本的真正的分离。Visual Studio .NET通过自动创建一个可有开发者自己选择语言的代码隐藏的类帮助实现分离。开发者选择的语言可以基于目前程序的状态处理事件,而且可以动态地修改前台展示。
  • 会话状态管理现在既支持有效的内含式会话状态处理,又支持一个更可扩展的基于Microsoft SQL的方案,这个方案允许通过由可扩展的服务器群提供的大量服务来实现会话状态共享。
  • 支持模块化的页面设计,使用可扩展的服务器端控件,这使得基于组件的编程模式很容易地在多个ASP.NET页面之间分享功能。
  • 新的和经过改进的ADO.NET数据接入APIs不仅仅提供了快速的单向数据检索的方法,而且提供了一个更先进的DataSet方法,这个方法创建一个可以独立访问和修改的离线的数据视图并且可以与数据库同步。
  • 使用对象缓存和输出缓存功能为高效的缓存提供更多的机会。

CLR是微软的一个新的运行管理平台,它设计是为了通过提供一组丰富的功能,比如自动回收机制,建立对多个远程机制的支持,完全符合多重XML标准和最先进的面向对象编程框架,来增加程序员的工作效率。它也通过代码验证和类型安全检查来提供了更容易的部署和管理支持,共享库的GAC,代码版本控制来消除臭名昭著的“DLL HELL”问题。

ASP.NET应用也利用了微软的新的IIS处理模式,这个模式在版本6中被介绍了。IIS通过使用一个新的2-tier内核模式监听器/工作进程模型来代替以前的3-tier模式,简从而化了Web请求执行。

为了描述和优化新的编程平台,我们效仿网络书店开了一个电子商务的工作。这个工作设计出来是为了使用ASP.NET和CLR的大多数主要特征的。在本篇论文里,我们探讨来自我们对在优化部分描述的使用标准的Intel方法来优化这个应用的性能的工作中的发现。

我们希望本篇论文的信息将会对那些想理解系统和软件开发问题,并且对它们各自的性能的影响有作用。还有那些有ASP中的人或者想权衡接触微软最新的软件技术的代价和好处的人希望也会对本篇文档感兴趣。

工作描述

为了成功地应用优化技术一个给定的应用程序,有必要了解系统的设计和性能特征。本部分集中于描述体系结构和系统配置或者说是配置文件。

硬件描述

我们的电子商务工作可以被按照功能划分为两个不同的部分:模拟浏览器,或者简称为EBs,和测试系统,或者简称为SUT。每个EB模拟一定数量的不同用户,每个产生它们自己唯一的HTTP传输给SUT。SUT是服务器的集合建成电子商务解决方案来接收这些请求。图一描述了硬件配置。

这个工作的主要的组件需要来完成这个应用的全面实现并且协助载荷以下:

  • Web/Application Server 这个装置是运行IIS的,里面有真实的ASP.NET应用程序,应用程序又包含前台展示,业务逻辑和数据访问组件。
  • Database Server 这个包含了一个应用程序数据库和一套存储过程来提供优化访问数据支持。
  • Image Server 这个Web服务器,运行IIS,处理所有来自客户端的HTTP图片请求
  • Emulated Browsers 这些运行我们自定义加载的生成器工具来在系统中提供足够的负载以实现负载特征化和性能问题识别的目的。

来自一个EB客户端的一个典型的Web请求通过了交换机并且被Web/app服务器接接受了,如果有需要的话这个服务器会解析请求并且生成查询到DB数据库。接收到来自DB服务器的回应之后,Web/app服务器产生给EB客户端的回应。EB客户端将会解析回应页并且检索来自image服务器的图像。基于来自Web/app服务器的回应和一些其他条件,EB将会随机产生下一个Web请求,这个模式会不停的重复直至运行结束。

图一:硬件部署图解和电子商务测试套件的描述

系统软件描述

这项工作一个在由ISS工作进程主持的CLR平台(版本 4322)的一个实例的Web应用程序的形式运行。所有SUT中的机器运行在版本为3663Windows Enterprise服务器上。从下面的图二可以看到,传入的请求处理在内核模式监听处开始,然后通过进入IIS工作进程运行我们程序。如果多个Web应用程序同时运行,那可以有不止一个工作进程。CLR使用对于所有在IIS下各种Web应用程序共同的ISAPI扩展机制在工作进程中装载。

ASP.NET应用程序由在应用程序目录下的web.config配置文件所控制。这个文件指定应用程序运行时的多个方面的行为,比如说会话状态处理的类型,或者自定义错误处理页面,这提供了一个统一的通过显示一个更友好的信息替代一个标准的堆栈跟踪来处理未捕获的的异常的方法。你也可以指定一个不同的身份验证模式,比如Windows身份验证机制的使用或者微软的护照服务。

既然我们的工作项目是一个运行在CLR上层的应用程序,所以它也受CLR机器的控制。配置文件位于框架安装的配置目录下。XML文件包含关于ASP.NET的设置,比如用户处理应用程序请求的工作线程的数量和ASP.NET请求队列的大小。这些设置的最优质值会在以后讨论。

IIS设置对于所有类别的Web应用程序很普遍并且可以被运用在使用Web管理服务器上,正如图二展示的一样。你可以配置多个应用程序池并且可以分配不同的应用程序到一个给定的池。应用程序池设置提供一组可配置的参数来改善ASP.NET应用的健壮性和性能。

图二:系统软件配置

应用说明

我们的项目设计出来是为了提供一个典型而不是简单的Web应用程序,测试ASP.NET和CLR的大多主要特点的,比如GC,ADO.NET数据接入框架,服务器端控件和XML支持。他是模仿的一个提供目录浏览、购物车维护、订购和支持管理功能的在线书店网站。这个项目逻辑结构通过在层次之间定义明确的接口和提供这些接口的实现从而实现了真正的Web应用程序层次的分离。这些逻辑应用程序层分别是前台展示,业务逻辑和数据接入层。

这个项目的设计是基于开发.NET分布式应用程序的模式和实践的。使用这样一个多层逻辑结构的主要理由是确保这个项目是这类应用程序的典型代表和促进未来Web服务器和远程组件设计的改变。

这个项目的前台展示层包含了一套带有代码隐藏的类的Web页面(ASPXs)和自定义的服务器控件(ASCXs)。后台代码的类通过向业务逻辑层请求最新的信息和操纵页面上空间的属性来动态修改生成的文档。

业务逻辑层包含了一套基于一套业务规范的无状态的服务,实现提供当前应用程序的数据的业务接口。这一层使用数据接入层来检索和更新数据,基于从前台展示层提供的参数。

数据接入层梳理所有的数据检索并且更新应用程序定义的需求。它使用ADO.NET框架的.NET SQL数据库驱动来接入SQL Server数据库。这一层既可以动态的建立SQL命令又可以建立一组驻留在数据库中的存储过程。

为了更好的理解系统的行为,我们用图三展示了ASP.NET请求处理执行的序列图。在CLR中,请求是由一个代表单一的执行的HttpApplication类的实例处理的。它将传入的请求的URL映射到特定的ASPX页面,为这个页面创造一个代码隐藏类的实例并且执行为这个页面定义的或者为这个页面上定义的自定义的用户控件做任何的事件处理程序。

在大多数情况下,应用程序逻辑是由脚本加载事件执行的。它首先验证输入参数和初始化数据结构。然后脚本根据请求的类型请求业务逻辑类的一个实例。应用程序是结构化的,这样不同的无状态的一个实例服务类,可以在启动时根据是否通过远程或网络远程方法调用服务使用,或者是否在本地运行的服务加载。在本文我们讨论后者,但未来的我们的一部分工作是跑业务方向和数据一个单独的应用程序服务器上访问逻辑。

一旦请求传递给服务对象,一些额外的业务规则应用于确保请求的有效性,一个适当的数据访问provider类会被调用。我们的工作项目允许不同类型的数据访问和检索,两个主要的选择是使用SQL服务器存储程序和动态生成的SQL语句。默认的工作项目是使用存储过程来访问所有数据。在这种情况下,一个类的对象实现存储的数据访问方式在应用程序启动时动态地实例化。

图三:项目序列图

一旦调用存储过程实现,它通过使用.NET程序在数据库服务器上Microsoft SQL Server的驱动构造一个新的SQL命令来调用一个存储。.NET网络驱动程序有一个提供连接池内置的能力,所以与数据库的交互完成后,当前数据连接利用当前请求返回到池中可用的连接。这有助于消除对每个请求进行连接创建的开销,同时解放开发人员手动实现连接池。

存储过程结果收到后,控制传递到负载事件脚本。逻辑操作页面上的控件的其余部分显示从数据库返回的结果。一旦页面的脚本执行完成后,负载所有自定义控件在页面上调用脚本的有必要执行控件级逻辑。

最后,引擎收益呈现页面,包括递归地调用Render方法,页面上的每个服务器端控制和写作结果响应对象输出流。

请注意,如果输出缓存被定义为定页面上的任何控件,或者页面本身和控件或者页面输出目前在ASP.NET输出缓存,那么不会有脚本事件将会被执行,而且先前来自页面或控件被保存的输出将会被写入到输出流中。输出缓存是在本文后面详细讨论。

性能数据

图四显示了比例为1、2的吞吐量,和四个启用了超线程的工作负载配置在应用服务器上英特尔Xeontrade;2.0 GHz处理器。正如您可以看到的,它与一个尺度相当两个处理器比例为1.87,和一个四处理器比例为3.27。许多系统和应用调优,应用于使好CPU利用率高,这是至关重要的实现扩展。这些优化将在下面讨论部分。

图四:吞吐量变化关系图

优化

应用优化典型的目标是达到最大吞吐量和/或降低响应时间。优化一个复杂的由硬件和软件组件组成的系统是困难的,但是通过一个系统的方法,优化可以有效地发现和应用。

优化过程系开始于收集系统数据和分析数据。性能问题被标识,选择提出和探索。接下来, 解决方案应用于系统,数据再次被收集来分析性能差异。然后,变化被接受或拒绝进而性能分析循环再次开始。

除了这种迭代方法,自顶向下方法也会使用。有三个级别的优化:系统、应用程序和微架构。自顶向下的方法意味着调优始于高影响。比如I / O和在系统水平的数据库配置。只有在更高水平的优化的瓶颈被移除了,才可以进行下一个级别的优化。这意味着系统级优化必须在应用程序级优化之前,它必须先于微架构优化。此外,下级应用改变之后,您必须再次回到顶级并且再次优化。例如,一个应用程序级,改变可以帮助性能,但同时也暴露了一个系

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[28813],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。