测量web应用程序的实际最终用户性能和可用性的制作方法

文档序号:6429079阅读:176来源:国知局
专利名称:测量web应用程序的实际最终用户性能和可用性的制作方法
技术领域
本发明涉及测量web应用程序的实际最终用户性能和可用性。
背景技术
Web应用程序是通过诸如因特网之类的网络访问以在客户机计算机系统处执行的应用程序。Web应用程序可具有各种形式,这些形式是用浏览器支持的语言编码的Java小程序(诸如JavaScript、并且与诸如HTML(超文本标记语言)之类的浏览器呈现的标记语言结合)、或具有其他形式。Web浏览器可被用来从应用服务器取回web应用程序,并且在客户机计算机系统处通过呈现所取回的web应用程序代码来执行web应用程序。由于web浏览器的广泛可用性,Web应用程序正变得越来越常见。此外,web应用程序是有利的,因为它们可在应用服务器处维护和更新而不是在许多客户机计算机处单独地进行维护和更新。存在许多类型的web应用程序,包括媒体播放器、web邮件、在线零售销售、在线拍卖、维基(wiki)、以及许多其他类型。术语“Web 2.0”通常与便于交互信息共享、互操作性、用户中心的设计和万维网(World Wide Web)上的协作的web应用程序相关联。与其中用户被限于被动查看提供给他们的信息的网站相反,Web 2.0网站允许其用户作为对网站内容的贡献者来彼此交互。随着越来越多的组织开始开发利用Web 2. 0技术来创建更丰富和更复杂的交互的web应用程序,有效地监视web应用程序性能和可用性的能力正变得越来越重要。确定 web应用程序性能的常规方法通常涉及以规律的间隔执行web应用程序内容(“综合性事务”)的测试传输,或基于服务器侧操作来捕捉度量。然而,综合性事务和捕捉服务器侧度量两者都不指示客户机计算机系统处最终用户体验的质量。简单地测量页面是否被准确地传递给客户机且在可接受的响应时间内并不准确地指示web应用程序是否是可用的、并且从客户机处的最终用户的观点来看是否执行良好。诸如AJAX (异步JavaScript和XML (可扩展标记语言))、由美国加利福尼亚州圣何塞市的Adobe Systems开发的Adobe Flash 以及由美国华盛顿州雷蒙德市微软公司开发的Microsoft Silverlight 之类的技术可使用客户侧处理来控制web应用程序的复杂交互。然而,不能直接在服务器处监视这种客户机侧处理,因而使用常规方法不能确定这种客户机侧处理的性能。

发明内容
提供本发明内容以便以简化形式介绍在以下的具体实施方式
中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。此处提供了用于监视web应用程序性能的方法、系统和计算机程序产品。Web应用程序能够在客户机计算机系统处监视,并且所捕捉到的关于客户机处的web应用程序的性能信息能够被提供给服务器。所提供的性能信息使客户机侧web应用程序性能能够从最终用户的观点来分析。
在一个实现中,在应用服务器处接收对web应用程序的请求。生成与所请求的 web应用程序相对应的客户机应用程序代码。截取所生成的客户机应用程序代码。工具植入(instrumentation)代码被插入到所截取的客户机应用程序代码中以生成经工具植入 (instrumented)的客户机应用程序代码。工具植入代码被配置成当在客户机处呈现经工具植入的客户机应用程序代码时被执行以捕捉客户机处的性能信息,并且被配置成从客户机传送所捕捉的性能信息。在另一实现中,应用服务器包括响应流水线、应用程序扫描模块和工具植入插装模块。响应流水线被配置成生成包括响应于来自客户机的对web应用程序的请求来提供给客户机的客户机应用程序代码的数据流。应用程序扫描模块被配置成在响应流水线中截取客户机应用程序代码。工具植入插装模块被配置成将工具植入代码插入到所截取的客户机应用程序代码中以生成经工具植入的客户机应用程序代码。工具植入代码被配置成当在客户机处呈现经工具植入的客户机应用程序代码时被执行以捕捉客户机处的性能信息,并且被配置成从客户机传送所捕捉的性能信息。响应流水线可被以各种方式配置成生成经工具植入的客户机应用程序代码,包括使用响应过滤器、HTTP (超文本传输协议)模块、剖析器、或其他技术。在又一个实现中,客户机可将对web应用程序的请求传送给服务器。客户机可响应于该请求从服务器接收经工具植入的客户机应用程序代码。经工具植入的客户机应用程序代码被配置成实现web应用程序,并且包括被插入到服务器处的经工具植入的客户机应用程序代码中的工具植入代码。工具植入代码被配置成当在客户机处呈现经工具植入的客户机应用程序代码时被执行以捕捉客户机处的性能信息,并且被配置成从客户机传送所捕捉的性能信息。在再一实现中,管理服务器可包括性能数据接收模块。性能数据接收模块被配置成从客户机处的经工具植入的客户机应用程序代码接收所捕捉的性能信息。此处还描述了用于在客户机计算机系统处监视web应用程序性能和用于如此处所述的其他实施例的计算机程序产品。以下参考各个附图,详细描述了本发明的其他特点和优点,以及本发明的各种实施例的结构和操作。值得注意的是,本发明不限于此处描述的具体实施例。这些实施例只是出于说明性的目的而呈现。基于此处所包含的原理,附加实施例对相关领域技术人员是显而易见的。


合并在此并作为说明书的一部分的附图与说明书一起示出了本发明,进一步用于解释本发明的原理且使相关领域的技术人员能够实现并使用本发明。图1示出了根据一示例实施例的数据通信系统的框图。图2示出了根据一实施例的图1的数据通信系统的示例的框图。图3示出了根据本发明的一示例实施例的用于提供经工具植入的web应用程序的流程图。图4示出了根据一示例实施例的图2的数据通信系统,其中响应于web应用程序程序请求来生成经工具植入的web应用程序。
图5示出根据一示例实施例的管理服务器的框图。图6示出了根据一示例实施例的应用程序工具植入模块的框图。图7-9示出了根据各实施例的响应流水线的示例的框图。图10示出了根据一示例实施例的图2的数据通信系统,其中在客户机处接收对应于所请求的web应用程序的经工具植入的客户机应用程序代码。图11示出了根据一示例实施例的用于在客户机处处理经工具植入的web应用程序的流程图。图12示出了根据一示例实施例的经工具植入的客户机应用程序代码的框图。图13示出了根据一示例实施例的用于在管理服务器处处理所捕捉的性能信息的流程图。图14示出了可用于实现本发明的各实施例的示例计算机的框图。通过以下结合附图对本发明进行的详细描述,本发明的特点和优点将变得更加显而易见,在附图中,类似的附图标记在整个说明书中标识对应的元素。在附图中,相同的附图标记一般指示相同的、功能上类似的和/或在结构上类似的元素。元素首次出现的附图由对应的附图标记中最左边的数字来指示。
具体实施例方式I.介绍本说明书公开了结合本发明的特征的一个或多个实施例。所公开的实施例仅仅举例说明本发明。本发明的范围不限于所公开的实施例。本发明由所附权利要求书来定义。说明书中提到的“一个实施例”、“一实施例”、“一示例实施例”等指示所描述的实施例可包括特定特征、结构或特性,但每个实施例并不一定包括该特定特征、结构或特性。 此外,这些短语也不一定指相同的实施例。此外,当结合一实施例描述特定特征、结构或特性时,应当理解在本领域的技术人员的知识范围内结合其他实施例来影响这些特征、结构或特性,无论是否被显式地描述。II.各示例实施例各实施例提供了用于从客户机或最终用户的角度来监视web应用程序性能的技术。与基于服务器侧的常规技术相比,这些实施例实现改进的web应用程序监视。此外,各实施例可在不同的网络条件下且用不同的客户机计算机配置来实现web应用程序监视。因特网上的网络速度和质量的差异可减慢或中断最终用户的web应用程序功能。 此外,服务器、高速缓存器、和/或客户机组件可组合以提供web应用程序服务器,并且每一个都可影响web应用程序性能的质量。当各种各样的设备和浏览器在客户机处被用来呈现 web应用程序内容时,更多性能变量变得显而易见。设备类型,浏览器类型,网络配置,以及其他服务器侧、网络和客户机侧属性是不断变化的。常规的服务器侧度量可被用来确定用于将内容发送给客户机的时间量,但是每一个不同的客户机设备或浏览器可改变客户机如何感知性能和可用性。因而,为了获得web应用程序的性能和可用性的真实图画,各实施例使web应用程序性能能够从实际最终用户的角度来监视。各实施例可以各种方式实现客户机侧web应用程序监视。例如,在一实施例中,工具植入(instrumentation)代码(例如,一个或多个脚本)可被应用服务器添加到web应用程序页面。例如,响应于web应用程序请求而通常被传递给客户机的web应用程序数据流可基于将工具植入代码添加给流的预定策略来修改。当在客户机上执行工具植入代码时,工具植入代码收集度量和数据。例如,当在客户机处,诸如在客户机浏览器中呈现web 应用程序页面时,工具植入代码可被配置成收集和计算web应用程序页面性能/可用性度量。在收集页面性能/可用性度量之后,工具植入代码可调用服务侧端点并将所收集的信息提交给服务侧端点。由此,各实施例使工具植入代码能够在应用程序开发时间期间或在运行时期间在 web页面级添加,诸如在web应用程序相关的通信量经过应用服务器处的响应流水线(例如,HTTP流水线)时通过自动将工具植入代码注入web应用程序的页面中来添加。各实施例提供了各种优点。例如,各实施例可使操作管理器能够具有监视很大程度上依赖web技术的应用程序的能力,这些web技术包括诸如AJAX (异步JavaScript和 XML(可扩展标记语言))、Adobe Flash 和Microsoft Silverlight 之类的 Web 2. 0 技术。工具植入代码可被配置成捕捉从客户机角度来看的性能信息,诸如页面可用性和这些web技术的响应时间之类,并且诸如通过web服务端点使该数据以各种方式对监视系统可用。各示例实施例在以下子节中进一步详细描述。A.用于提供经工具植入(instrumented)的web应用程序的示例系统和方法在各实施例中,当客户机计算机系统请求web应用程序并且经工具植入的web应用程序被传递给客户机计算机系统时,提供具有工具植入代码的web应用程序。响应于客户机请求,可以各种方式将经工具植入的web应用程序提供给客户机计算机系统。例如,图 1示出了根据一示例实施例的数据通信系统100的框图。如图1所示,系统100包括客户机 102、应用服务器104和网络116。系统100描述如下以示出向客户机传递web应用程序,包括经工具植入的web应用程序。客户机102可以是任何类型的计算设备,包括台式计算机(例如,个人计算机)、移动计算机或计算设备(例如,Palm 设备、RIMBlackberry 设备、个人数字助理(PDA)、膝上型计算机、笔记本计算机等)、智能电话、或其他类型的计算设备。应用服务器104可包括一个或多个服务器,该服务器可以是此处描述的或以其他方式使web应用程序能够提供的已知的任何类型的计算设备。客户机102和应用服务器104通过网络116来通信地耦合。 网络116可包括一个或多个通信链路和/或通信网络,诸如PAN(个域网)、LAN(局域网)、 WAN(广域网)、或网络的组合,诸如因特网。分别将客户机102和应用服务器104耦合到网络116的第一和第二通信链路122和124可包括任何数目的通信链路,包括有线和/或无线链路,诸如IEEE 802. 11无线LAN(WLAN)无线链路、微波存取全球互通(Wi-WAX)链路、蜂窝网络链路、无线个域网(PAN)链路(例如,Bluetooth 链路)、以太网链路、USB链路等。系统100被配置成使诸如客户机102之类的客户机计算机系统能够从应用服务器104取回web应用程序。例如,如图1所示,客户机102包括浏览器106。客户机102处的用户可与浏览器106交互以使浏览器106请求在浏览器106中加载和执行web应用程序。浏览器106可以是任何类型的web浏览器,诸如由美国华盛顿州雷蒙德市的微软公司开发的Internet Explorer ,由美国加利福尼亚州芒廷维尤市的Mozilla公司开发的 Mozilla Firefox ,或由加利福尼亚州芒廷维尤市的谷歌公司开发的Google Chrome。
7
例如,浏览器106可生成web应用程序请求110。Web应用程序请求110是对在浏览器106中执行web应用程序的请求。web应用程序请求110从客户机102在第一通信信号中通过第一通信链路122、网络116和第二通信链路124传送给应用服务器104。可以任何形式传送第一通信信号。应用服务器104接收第一通信信号中的web应用程序请求110。 响应于web应用程序请求110,应用服务器104提供web应用程序。此外,web应用程序可由应用服务器104 “工具植入”以使web应用程序被配置成监视客户机102处的一个或多个性能方面。Web应用程序可由应用服务器104通过将工具植入代码插入到被配置成监视一个或多个性能方面的web应用程序来工具植入。例如,如图1所示,应用服务器104可包括响应流水线108。响应流水线108可响应于web应用程序请求110来生成经工具植入的客户机应用程序代码112。在第二通信信号中从应用服务器104传送经工具植入的客户机应用程序代码112。第二通信信号通过第二通信链路124、网络116和第一通信链路122来传送,并由客户机102接收。可以任何形式传送第二通信信号。客户机102处的浏览器106接收经工具植入的客户机应用程序代码 112,并且可加载经工具植入的客户机应用程序代码112以供执行。经工具植入的客户机应用程序代码112是可由客户机102处的浏览器106执行 (例如,呈现)的web应用程序。例如,经工具植入的客户机应用程序代码112可具有调用一个或多个应用程序文件的页面(例如,使用HTML代码来编码)的形式。经工具植入的客户机应用程序代码112可包括对根据诸如HTML、AJAX (异步JavaScript和XML (可扩展标记语言))代码、Adobe Flash 文件(例如,ActionScript代码)、Microsoft Silverlight 文件(例如,XAML(可扩展应用程序标记语言)代码)、媒体文件等的一个或多个浏览器支持的计算机语言来编程的应用程序文件的引用。此外,经工具植入的客户机应用程序代码 112包括被配置成监视web应用程序的一个或多个方面的性能的工具植入代码。这些工具植入代码可根据诸如HTML、JavaScript、AJAX, XAML、任何Microsoft . NET框架支持的编程语言等的一种或多种浏览器支持的计算机语言来编程。系统100可被进一步以各种方式配置成提供经工具植入的web应用程序。例如,图 2示出了根据一示例实施例的数据通信系统200的框图。数据通信系统200是图1的系统 100的示例。如图2所示,数据通信系统200包括客户机102、应用服务器104、网络116和管理服务器208,并且应用服务器104包括响应流水线202。响应流水线202是图1的响应流水线108的示例。在图2的示例实施例中,响应流水线202包括客户机应用程序代码生成器204和应用程序工具植入(instrumenting)模块206。如上所述,应用服务器104被配置成提供从诸如客户机102之类的客户机通过网络116接收的web应用程序请求110。响应流水线202的客户机应用程序代码生成器204被配置成响应于请求110来生成客户机应用程序代码,并且应用程序工具植入模块206被配置成截取并工具植入所生成的客户机应用程序代码。应用服务器104被配置成将经工具植入的客户机应用程序代码传送给客户机 102以在浏览器106中呈现。可存在管理服务器208以配置应用程序工具植入模块206,和 /或接收由在浏览器106中运行的经工具植入的客户机应用程序代码生成的性能数据。在替代实施例中,系统100可被以其他方式配置成提供经工具植入的web应用程序。例如,在另一实施例中,图2的系统200可包括位于客户机102和应用服务器104之间的代理服务器。代理服务器可包括应用程序工具植入模块206,因而可在代理服务器处执行web应用程序的工具植入。代理服务器可接收由客户机应用程序代码生成器204生成并从应用服务器104传送的客户机应用程序代码。代理服务器中的应用程序工具植入模块206 可截取并工具植入所生成的客户机应用程序代码。代理服务器可将经工具植入的客户机应用程序代码传送给客户机102以在浏览器106中呈现。在另一实施例中,客户机102可包括应用程序工具植入模块206,因而可在客户机102中执行web应用程序的工具植入。客户机102可接收由客户机应用程序代码生成器204生成并从应用服务器104传送的客户机应用程序代码。客户机102中的应用程序工具植入模块206可截取并工具植入所生成的客户机应用程序代码。可在浏览器106中呈现经工具植入的客户机应用程序代码。在这些实施例中,诸如IT(信息技术)操作者之类的用户可引入应用程序工具植入,即使用户与应用服务器104并不关联。尽管出于说明的目的此处参考图1和2的配置描述了各实施例,各实施例可以这些和其他替换方式来配置,如相关领域的技术人员根据此处的教义应当理解的。以下参考图3进一步描述系统200。图3示出了根据一示例实施例的用于提供经工具植入的web应用程序的流程图300。在一实施例中,系统200可根据流程图300来操作。基于关于流程图300的讨论,其他结构和操作实施例对于相关领域技术人员将是显而易见的。流程图300和系统200描述如下。流程图300开始于步骤302。在步骤302,从客户机接收对web应用程序的请求。 例如,如图2所示且如上所述,应用服务器104从客户机102接收web应用程序请求110。 Web应用程序请求110包括对web应用程序的请求。例如,客户机102处的用户可与浏览器 106交互以导航到对应于所请求的web应用程序的web页面。客户机102处的用户可选择链接、图像、或web页面上的其他对象,可选择书签,或可以其他方式与浏览器106交互从而生成用以请求web应用程序的web应用程序请求110。在步骤304,截取在响应流水线中生成的客户机应用程序代码。图2的响应流水线 202可包括执行关于满足web应用程序请求110的对应过程的多个阶段。在一实施例中,响应流水线202中的客户机应用程序代码生成器204可被配置成生成对应于在请求110中所请求的web应用程序的客户机应用程序代码。例如,客户机应用程序代码生成器204可生成对应于所生成web页面的诸如HTML代码之类的浏览器可兼容代码,并且可生成web页面以调用对应于所需web应用程序功能的一个或多个文件。例如,web页面可调用与诸如媒体播放器、web邮件工具、在线零售销售网站、在线拍卖、维基(wiki)等的web应用程序功能相对应的 AJAX 代码、XAML 代码、Adobe Flash 文件、Microsoft Silverlight 文件等。客户机应用程序代码生成器204可被配置成响应于来自高速暂存存储器、来自与可请求的不同web应用程序相对应的客户机应用程序代码模板(例如,用C#编程语言或其他编程语言编码)库、和/或任何其他方式的web应用程序请求来生成客户机应用程序代码, 如相关领域技术人员已知的。由客户机应用程序代码生成器204生成的客户机应用程序代码在数据流中经过响应流水线202。所生成的客户机应用程序代码(以HTML格式)的示例描述如下。该示例客户机应用程序代码被配置成为客户机102处的用户用来调用媒体播放器(Microsoft Silverlight ) web应用程序的web页面。可在浏览器106中呈现web页面。客户机应用程序代码的该示例出于说明的目的而提供,并不旨在限制,且可以许多替换方式来配置
<body>
〈form name="form 1" method="post" action="Default.aspx" id="forml">
//<![CDATA[
Sys. Application.initialize(); Sys.Application.add_init(function() {
$create(Sys.UI.Silverlight.MediaPlayer, {"autoPlay',:true,"mediaSource":http://www. webinfocentral.com/VIDEO/JJ20 08/WMV/JJ2008_lG0.wmv ...
});
//]]> </form>
</body>客户机应用程序代码的以上示例被配置成调用媒体播放器以播放文件“http:// www.webinfocentral.com/VIDE0/JJ2008/WMV/JJ2008_100.wmv”,该文件是示例 Microsoft Windows Media 视频格式文件。如由客户机应用程序代码的示例中的“...,, 所指示,可任选地存在与调用媒体播放器相关的其他参数。尽管客户机应用程序代码的该示例调用单个应用程序,但是所生成的客户机应用程序代码可调用多个应用程序。图4示出了图2的系统200,其中客户机应用程序代码生成器204生成对应于在请求110中所请求的web应用程序的客户机应用程序代码406。在一实施例中,应用程序工具植入模块206可被配置成基于扫描策略来截取客户机应用程序代码406。在一实施例中,管理服务器208可根据扫描策略配置指示402来配置应用程序工具植入模块404的扫描策略。例如,图5示出了根据一示例实施例的管理服务器208的框图。如图5所示,管理服务器208包括扫描策略配置模块502、监视策略配置模块504和性能数据接收模块506。 在一实施例中,扫描策略配置模块502可生成用于配置由应用程序工具植入模块404使用的扫描策略的扫描策略配置指示402。例如,图6示出了根据一示例实施例的应用程序工具植入模块404的框图。如图6所示,应用程序工具植入模块404包括应用程序扫描模块 602和工具植入插装模块604。应用程序扫描模块602接收扫描策略配置指示402,并且被配置成根据扫描策略配置指示402来扫描经过响应流水线202的web应用程序(例如,客户机应用程序代码406)以确定是否工具植入客户机应用程序代码。例如,管理服务器208处的用户(例如,操作管理员或系统管理员)可与用户接口(例如,图形用户接口(GUI)、键盘、定点设备等)交互以输入由应用服务器104提供的web应用程序的扫描策略。例如,可允许用户以任何方式指定特定web应用程序(例如,功能或文件),包括通过要工具植入的文件扩展或类型(例如,Adobe Flash 文件、 Microsoft Silverlight 文件、其他媒体文件类型、.wmv (例如,视频文件)扩展、.mp3扩展(例如,音频文件)等)。指定的web应用程序可在扫描策略配置指示402时指示,扫描策略配置指示402被传送给应用程序扫描模块602。当应用程序工具植入模块206接收客户机应用程序代码406时,应用程序扫描模块602可根据由扫描策略配置指示402指示的扫描策略来扫描客户机应用程序代码406以确定是否要工具植入客户机应用程序代码406。例如,扫描策略配置指示402可配置应用程序扫描模块602以截取调用 Microsoft Silverlight 以供工具植入的web应用程序。在这个实施例的示例中,应用程序扫描模块602可被配置成对接收到的客户机应用程序代码扫描单词“Silverlight”, 和/或可被以其他方式配置成检测Microsoft Silverlight web应用程序功能。参考以上所示的示例客户机应用程序代码(其调用Microsoft Silverlight 作为媒体播放器), 如果该示例客户机应用程序代码由应用程序工具植入模块206接收,则应用程序扫描模块 602可在客户机应用程序代码中检测单词“Silverlight”,且因此截取客户机应用程序代码以供工具植入。如果应用程序扫描模块602确定在扫描期间接收到的客户机应用程序代码不包括根据所配置的扫描策略来触发工具植入的内容,则允许接收到的客户机应用程序代码继续在响应流水线202中处理以提供给客户机102而不进行工具植入。在步骤306,工具植入代码被插入到客户机应用程序代码中以生成经工具植入的客户机应用程序代码。在一实施例中,如果应用程序扫描模块602截取在流经响应流水线 202的响应数据流中的客户机应用程序代码(步骤304)并确定要工具植入所截取的客户机应用代码,则工具植入插装模块604被配置成将工具植入代码插入到所截取的客户机应用程序代码中,以生成经工具植入的响应数据流。在一实施例中,工具植入插装模块604可被配置成分析所截取的客户机应用程序代码以确定要监视的客户机应用程序代码的一个或多个功能。工具植入插装模块604可将所插入的工具植入代码配置成监视想要监视的客户机应用程序代码的一个或多个功能。所插入的工具植入代码被配置成监视与所截取的客户机应用程序代码相关的性能方面。如图4所示,应用程序工具植入模块206可生成经工具植入的客户机应用程序代码112,该经工具植入的客户机应用程序代码是接收到的客户机应用程序代码406的经工具植入版本。参考以上描述的所生成的客户机应用程序代码的示例,可插入工具植入代码以监视示例客户机应用程序代码的性能方面。例如,可被插入到以上描述的所生成的客户机应用程序代码的示例中的工具植入代码的示例在下文中示出(为了易于说明至少部分地作为伪码来提供)。〈script type="text/javascript">
Function makeCall (operationName ,counterName) {
"伪码
call _webService (operationName ,counterName) // 例如 operationName =
StartPerfCounter 且 counterName= "Page Load" }
</script>该示例工具植入代码是被配置成在通过调用具有“operationName”和 "counterName"参数的“makeCall”功能来调入时提供时间或性能计数器值的javascript 脚本。该脚本可被用于各种目的,诸如确定使用客户机应用程序代码的以上示例中的 Microsoft Silverlight 媒体播放器来播放所引用的媒体文件所花费的时间量。当被调用时,该脚本对远程管理服务器(例如,管理服务器208)进行调入(“jebService”),从而提供“operationNameWoimterName”和性能计数器值。可在管理服务器处使用该性能信息以确定何时出现对应的功能。该工具植入代码可被插入到所生成的客户机应用程序代码中,并且所生成的客户机应用程序代码可进一步由工具植入插装模块604修改以在浏览器调用客户机应用程序代码时的各个时间调用所插入的工具植入代码。例如,包括以上所示的示例工具植入代码的以上所示的示例客户机应用程序代码的示例工具植入形式在以下示出。经工具植入的客户机应用程序代码的该示例出于说明的目的而提供,并不旨在限制,且可以各种替换方式来配置
〈header〉
〈script type="text/j avascript">
Function makeCall (operationName ,counterName) {
"伪码
12call _webService (operationName ,counterName) // 例如 operationName =
StartPerfCounter 且 counterName= "Page Load" }
</script> </header>
<body>
〈script type="text/javascript">makeCall("StartPerfCounter", "Page Load")</script>
<form name="form 1" method="post" action="Default.aspx" id="forml"> //<![CDATA[
Sys.Application.initialize(); Sys.Application.add_init(function() {
$create(Sys.UI.Silverlight.MediaPlayer, {"autoPlay^true,''mediaSource'':http://www. webinfocentral.com/YIDEO/JJ20 08/WMV/JJ2008_100.wmv....{"mediaEndedM:OnClientMediaEnded,"mediaO
pened":OnClientMediaOpened} .... });
//]]>
</form>
〈scripttype="text/javascript">makeCall("EndPerfCounter","Page
Load")</script>
</body>如上所示,先前描述的javascript脚本被插入到示例客户机应用程序代码的标题部分中。此外,在四个代码位置处修改示例客户机应用程序代码以使标题脚本在四个位置中的每一个位置处被调用。例如,示例客户机应用程序代码被配置成在由示例客户机应用程序代码所表示的页面开始加载时调用标题部分,如所插入的代码〈script type = " text/javascript “ >m akeCallC StartPerfCounter “,〃 Page Load")所指示的。接着,使媒体播放器在打开媒体文件(“.wmv”文件)时调用标题脚本,如由所插入的代码“mediaOpened” =OnClientMediaOpened所指示的。接着,使媒体播放器在关闭媒体文件时调用标题脚本,如由所插入的代码“mediaEnded” OnClientMediaEnded所指示的。此外,使媒体播放器在由示例客户机应用程序代码所表示的页面完成加载时调用标题脚本,如由所插入的代码〈script type =” text/javascript” >makeCal1(" EndPerfCounter” , ” Page Load” ) </script) 所指示的。以此方式,在该示例中,标题脚本可被用于针对由示例客户机应用程序代码所表示的页面捕捉指示开始和结束加载时间以及加载持续时间(通过从结束加载时间或计数器值中减去开始加载时间或计算器值)的性能信息。此外,标题脚本可被用于针对媒体文件(“.wmv”文件)捕捉指示开始和结束媒体播放时间以及播放持续时间(通过从结束播放时间或计数器值中减去开始播放时间或计数器值)的性能信息。由此,工具植入插装模块604可被配置成将工具植入代码插入到一个或多个位置中的所截取的客户机应用程序代码中以使一个或多个脚本/代码部分能在经工具植入的 web应用程序被呈现在浏览器中时调用。与经工具植入的web应用程序相关的任何一个或多个性能方面可由任何数目的所插入的工具植入代码部分来监视。例如,可监视网络相关的方面,包括确定开始和结束加载时间以及用于加载经工具植入的web应用程序的持续时间。可监视浏览器相关的方面,包括媒体文件播放开始和结束时间以及用于播放所引用的媒体文件的持续时间等。此外,工具植入代码可被配置成收集关于客户机计算机系统和/ 或浏览器的信息,包括客户机处的浏览器的类型、浏览器的版本、客户机计算机类型、客户机计算机位置、客户机计算机语言、客户机计算机操作系统类型/版本等。在一实施例中,应用程序工具植入模块206可被配置成基于监视策略来工具植入客户机应用程序代码406。在一实施例中,管理服务器208可根据监视策略配置指示404 来配置应用程序工具植入模块404的监视策略。例如,如图5和6所示,工具植入插装模块 604可被配置成根据由监视策略配置模块504生成的监视策略配置指示404来修改所截取的客户机应用程序代码406。例如,管理服务器208处的用户(例如,操作管理员或系统管理员)可与用户接口 (例如,图形用户接口(GUI)、键盘、定点设备等)交互以输入对所截取的web应用程序的监视策略。例如,可允许用户以任何方式指定要施加至特定web应用程序(例如,功能或文件) 的特定工具植入代码,包括通过要工具植入的文件扩展或类型(例如,Adobe Flash 文件、Microsoft Silverlight 文件、其他媒体文件类型、.wmv (Windows Media 视频) 扩展、.mp3扩展等)。可在监视策略配置指示404中指示所指定的监视策略,该指定的监视策略被传送给工具植入插装模块604。当应用程序工具植入模块206接收所截取的客户机应用程序代码406时,工具植入插装模块602可根据通过监视策略配置指示404提供的监视策略来修改所截取的客户机应用程序代码406。在步骤308,提供经工具植入的客户机应用程序代码以传送给客户机。例如,如图 4所示,可将响应流水线202中生成的经工具植入的客户机应用程序代码112从应用服务器 104传送给客户机102。在一实施例中,应用服务器104可包括诸如本文别处所述的用于通过通信链路传送包括客户机应用程序代码112的信息的网络接口。响应流水线202可输出经工具植入的客户机应用程序代码112以提供给网络接口来传送给客户机102。B.示例响应流水线实施例
响应流水线202可被以各种方式配置成响应于web应用程序请求来生成经工具植入的web应用程序。例如,在一实施例中,响应流水线202可以是WCF (Windows通信基础) 流水线或被配置成处理web应用程序请求的HTTP (超文本传输协议)流水线,并且被修改以能够工具植入web应用程序。图7-9示出了根据各实施例的响应流水线202的示例的框图,该响应流水线202被配置成响应于web应用程序请求来生成经工具植入的web应用程序。图7-9描述如下。图7示出了根据一示例实施例的HTTP流水线702的框图。HTTP流水线702是响应流水线202的示例,并且被配置成当客户机应用程序代码经过HTTP流水线702时将工具植入代码插入到客户机应用程序代码中。例如,参考图4,应用服务器104可用作web服务器,并且web应用程序请求110可以是从浏览器106到web服务器的对ASP. NET页面的请求。ASP. NET是由美国华盛顿州雷蒙德市的微软公司开发的web应用程序框架。在这个示例中,应用服务器104的ASP. NET引擎可调用生成客户机应用程序代码406作为标记页面的HTTP流水线的多个阶段,该客户机应用程序代码406被返回给浏览器106以呈现以供显示。在图7的实施例中,HTTP流水线702被配置成生成客户机应用程序代码406作为标记页面,并且将工具植入代码插入到标记页面中以生成经工具植入的客户机应用程序代码 112。如图7所示,HTTP流水线702包括多个阶段和响应过滤器706,这些阶段包括第一至第η个阶段704a-704n。阶段704a-704n各自可被配置成执行针对生成客户机应用程序代码406的对应功能,诸如认证(例如,用于安全通信的认证浏览器106)、授权(确认对请求110的访问)、生成对应于所请求的web应用程序的客户机应用程序代码406等。例如, 在一实施例中,客户机应用程序代码生成器204可以是第一至第η个阶段704a-704n中的一个,诸如阶段704a。此外,应用程序工具植入模块206 (例如,图6中的应用程序扫描模块 602和工具植入插装模块604)可被包括在响应过滤器706中,该响应过滤器706是HTTP过响应过滤器706被配置成截取客户机应用程序代码406 (例如,图3的步骤304), 并且将工具植入代码插入到客户机应用程序代码406中以生成经工具植入的客户机应用程序代码112(例如,图3的步骤306)。在一实施例中,响应过滤器706的应用程序扫描模块602可由开发者配置。开发者可生成包括在应用程序扫描模块602中的自定义用户控件。 自定义用户控件被配置成检测开发者想将工具植入代码插入到其中的客户机应用程序代码页面的特定类型。例如,自定义用户控件可被配置成搜索预定准则,诸如特定文件类型、 文件扩展、和/或其他属性,以检测要工具植入的客户机应用程序代码页面。每次客户机应用程序代码406经过HTTP流水线702时,应用程序扫描模块602扫描客户机应用程序代码 406。如果自定义用户控件确定接收到的客户机应用程序代码406包括一个或多个预定准则,则应用程序扫描模块602指示通过工具植入插装模块604来工具植入的客户机应用程序代码406。可被响应过滤器706的应用程序扫描模块602使用的示例自定义用户控件在下文
中示出。public partial class ScriptWebUserControll : System.Web.UI.UserControl {
protected void Page_Load(object sender, EventArgs e)
{ }
protected override void OnInit(EventArgs e) {
this.Page.Response.Filter = new PerfFilter(Response.Filter); base.Onlnit(e);
}
}如上所示,该自定义用户控件调用PerfFilter (Response. Filter)函数,该函数被配置成在客户机应用程序代码406中扫描指示客户机应用程序代码要工具植入的一个或多个特定属性。该示例自定义用户控件出于说明的目的而提供,并不旨在限制。自定义用户控件可以任意数目的方式来配置,如相关领域技术人员根据此处的教义应当理解的。此外,修改代码的示例在下文中示出,该修改代码可被包括在响应过滤器706的工具植入插装模块604中,从而如果由以上所示的示例自定义用户控件指示用于工具植入则修改客户机应用程序代码406以插入工具植入代码。
public class PerfFilter MemoryStream {
private Stream originalStream;
public override void Write(byte[] buffer, int offset, int count) {
//基于配置策略将响应注入到流中
originalStream.Write(UTF8Encoding.UTF8.GetBytes(contentInBuffer), offset,
UTF 8Encoding.UTF 8 .GetByteCount(contentlnBuffer)); }
} 如上所示,该修改代码调用可被配置成将工具植入代码插入到客户机应用程序代码406中的originalStream. Write函数。该修改代码可由示例自定义用户控件的开发者生成以按需修改客户机应用程序代码406。该示例修改代码出于说明的目的而提供,并不旨在限制。修改代码可以任意数目的方式来配置,如相关领域技术人员根据此处的原理应当理解的。图8示出了根据另一示例实施例的HTTP流水线802的框图。HTTP流水线802是响应流水线202的示例,并且被配置成当客户机应用程序代码经过HTTP流水线802时将工具植入代码插入到客户机应用程序代码中。在图8的实施例中,HTTP模块被用于以与图7 类似的方法而不是使用自定义用户控件将工具植入代码插入到客户机应用程序代码中,经工具植入的代码将基于配置声明插入。由此,在图8的实施例中,当客户机应用程序代码经过HTTP流水线802时,工具植入代码可被插入到所有客户机应用程序代码中,而不是将工具植入代码插入到满足预定过滤准则的客户机应用程序代码中。如图8所示,HTTP流水线802包括第一至第nHTTP模块804a_804n和HTTP处理器806。HTTP模块和HTTP处理器被包括在诸如ASP. NET体系结构之类的体系结构中。每一个web应用程序请求可由多个HTTP模块(例如,认证模块、会话模块等)处理且随后由 HTTP处理器处理。在HTTP处理器已处理web应用程序请求之后,web应用程序请求通过 HTTP模块流回。因而,可在HTTP处理器执行之前和之后调用HTTP模块。HTTP模块可被开发者配置成使开发者能够截取、参与、或修改每一个单独的web应用程序请求。在一实施例中,应用程序工具植入模块206 (例如,图6中的应用程序扫描模块602 和工具植入插装模块604)可被包括在HTTP模块804中,诸如第η个HTTP模块804η。例如,HTTP模块804η可被配置成截取客户机应用程序代码406 (例如,图3的步骤304),并且将工具植入代码插入到客户机应用程序代码406中以生成经工具植入的客户机应用程序代码112 (例如,图3的步骤306)。例如,HTTP模块804η可被配置成实现IHttpModule接口,该接口位于System. Web命名空间中。Microsoft . NET框架的IHttpModule接口向实现类提供HTTP模块初始化和处理事件。〈httpModules〉配置部分处理器在web应用程序内配置HTTP模块,并且可在计算机、站点、或应用程序级处声明。为了注入工具植入代码,HTTP模块804η可使用 IHttpModule界面来生成。IHttpModule界面有具有以下签名的两种方法。void Init(HttpApplication);void DisposeO ;在这个实施例中,应用程序扫描模块602可被配置成截取客户机应用程序代码 112的所有实例,并且工具植入插装模块604可被配置成插入对应的工具植入代码。例如, 在用于所有web应用程序请求110的HTTP模块804a初始化之后,可以在上文中参考图7 的HTTP流水线702 (例如,由响应过滤器706修改)描述的类似方式修改客户机应用程序代码 406。在初始化实现中,可预订事件 BeforeProcessRequest 禾口 AfterProcessRequest, 并且可修改客户机应用程序代码406以生成经工具植入的客户机应用程序代码112以传送给客户机102。图9示出了根据另一示例实施例的响应流水线902的框图。响应流水线902是响应流水线202的一个示例,并且被配置成当客户机应用程序代码经过响应流水线902时将工具植入代码插入到客户机应用程序代码中。如图9所示,响应流水线902包括剖析器 904。在图9的实施例中,剖析器904被用于扫描客户机应用程序代码,并且将工具植入代码插入到满足扫描策略的客户机应用程序代码中。由此,在一实施例中,剖析器904可包括应用程序工具植入模块206 (例如,图6中的应用程序扫描模块602和工具植入插装模块 604)。剖析器904可被配置成截取客户机应用程序代码406 (例如,图3的步骤304),并且将工具植入代码插入到客户机应用程序代码406中以生成经工具植入的客户机应用程序代码112 (例如,图3的步骤306)。例如,剖析器904可实现CRL(公共语言运行时)剖析器技术,诸如Microsoft Visual SUldio Intellitrace技术,以修改响应处理器(例如,使用ProcessRequest框架实现)。该技术可在web应用程序级或页面级应用,而不使用自定义用户控件。相反,可使用一个或多个配置文件来描述关于要插入到客户机应用程序代码中的工具植入代码的扫描策略。由此,在各实施例中,web应用程序可由响应流水线202以各种方式来工具植入, 包括扫描到特定web应用程序页面来工具植入、工具植入所有web应用程序页面、或工具植入满足特定简档的web应用程序页面。例如,如上所述,响应流水线202可使用HTTP过滤器(响应过滤器706),该HTTP过滤器工具植入特定web应用程序页面(例如,包括自定义用户控件的页面)、工具植入所有所请求的web应用程序的HTTP模块(例如,HTTP模块 804η)、或诸如Microsoft Visual Studio Intellitrace之类的剖析器技术。在其他实施例中,响应流水线202可被以其他方式配置成工具植入所请求的web应用程序,诸如被配置为将工具植入代码插入到所请求的web应用程序的WCF流水线、或被配置为用于其他类型的响应流水线和/或以其他方式配置。C.经工具植入的web应用程序和与管理服务器交互的示例客户机侧呈现在各实施例中,web应用程序可被包括工具植入代码的客户机请求并由其接收。可执行工具植入代码以监视客户机处的web应用程序的性能方面。图10示出了根据一示例实施例的图2的系统200,并示出了具有与在请求110中所请求的web应用程序相对应的接收到的经工具植入的客户机应用程序代码112的客户机102。图10的系统200参考图11 进一步描述如下,图11示出了根据一示例实施例的用于显示客户机处的经工具植入的web 应用程序的流程图1100。在一实施例中,系统200可根据流程图1100来操作。基于关于流程图1100的讨论,其他结构和操作实施例对于相关领域技术人员将是显而易见的。流程图 1100和系统200描述如下。流程图1100开始于步骤1102。在步骤1102中,将请求传送给web应用程序的服务器。例如,如以上参考图4所述,浏览器106可生成传送给应用服务器104的web应用程序请求110。在步骤1104,响应于该请求,从服务器接收经工具植入的客户机应用程序代码,经工具植入的客户机应用程序代码包括被插入到服务器处的经工具植入的客户机应用程序代码的工具植入代码。例如,如以上参考图4所述,响应于web应用程序请求110,从应用服务器104接收经工具植入的客户机应用程序代码112。经工具植入的客户机应用程序代码 112包括曾在应用服务器104处插入的工具植入代码。在步骤1106,呈现经工具植入的客户机应用程序代码。例如,如图10所示,客户机 102处的浏览器106可加载经工具植入的客户机应用程序代码112以供呈现。浏览器106 可以如相关领域技术人员已知的方式呈现经工具植入的客户机应用程序代码112。通过呈现经工具植入的客户机应用程序代码112,在浏览器116中执行所请求的web应用程序。例如,取决于经工具植入的客户机应用程序代码112的特定配置,可在浏览器106中呈现媒体播放器、web邮件工具、在线零售销售站点、在线拍卖、维基、和/或其他类型的web应用程序。在步骤1108,执行步骤1106期间的工具植入代码以捕捉性能信息。例如,除了被呈现的经工具植入的客户机应用程序代码112的web应用程序之外,执行在应用服务器114 处被插入到经工具植入的客户机应用程序代码112的工具植入代码。由此,可捕捉被配置成由工具植入代码捕捉的性能信息。例如,图12示出了根据一示例实施例的经工具植入的客户机应用程序代码112的框图。除了包括web应用程序功能之外,经工具植入的客户机应用程序代码112可包括性能信息捕捉模块1202、数据聚集模块1204和服务器接口模块1206。经工具植入的客户机应用程序代码112的这些元件描述如下。性能信息捕捉模块1202被配置成根据步骤1108来捕捉性能信息。与web应用程序和客户机102相关联的任何类型的性能信息可由性能信息捕捉模块1202捕捉。可捕捉的关于web应用程序的性能信息的示例包括web应用程序呈现时间和/或持续时间、web应用程序加载时间、web应用程序错误、和/或任何其他度量。可捕捉与应用程序的健康相关联的性能信息,包括捕捉指示web应用程序的一个或多个动作是否是响应性的数据、和/或捕捉指示在应用程序的执行期间的一个或多个错误和/或故障的错误信息。可捕捉的与客户机102相关联的性能信息的示例包括捕捉指示浏览器106的类型和/或版本的数据、捕捉指示客户机的场所的数据、捕捉指示客户机处的语言的数据、捕捉指示客户机102处实现的操作系统的类型的数据等。例如,可由性能信息捕捉模块1202计算的作为所捕捉性能信息的度量的一些示例包括在Microsoft Si lverl ight web应用程序示例中,计算使用Sys. Application. init()初始化的Microsoft Silverlight 框架的度量;在基于 AJAX 的 web应用程序示例中,计算AJAX脚本排队加载时间的度量、和/或使用Sys. Application. notifyScriptLoaded 0来计算AJAX脚本加载时间的度量;使用其事件计算Sys. Application加载/卸载的度量;计算Sys. Component初始化的度量;以及计算Sys. Component. $create的度量。在另一示例中,性能信息捕捉模块1202可捕捉由Error, create 为脚本创建的诸如 Sys. SCriptLoadFaiIedException 之类的 Sys. Exception 例夕卜。性能信息的这些示例出于说明的目的而提供,并不旨在限制。在各实施例中,性能信息捕捉模块1202可被配置成捕捉与web应用程序、浏览器106、和/或客户机102相关联的任何类型的性能信息。如图12所示,性能信息捕捉模块1202生成所捕捉的性能信息1208。在步骤1110,聚集所捕捉的性能信息。步骤1110是可任选的。当存在时,图12的数据聚集模块1204可被配置成聚集所捕捉的性能信息。例如,浏览器106可多次(例如, 多次执行步骤1106)加载并呈现经工具植入的客户机应用程序代码112,并且每次经工具植入的客户机应用程序代码112被加载并呈现时,对应的性能信息可由性能信息捕捉模块 1202捕捉。在一实施例中,可存在数据聚集模块1204以收集并聚集在每次呈现经工具植入的客户机应用程序代码112期间所捕捉的性能信息。可以各种方式执行由数据聚集模块1204对所捕捉的性能信息的聚集。例如,在一实施例中,数据聚集模块1204可通过将所捕捉的性能信息存储在表、数组、或其他数据结构中来聚集所捕捉的性能信息。在另一实施例中,数据聚集模块1204可通过对所捕捉的性能信息执行操作来聚集所捕捉的性能信息,诸如对所捕捉的性能信息求和和/或对所捕捉的性能信息执行其他算术运算。在再一实施例中,数据聚集模块1204可通过对所捕捉的性能信息执行比较、对所捕捉的性能信息分类、和/或执行用于组织所捕捉的性能信息的其他技术来聚集所捕捉的性能信息。如图12所示,数据聚集模块1204生成所聚集的性能信息 1210。在步骤1112,将所捕捉的性能信息传送给服务器。例如,在一实施例中,经工具植入的客户机应用程序代码112的服务器接口模块1206被配置成将所捕捉的性能信息传送给服务器。例如,如图10所示,服务器接口模块1206可被配置成将所捕捉的性能信息1002 传送给管理服务器208。管理服务器208可以是与应用服务器104分开的服务器,或者可以是相同的服务器。管理服务器208可以是客户机102本地的服务器(例如,“企业”服务器),或者可以是由客户机102通过网络116访问的服务器(例如,“基于云的”服务器)。 客户机102可包括用于通过通信链路传送包括所捕捉的性能信息1002的信息的网络接口, 诸如本文别处所述。如图12所示,服务器接口模块1206可接收所捕捉的性能信息1208和/或所聚集的性能信息1210(当存在时)。在每次呈现经工具植入的客户机应用程序代码112期间,服务器接口模块1206可被配置成将所捕捉的性能信息1208传送给管理服务器208作为所捕捉的性能信息1002。在另一实施例中,服务器接口模块1206可被配置成周期性地或非周期性地将所聚集的性能信息1002传送给管理服务器208作为所捕捉的性能信息1002。例如, 在由浏览器106预定数目次地呈现经工具植入的客户机应用程序代码112之后,服务器接口模块1206可被配置成以预定时间间隔(例如,每天预定数目的次数、每天特定次数、在特定时间每天一次、每五天一次、每一个月一次等)或以其他方式将所聚集的性能信息1210 传送给管理服务器208。D.示例管理服务器实施例在各实施例中,按照特定实现的需要,管理服务器208可被配置成以任何方式处理从经工具植入的客户机应用程序代码112接收的所捕捉的性能信息1002。图13示出了根据一示例实施例的用于在管理服务器处处理所捕捉的性能信息的流程图1300。在一实施例中,管理服务器208可根据流程图1300来操作。基于关于流程图1300的讨论,其他结构和操作实施例对于相关领域技术人员将是显而易见的。流程图1300描述如下。流程图1300开始于步骤1302。在步骤1302,从客户机处的经工具植入的客户机应用程序代码接收所捕捉的性能信息。例如,如图10所示,由在浏览器106中运行的经工具植入的客户机应用程序代码112生成的所捕捉的性能信息1002可由管理服务器208从客户机102接收。例如,如图5所示,管理服务器208可包括被配置成接收所捕捉的性能信息1002的性能数据接收模块506。如以下进一步描述的,性能数据接收模块506可包括用于接收所捕捉的性能信息1002的一个或多个接口。如上所述,所捕捉的性能信息1002可以或者可以不包括所聚集的性能信息。在步骤1304,处理接收到的所捕捉的性能信息。在各实施例中,按照特定实现的需要,管理服务器208可以任何方式处理所捕捉的性能信息1002。如果不聚集所捕捉的性能信息1002,管理服务器208可以与如上所述的用于数据聚集模块1204的类似的方式和/
20或以任何其他方式聚集所捕捉的性能信息1002。例如,在所聚集的数据被呈现给诸如系统中心操作管理器(SCOM)管理组之类的一个或多个用户之前,管理服务器208可生成在一段时间内针对web应用程序请求的运行计数器的报告,诸如平均响应时间之类。通过提供所捕捉的性能信息1002,允许用户确定web应用程序是否对客户机计算机可用、用于提供web 应用程序的响应时间、以及从客户机计算机处的最终用户的观点来看web应用程序执行得如何好。管理服务器208的性能数据接收模块506可包括用于从客户机接收所捕捉的性能信息1002的一个或多个接口。例如,在以上所述的一些示例中,可从客户机应用代码调用 "makeCall (operationName, counterName),,功能以将时间或性能计数器值提供给管理服务器208。可使用不同的operationName和counterName参数以不同的方式来调用makeCall 功能,该makeCall功能可由性能数据接收模块506的对应接口来处理。例如,可由性能数据接收模块506实现以接收所捕捉的性能信息的示例界面代码示出如下public interface ITxAxctualMonitoring { [WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle 二 WebMessageBodyStyle. Wrapped)]
public int StartPerfCounter(Guid objectld, Guid instanceld, string counterName, int counterValue);
public int EndPerfCounter(Guid objectld, Guid instanceld, string counterName, int counterValue); [WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle. Wrapped)]
public int mediaOpened (Guid objectld, Guid instanceld, string counterName, int counterValue);
public int mediaEnded (Guid objectld, Guid instanceld,
string counterName, int counterValue);
[OperationContract]
public int ReportException(Guid objectld, ExceptionData exception);
}以上示例接口代码使用不同的operationName和counterName参数来提供与 makeCall函数的四个可能调用相对应的四个接口,并且包括对应于例外功能的附加接口。 客户机102处的经工具植入的客户机应用程序代码112可使用“StartPerfCounter”和 "Page Load”作为operationName和counterName参数来调用makeCall函数。在这种情况下,性能计算器值可从对应于开始web应用程序页面加载的经工具植入的客户机应用程序代码112接收。“objecteld”和“instanceld”参数还可从经工具植入的客户机应用程序代码112接收以向管理服务器208标识客户机102。类似地,客户机102处的经工具植入的客户机应用程序代码112可使用 "EndPerfCounter"禾口 ‘‘Page Load,,作为 operationName 禾口 counterName 参数来调用 makeCall功能。在这种情况下,性能计算器值可从对应于结束web应用程序页面加载的经工具植入的客户机应用程序代码112接收。客户机102处的经工具植入的客户机应用程序代码 112 可使用"mediaOpened,,和"OnClientMediaOpened,,作为 operationName 和counterName参数来调用makeCall函数。在这种情况下,性能计算器值可从对应于开始.wmv媒体文件加载的经工具植入的客户机应用程序代码112接收。客户机102处的经工具植入的客户机应用程序代码112可使用“mediaEnded,,和“OnClientMediaEnded,,作为 operationName和counterName参数来调用makeCall函数。在这种情况下,性能计算器值可从对应于结束.wmv媒体文件加载的经工具植入的客户机应用程序代码112接收。以上所示的附加示例接口代码使经工具植入的客户机应用程序代码112能够在客户机102处加载或呈现接收到的web应用程序存在故障(例如,呈现.wmv文件的故障等)时提供例外信肩、ο接口代码的该示例出于说明的目的而提供,并不旨在限制。性能数据接收模块506 的接口代码可以任意数目的方式来配置,如相关领域技术人员根据此处的教义应当理解的。这个接口代码可被配置成从经工具植入的客户机应用程序代码112接收具有任意数目参数的任何类型和数量的所捕捉的性能信息。E.示例益处各实施例可提供一个或多个益处,如此处所述。这些益处的示例描述如下。开发者参与和协调Web 2. O应用程序本质上包括web应用程序本身内或来自其他源的动态内容,因为web应用程序组合来自其他源的数据和内容以创建信息的复杂混搭。在其中开发者不得不注入特定工具植入(因为开发者是知道web应用程序内容的那个人)的方法中,每次web应用程序内容改变时,开发者可不得不改变工具植入代码和/或管理服务器,其可以不是不可行的。在一实施例中,使用试探法,可确定用于web应用程序的适当类型的工具植入,并且web应用程序在其通过响应流水线可相应地修改。这种试探法可确定什么类型的内容和函数需要测量并注入对应的工具植入代码而无需开发者介入。规模最后一英里或最终用户监视通常是其中收集所有用户数据的捕捉全部努力,其使信息规模处理从服务器负荷和分析的观点来看都是很难的。其他解决方案也可以捕捉原始形式的数据,这也增加服务器负荷并需要聚集水平变得有意义。在各实施例中, 因为可控制监视什么和何时监视的配置,所以信息的智能采样可被用来获取各种各样的数据,以供性能和可用性监视、同时减小服务器负荷并使复杂分析的需要最小化。例如,可执行与来自一种类别的客户机(例如,特定版本的Mozilla Firefox 浏览器)的一组采样代表性客户机相关联的所捕捉的数据(例如,以免淹没管理系统)。聚集可在客户机上执行以使传送给管理服务器的性能数据已经聚集并准备好被消费。在一实施例中,web服务还可在使其对监视/报告系统可用之前执行附加聚集。与客户机配置相关期望执行对来自最终用户体验的数据的分析以使该数据按照设备类型、客户机版本、位置、内容等来群集。该信息在应用服务器上可用,但不必在管理服务器上是可用的。由此,解决方案通常涉及组合来自多个源的数据以使其有意义。监视数据可提供性能和可用性度量,但可能需要访问IIS日志以获得客户机浏览器类型和客户机位置。由此,需要复杂的相关以产生可操作的数据。在各实施例中,所插入的工具植入代码可包括捕捉关于客户机浏览器、客户机场所、和/或客户机语言的数据,该数据可与所捕捉的性能信息一起被递送到管理服务器。由此,执行群集数据组变得更容易。通过将所有所捕捉的数据提供给单个位置,可更快地执行分析,并且可缩减性能和可用性的问题。动态补救:Web 2. O应用程序允许开发者通过设计适于由客户机使用的设备或浏览器的内容来个性化传递给客户机的内容。开发者还可基于网络连接来调节内容以考虑客户机访问更慢的连接上的数据。这通常用关于如何显示内容的硬编码规则来实现并且涉及开发者添加适当的工具植入以实现这一点。在各实施例中,通过添加适当的工具植入代码来确定在客户机实际执行web应用程序时的性能信息,可控制应用程序随后如何基于这些值来执行或请求新的内容。例如,在当前执行内容的性能被确定为低时,可自动地插入工具植入代码以停止加载内容。此外,可插入工具植入代码以改变在浏览器处查看的内容,诸如在查看页面上视频的性能被认为是慢时使低保真广告显示。以此方式,后续请求不会继续降低性能和可用性。III.示例计算设备实施例浏览器106、响应流水线108、响应流水线202、客户机应用程序代码生成器204、应用程序工具植入模块206、扫描策略配置模块502、监视策略配置模块504、性能数据接收模块506、应用程序扫描模块602、工具植入插装模块604、HTTP流水线702、第一至第η阶段 704a-704n、响应过滤器706、HTTP流水线802、第一至第nHTTP模块804a_804n、HTTP处理器806、响应流水线902和剖析器904可用硬件、软件、固件、或其任何组合来实现。例如,浏览器106、响应流水线108、响应流水线202、客户机应用程序代码生成器204、应用程序工具植入模块206、扫描策略配置模块502、监视策略配置模块504、性能数据接收模块506、应用程序扫描模块602、工具植入插装模块604、HTTP流水线702、第一至第η阶段704a-704n、 响应过滤器706、HTTP流水线802、第一至第nHTTP模块804a_804n、HTTP处理器806、响应流水线902、和/或剖析器904可被实现为被配置在一个或多个处理器中执行的计算机程序
24代码。替换地,浏览器106、响应流水线108、响应流水线202、客户机应用程序代码生成器 204、应用程序工具植入模块206、扫描策略配置模块502、监视策略配置模块504、性能数据接收模块506、应用程序扫描模块602、工具植入插装模块604、HTTP流水线702、第一至第η 阶段704a-704n、响应过滤器706、HTTP流水线802、第一至第nHTTP模块804a_804n、HTTP 处理器806、响应流水线902,和/或剖析器904可被实现为硬件逻辑/电子电路。图14描绘了其中可实现本发明的各实施例的计算机1400的示例实现。例如,客户机102、应用服务器104、和/或管理服务器208各自可类似于计算机1400地实现,包括计算机1400的一个或多个特征和/或替换的特征。计算机1400可以是以例如,常规个人计算机、移动计算机、或工作站的形式的通用计算设备,或者计算机1400可以是特殊用途的计算设备。此处提供的计算机1400的描述出于说明的目的而提供,并不旨在限制。本发明的各实施例也可在其它类型的计算机系统中实现,如相关领域技术人员已知的。如图14所示的,计算机1400包括处理单元1402、系统存储器1404和将包括系统存储器1404的各种系统组件耦合到处理单元1402的总线1406。总线1406表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、 加速图形端口,以及使用各种总线体系结构中的任何一种的处理器或局部总线。系统存储器1404包括只读存储器(ROM) 1408和随机存取存储器(RAM) 1410。基本输入/输出系统 1412 (BIOS)被存储在 ROM 1408 中。计算机1400还具有一个或多个以下驱动器用于读写硬盘的硬盘驱动器1414、用于读或写可移动磁盘1418的磁盘驱动器1416、以及用于读或写诸如⑶R0M、DVD ROM或其他光介质之类的可移动光盘1422的光盘驱动器1420。硬盘驱动器1414、磁盘驱动器1416 和光盘驱动器1420分别通过硬盘驱动器接口 1424、磁盘驱动器接口 1426和光学驱动器接口 1428连接到总线1406。驱动器以及它们相关联的计算机可读介质为计算机提供了计算机可读指令、数据结构、程序模块和其他数据的非易失存储器。尽管描述了硬盘、可移动磁盘和可移动光盘,但是也可使用诸如闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等的其他类型的计算机可读介质来存储数据。多个程序模块可被存储在硬盘、磁盘、光盘、ROM、或RAM上。这些程序包括操作系统1430、一个或多个应用程序1432、其他程序模块1434、以及程序数据1436。应用程序1432 或程序模块1434可包括,例如,用于实现浏览器106、响应流水线108、响应流水线202、客户机应用程序代码生成器204、应用程序工具植入模块206、扫描策略配置模块502、监视策略配置模块504、性能数据接收模块506、应用程序扫描模块602、工具植入插装模块604、HTTP 流水线702、第一至第η阶段704a-704n、响应过滤器706、HTTP流水线802、第一至第nHTTP 模块804a-804n、HTTP处理器806、响应流水线902、剖析器904、流程图300、流程图1100、 和/或流程图1300 (包括流程图300、1100和1300的任何步骤)的计算机程序逻辑。用户可通过诸如键盘1438和定点设备1440之类的输入设备将命令和信息输入到计算机1400中。其他输入设备(未示出)可包括话筒、游戏杆、游戏手柄、圆盘式卫星天线、 扫描仪等。这些及其他输入设备通常通过耦合到总线1406的串行端口接口 1442连接到处理单元1402,但是也可通过诸如并行端口、游戏端口、或通用串行总线(USB)之类的其他接口来连接。显示设备1444也通过诸如视频适配器1446之类的接口连接到总线1406。除了监视器之外,计算机1400可包括诸如扬声器和打印机之类的其他外围输出设备(未示出)。计算机1400通过适配器或网络接口 1450、调制解调器1452、或用于通过网络建立通信的其他装置连接到网络1448 (例如,因特网)。调制解调器1452 (可以是内置的或外置的)通过串行端口接口 1442连接到总线1406。如此处所用的,术语“计算机程序介质,,和“计算机可读介质,,被用来泛指诸如与硬盘驱动器1414相关联的硬盘、可移动磁盘1418、可移动光盘1422,以及诸如闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等的其他介质之类的介质。如上所述,计算机程序和模块(包括应用程序1432和其它程序模块1434)可被存储在硬盘、磁盘、光盘、ROM、或RAM上。这些计算机程序也可通过网络接口 1450或串行端口接口 1442来接收。这些计算机程序在由应用程序执行或加载时使计算机1400能够实现此处讨论的本发明的各实施例的特征。因此,这些计算机程序表示计算机1400的控制器。本发明还涉及包括存储在任何计算机可使用介质上的软件的计算机程序产品。这些软件,当在一个或多个数据处理设备中执行时,使数据处理设备如此处所述的那样操作。 本发明的各实施例采用现在或将来已知的任何计算机可使用或计算机可读介质。计算机可读介质的示例包括,但不限于,诸如RAM、硬盘驱动器、软盘、⑶ROM、DVD ROM、zip磁盘、磁带、磁存储设备、光存储设备、MEM (存储器)、基于纳米技术的存储设备等的存储设备。VI.结论尽管上文描述了本发明的各种实施例,但是应该理解,它们只是作为示例来呈现的,而不作为限制。相关领域的技术人员将理解,在不偏离如所附权利要求书所定义的本发明的精神和范围的情况下,可以在形式和细节方面进行各种修改。因此,本发明的宽度和范围不应该受到上述示例性实施例中的任何一个的限制,而只应根据以下权利要求和它们的等效内容来定义。
权利要求
1.一种在一个或多个服务器中的方法,包括在响应流水线中截取(304)客户机应用程序代码,所述客户机应用程序代码响应于来自客户机的对web应用程序的请求生成;将工具植入代码插入(306)到所截取的客户机应用程序代码中以生成经工具植入的客户机应用程序代码,所述工具植入代码被配置成当在所述客户机处呈现所述经工具植入的客户机应用程序代码时执行以捕捉所述客户机处的性能信息,并且被配置成从所述客户机传送所捕捉的性能信息;以及提供(308)经工具植入的客户机应用程序代码以传送给所述客户机。
2.如权利要求1所述的方法,其特征在于,所述截取包括在所述响应流水线的响应过滤器处接收所述客户机应用程序代码,以及在所述响应过滤器处确定所述客户机应用程序代码满足用于接收工具植入代码的预定准则;以及其中所述插入包括使用所述响应过滤器将所述工具植入代码插入到所述客户机应用程序代码中。
3.如权利要求1所述的方法,其特征在于,使用所述响应流水线中的多个HTTP(超文本传输协议)模块和HTTP处理器来处理对所述web应用程序的请求,其中所述截取包括在所述多个HTTP模块中的HTTP模块处接收所述客户机应用程序代码;以及其中所述插入包括使用所述HTTP模块将所述工具植入代码插入到所述客户机应用程序代码中。
4.如权利要求1所述的方法,其特征在于,所述截取包括在所述响应流水线的剖析器处接收所述客户机应用程序代码,以及在所述剖析器处确定所述客户机应用程序代码满足用于接收工具植入代码的预定准则;以及其中所述插入包括使用所述剖析器将所述工具植入代码插入到所述客户机应用程序代码中。
5.如权利要求1所述的方法,其特征在于,所述插入包括 修改所述客户机应用程序代码的页面代码。
6.如权利要求1所述的方法,其特征在于,还包括分析所述客户机应用程序代码以确定要监视的所述客户机应用程序代码的一个或多个属性;以及配置所述工具植入代码以监视所述客户机应用程序代码的所述一个或多个属性。
7.如权利要求6所述的方法,其特征在于,还包括配置所述工具植入代码以捕捉关于所述客户机处的浏览器类型、所述客户机的场所、 或客户机语言中的至少一个的数据。
8.如权利要求1所述的方法,其特征在于,还包括从所述客户机接收由所述经工具植入的客户机应用程序代码捕捉的性能信息。
9.一种计算机程序产品,包括其上记录有计算机程序逻辑的计算机可读介质,包括 用于使处理器能够执行权利要求1-8中的任何一项的计算机程序逻辑装置(1434)。
10.一种服务器,包括被配置成生成数据流从而响应于来自客户机(102)的对web应用程序的请求(110)将客户机应用程序代码(406)提供给所述客户机(102)的响应流水线(202);被配置成响应于所述响应流水线(202)来截取所述客户机应用程序代码(406)的应用程序扫描模块(602);以及被配置成将工具植入代码插入到所截取的客户机应用程序代码(604)中以生成经工具植入的客户机应用程序代码(112)的工具植入插装模块(604),所述工具植入代码被配置成当在所述客户机(102)处呈现所述经工具植入的客户机应用程序代码(112)时被执行以捕捉所述客户机(102)处的性能信息,并且被配置成从所述客户机(102)传送所捕捉的性能信息;所述响应流水线(202)被配置成提供所述经工具植入的客户机应用程序代码(112)以传送给所述客户机(102)。
11.如权利要求10所述的服务器,其特征在于,所述应用程序扫描模块和所述工具植入插装模块被包括在响应过滤器中,所述应用程序扫描模块被配置成确定所述客户机应用程序代码是否满足用于接收工具植入代码的预定准则,并且所述工具植入插装模块被配置成如果所述客户机应用程序代码满足所述预定准则则将所述工具植入代码插入到所述客户机应用程序代码中。
12.如权利要求10所述的服务器,其特征在于,使用所述响应流水线中的多个HTTP(超文本传输协议)模块和HTTP处理器来处理对web应用程序的所述请求,所述应用程序扫描模块和所述工具植入插装模块被包括在所述多个HTTP模块中的HTTP模块中,并且所述工具植入插装模块被配置成将所述工具植入代码插入到所述客户机应用程序代码中。
13.如权利要求10所述的服务器,其特征在于,所述应用程序扫描模块和所述工具植入插装模块被包括在剖析器中。
14.如权利要求10所述的服务器,其特征在于,所述工具植入插装模块被配置成修改所述客户机应用程序代码的页面代码。
15.如权利要求10所述的服务器,其特征在于,还包括被配置成从所述经工具植入的客户机应用程序代码接收所捕捉的性能信息的性能数据接收模块;所述性能数据接收模块被配置成采样从一类客户机接收的所捕捉性能信息以生成与一组客户机相关联的数据集,并分析与所述一组客户机相关联的所述数据集。
全文摘要
提供了用于监视web应用程序性能的技术。在应用服务器处接收对web应用程序的请求。应用服务器处的响应流水线生成对应于所请求的web应用程序的客户机应用程序代码。在响应流水线中截取客户机应用程序代码。工具植入代码被插入到所截取的客户机应用程序代码中以生成经工具植入的客户机应用程序代码。工具植入代码被配置成当在客户机处呈现经工具植入的客户机应用程序代码时执行以捕捉客户机处的性能信息,并且被配置成从客户机传送所捕捉的性能信息。
文档编号G06F11/36GK102306120SQ201110206369
公开日2012年1月4日 申请日期2011年7月14日 优先权日2010年7月21日
发明者A·科埃略, A·萨格维, D·萨维奇, I·莱特卡, J·S·林, R·苏达卡尔, V·S·K·库拉帕蒂 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1