首页> 中国专利> 测量WEB应用程序的实际最终用户性能和可用性

测量WEB应用程序的实际最终用户性能和可用性

摘要

提供了用于监视web应用程序性能的技术。在应用服务器处接收对web应用程序的请求。应用服务器处的响应流水线生成对应于所请求的web应用程序的客户机应用程序代码。在响应流水线中截取客户机应用程序代码。工具植入代码被插入到所截取的客户机应用程序代码中以生成经工具植入的客户机应用程序代码。工具植入代码被配置成当在客户机处呈现经工具植入的客户机应用程序代码时执行以捕捉客户机处的性能信息,并且被配置成从客户机传送所捕捉的性能信息。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-01-27

    授权

    授权

  • 2015-08-12

    专利申请权的转移 IPC(主分类):G06F11/36 变更前: 变更后: 登记生效日:20150727 申请日:20110714

    专利申请权、专利权的转移

  • 2012-02-22

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20110714

    实质审查的生效

  • 2012-01-04

    公开

    公开

说明书

技术领域

本发明涉及测量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开发的 以及由美国华盛顿州雷蒙德市微软公司开发的SilverlightTM之类的技术可使用客户侧处理来控制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(可扩展标记语言))、和SilverlightTM之类的Web 2.0技术。工具植入代码可被配置成捕捉从客户机角度 来看的性能信息,诸如页面可用性和这些web技术的响应时间之类,并且诸如 通过web服务端点使该数据以各种方式对监视系统可用。

各示例实施例在以下子节中进一步详细描述。

A.用于提供经工具植入(instrumented)的web应用程序的示例系统和方法

在各实施例中,当客户机计算机系统请求web应用程序并且经工具植入的 web应用程序被传递给客户机计算机系统时,提供具有工具植入代码的web应 用程序。响应于客户机请求,可以各种方式将经工具植入的web应用程序提供 给客户机计算机系统。例如,图1示出了根据一示例实施例的数据通信系统100 的框图。如图1所示,系统100包括客户机102、应用服务器104和网络116。 系统100描述如下以示出向客户机传递web应用程序,包括经工具植入的web 应用程序。

客户机102可以是任何类型的计算设备,包括台式计算机(例如,个人计 算机)、移动计算机或计算设备(例如,设备、RIM设备、 个人数字助理(PDA)、膝上型计算机、笔记本计算机等)、智能电话、或其 他类型的计算设备。应用服务器104可包括一个或多个服务器,该服务器可以 是此处描述的或以其他方式使web应用程序能够提供的已知的任何类型的计算 设备。客户机102和应用服务器104通过网络116来通信地耦合。网络116可 包括一个或多个通信链路和/或通信网络,诸如PAN(个域网)、LAN(局域 网)、WAN(广域网)、或网络的组合,诸如因特网。分别将客户机102和应 用服务器104耦合到网络116的第一和第二通信链路122和124可包括任何数 目的通信链路,包括有线和/或无线链路,诸如IEEE 802.11无线LAN(WLAN) 无线链路、微波存取全球互通(Wi-WAX)链路、蜂窝网络链路、无线个域网 (PAN)链路(例如,BluetoothTM链路)、以太网链路、USB链路等。

系统100被配置成使诸如客户机102之类的客户机计算机系统能够从应用 服务器104取回web应用程序。例如,如图1所示,客户机102包括浏览器106。 客户机102处的用户可与浏览器106交互以使浏览器106请求在浏览器106中 加载和执行web应用程序。浏览器106可以是任何类型的web浏览器,诸如由 美国华盛顿州雷蒙德市的微软公司开发的Internet由美国加利福尼 亚州芒廷维尤市的Mozilla公司开发的Mozilla或由加利福尼亚州芒 廷维尤市的谷歌公司开发的Chrome。

例如,浏览器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(可扩展标记语言))代码、文件(例如,ActionScript代码)、SilverlightTM文件(例如,XAML (可扩展应用程序标记语言)代码)、媒体文件等的一个或多个浏览器支持的 计算机语言来编程的应用程序文件的引用。此外,经工具植入的客户机应用程 序代码112包括被配置成监视web应用程序的一个或多个方面的性能的工具植 入代码。这些工具植入代码可根据诸如HTML、JavaScript、AJAX、XAML、 任何.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代码、文件、 SilverlightTM文件等。客户机应用程序代码生成器204可被配置成响 应于来自高速暂存存储器、来自与可请求的不同web应用程序相对应的客户机 应用程序代码模板(例如,用C#编程语言或其他编程语言编码)库、和/或任 何其他方式的web应用程序请求来生成客户机应用程序代码,如相关领域技术 人员已知的。由客户机应用程序代码生成器204生成的客户机应用程序代码在 数据流中经过响应流水线202。

所生成的客户机应用程序代码(以HTML格式)的示例描述如下。该示例 客户机应用程序代码被配置成为客户机102处的用户用来调用媒体播放器 (SilverlightTM)web应用程序的web页面。可在浏览器106中呈现 web页面。客户机应用程序代码的该示例出于说明的目的而提供,并不旨在限 制,且可以许多替换方式来配置:

客户机应用程序代码的以上示例被配置成调用媒体播放器以播放文件 “http://www.webinfocentral.com/VIDEO/JJ2008/WMV/JJ2008_100.wmv”,该文 件是示例Windows视频格式文件。如由客户机应用程序代 码的示例中的“...”所指示,可任选地存在与调用媒体播放器相关的其他参数。 尽管客户机应用程序代码的该示例调用单个应用程序,但是所生成的客户机应 用程序代码可调用多个应用程序。

图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应用程序(例如,功能或文件),包括通过要工具植入的文件 扩展或类型(例如,文件、SilverlightTM文件、其他 媒体文件类型、.wmv(例如,视频文件)扩展、.mp3扩展(例如,音频文件) 等)。指定的web应用程序可在扫描策略配置指示402时指示,扫描策略配置 指示402被传送给应用程序扫描模块602。当应用程序工具植入模块206接收 客户机应用程序代码406时,应用程序扫描模块602可根据由扫描策略配置指 示402指示的扫描策略来扫描客户机应用程序代码406以确定是否要工具植入 客户机应用程序代码406。

例如,扫描策略配置指示402可配置应用程序扫描模块602以截取调用 SilverlightTM以供工具植入的web应用程序。在这个实施例的示例 中,应用程序扫描模块602可被配置成对接收到的客户机应用程序代码扫描单 词“Silverlight”,和/或可被以其他方式配置成检测SilverlightTM web 应用程序功能。参考以上所示的示例客户机应用程序代码(其调用SilverlightTM作为媒体播放器),如果该示例客户机应用程序代码由应用程序工 具植入模块206接收,则应用程序扫描模块602可在客户机应用程序代码中检 测单词“Silverlight”,且因此截取客户机应用程序代码以供工具植入。如果应 用程序扫描模块602确定在扫描期间接收到的客户机应用程序代码不包括根据 所配置的扫描策略来触发工具植入的内容,则允许接收到的客户机应用程序代 码继续在响应流水线202中处理以提供给客户机102而不进行工具植入。

在步骤306,工具植入代码被插入到客户机应用程序代码中以生成经工具 植入的客户机应用程序代码。在一实施例中,如果应用程序扫描模块602截取 在流经响应流水线202的响应数据流中的客户机应用程序代码(步骤304)并 确定要工具植入所截取的客户机应用代码,则工具植入插装模块604被配置成 将工具植入代码插入到所截取的客户机应用程序代码中,以生成经工具植入的 响应数据流。在一实施例中,工具植入插装模块604可被配置成分析所截取的 客户机应用程序代码以确定要监视的客户机应用程序代码的一个或多个功能。 工具植入插装模块604可将所插入的工具植入代码配置成监视想要监视的客户 机应用程序代码的一个或多个功能。所插入的工具植入代码被配置成监视与所 截取的客户机应用程序代码相关的性能方面。如图4所示,应用程序工具植入 模块206可生成经工具植入的客户机应用程序代码112,该经工具植入的客户 机应用程序代码是接收到的客户机应用程序代码406的经工具植入版本。

参考以上描述的所生成的客户机应用程序代码的示例,可插入工具植入代 码以监视示例客户机应用程序代码的性能方面。例如,可被插入到以上描述的 所生成的客户机应用程序代码的示例中的工具植入代码的示例在下文中示出 (为了易于说明至少部分地作为伪码来提供)。

该示例工具植入代码是被配置成在通过调用具有“operationName”和 “counterName”参数的“makeCall”功能来调入时提供时间或性能计数器值的 javascript脚本。该脚本可被用于各种目的,诸如确定使用客户机应用程序代码 的以上示例中的SilverlightTM媒体播放器来播放所引用的媒体文件 所花费的时间量。当被调用时,该脚本对远程管理服务器(例如,管理服务器 208)进行调入(“_webService”),从而提供“operationName”、“counterName” 和性能计数器值。可在管理服务器处使用该性能信息以确定何时出现对应的功 能。

该工具植入代码可被插入到所生成的客户机应用程序代码中,并且所生成 的客户机应用程序代码可进一步由工具植入插装模块604修改以在浏览器调用 客户机应用程序代码时的各个时间调用所插入的工具植入代码。例如,包括以 上所示的示例工具植入代码的以上所示的示例客户机应用程序代码的示例工 具植入形式在以下示出。经工具植入的客户机应用程序代码的该示例出于说明 的目的而提供,并不旨在限制,且可以各种替换方式来配置:

如上所示,先前描述的javascript脚本被插入到示例客户机应用程序代码的标题 部分中。此外,在四个代码位置处修改示例客户机应用程序代码以使标题脚本 在四个位置中的每一个位置处被调用。

例如,示例客户机应用程序代码被配置成在由示例客户机应用程序代码所 表示的页面开始加载时调用标题部分,如所插入的代码<script  type=″text/javascript″>makeCall(″StartPerfCounter″,″Page Load″)所指示的。 接着,使媒体播放器在打开媒体文件(“.wmv”文件)时调用标题脚本,如由 所插入的代码“mediaOpened”:OnClientMediaOpened所指示的。接着,使媒体播 放器在关闭媒体文件时调用标题脚本,如由所插入的代码 “mediaEnded”:OnClientMediaEnded所指示的。此外,使媒体播放器在由示例客 户机应用程序代码所表示的页面完成加载时调用标题脚本,如由所插入的代码 <script type=″text/javascript″>makeCall(″EndPerfCounter″,″Page Load″)</script> 所指示的。

以此方式,在该示例中,标题脚本可被用于针对由示例客户机应用程序代 码所表示的页面捕捉指示开始和结束加载时间以及加载持续时间(通过从结束 加载时间或计数器值中减去开始加载时间或计算器值)的性能信息。此外,标 题脚本可被用于针对媒体文件(“.wmv”文件)捕捉指示开始和结束媒体播放 时间以及播放持续时间(通过从结束播放时间或计数器值中减去开始播放时间 或计数器值)的性能信息。

由此,工具植入插装模块604可被配置成将工具植入代码插入到一个或多 个位置中的所截取的客户机应用程序代码中以使一个或多个脚本/代码部分能 在经工具植入的web应用程序被呈现在浏览器中时调用。与经工具植入的web 应用程序相关的任何一个或多个性能方面可由任何数目的所插入的工具植入 代码部分来监视。例如,可监视网络相关的方面,包括确定开始和结束加载时 间以及用于加载经工具植入的web应用程序的持续时间。可监视浏览器相关的 方面,包括媒体文件播放开始和结束时间以及用于播放所引用的媒体文件的持 续时间等。此外,工具植入代码可被配置成收集关于客户机计算机系统和/或浏 览器的信息,包括客户机处的浏览器的类型、浏览器的版本、客户机计算机类 型、客户机计算机位置、客户机计算机语言、客户机计算机操作系统类型/版本 等。

在一实施例中,应用程序工具植入模块206可被配置成基于监视策略来工 具植入客户机应用程序代码406。在一实施例中,管理服务器208可根据监视 策略配置指示404来配置应用程序工具植入模块404的监视策略。例如,如图 5和6所示,工具植入插装模块604可被配置成根据由监视策略配置模块504 生成的监视策略配置指示404来修改所截取的客户机应用程序代码406。

例如,管理服务器208处的用户(例如,操作管理员或系统管理员)可与 用户接口(例如,图形用户接口(GUI)、键盘、定点设备等)交互以输入对 所截取的web应用程序的监视策略。例如,可允许用户以任何方式指定要施加 至特定web应用程序(例如,功能或文件)的特定工具植入代码,包括通过要 工具植入的文件扩展或类型(例如,文件、SilverlightTM文件、其他媒体文件类型、.wmv(Windows视频)扩展、.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,这些阶 段包括第一至第n个阶段704a-704n。阶段704a-704n各自可被配置成执行针对 生成客户机应用程序代码406的对应功能,诸如认证(例如,用于安全通信的 认证浏览器106)、授权(确认对请求110的访问)、生成对应于所请求的web 应用程序的客户机应用程序代码406等。例如,在一实施例中,客户机应用程 序代码生成器204可以是第一至第n个阶段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使用的示例自定义用户控件 在下文中示出。

如上所示,该自定义用户控件调用PerfFilter(Response.Filter)函数,该函数被配 置成在客户机应用程序代码406中扫描指示客户机应用程序代码要工具植入的 一个或多个特定属性。该示例自定义用户控件出于说明的目的而提供,并不旨 在限制。自定义用户控件可以任意数目的方式来配置,如相关领域技术人员根 据此处的教义应当理解的。

此外,修改代码的示例在下文中示出,该修改代码可被包括在响应过滤器 706的工具植入插装模块604中,从而如果由以上所示的示例自定义用户控件 指示用于工具植入则修改客户机应用程序代码406以插入工具植入代码。

如上所示,该修改代码调用可被配置成将工具植入代码插入到客户机应用程序 代码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中,诸如第 n个HTTP模块804n。例如,HTTP模块804n可被配置成截取客户机应用程序 代码406(例如,图3的步骤304),并且将工具植入代码插入到客户机应用 程序代码406中以生成经工具植入的客户机应用程序代码112(例如,图3的 步骤306)。

例如,HTTP模块804n可被配置成实现IHttpModule接口,该接口位于 System.Web命名空间中。.NET框架的IHttpModule接口向实现类提 供HTTP模块初始化和处理事件。<httpModules>配置部分处理器在web应用程 序内配置HTTP模块,并且可在计算机、站点、或应用程序级处声明。为了注 入工具植入代码,HTTP模块804n可使用IHttpModule界面来生成。IHttpModule 界面有具有以下签名的两种方法。

void Init(HttpApplication);

void Dispose();

在这个实施例中,应用程序扫描模块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(公共语言运行时)剖析器技术,诸如 VisualIntellitrace技术,以修改响应处理器(例如,使用 ProcessRequest框架实现)。该技术可在web应用程序级或页面级应用,而不 使用自定义用户控件。相反,可使用一个或多个配置文件来描述关于要插入到 客户机应用程序代码中的工具植入代码的扫描策略。

由此,在各实施例中,web应用程序可由响应流水线202以各种方式来工 具植入,包括扫描到特定web应用程序页面来工具植入、工具植入所有web应 用程序页面、或工具植入满足特定简档的web应用程序页面。例如,如上所述, 响应流水线202可使用HTTP过滤器(响应过滤器706),该HTTP过滤器工 具植入特定web应用程序页面(例如,包括自定义用户控件的页面)、工具植 入所有所请求的web应用程序的HTTP模块(例如,HTTP模块804n)、或诸 如VisualIntellitrace之类的剖析器技术。在其他实施例中, 响应流水线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计算的作为所捕捉性能信息的度量的 一些示例包括:在SilverlightTM web应用程序示例中,计算使用 Sys.Application.init()初始化的SilverlightTM框架的度量;在基于 AJAX的web应用程序示例中,计算AJAX脚本排队加载时间的度量、和/或使 用Sys.Application.notifyScriptLoaded()来计算AJAX脚本加载时间的度量;使 用其事件计算Sys.Application加载/卸载的度量;计算Sys.Component初始化的 度量;以及计算Sys.Component.$create的度量。在另一示例中,性能信息捕捉 模块1202可捕捉由Error.create  为脚本创建的诸如 Sys.SCriptLoadFailedException之类的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的类似的方式和/或以任何其他方式聚集所捕捉的性能信息1002。 例如,在所聚集的数据被呈现给诸如系统中心操作管理器(SCOM)管理组之 类的一个或多个用户之前,管理服务器208可生成在一段时间内针对web应用 程序请求的运行计数器的报告,诸如平均响应时间之类。通过提供所捕捉的性 能信息1002,允许用户确定web应用程序是否对客户机计算机可用、用于提供 web应用程序的响应时间、以及从客户机计算机处的最终用户的观点来看web 应用程序执行得如何好。

管理服务器208的性能数据接收模块506可包括用于从客户机接收所捕捉 的性能信息1002的一个或多个接口。例如,在以上所述的一些示例中,可从 客户机应用代码调用“makeCall(operationName,counterName)”功能以将时间 或性能计数器值提供给管理服务器208。可使用不同的operationName和 counterName参数以不同的方式来调用makeCall功能,该makeCall功能可由性 能数据接收模块506的对应接口来处理。

例如,可由性能数据接收模块506实现以接收所捕捉的性能信息的示例界 面代码示出如下:

以上示例接口代码使用不同的operationName和counterName参数来提供 与makeCall函数的四个可能调用相对应的四个接口,并且包括对应于例外功能 的附加接口。客户机102处的经工具植入的客户机应用程序代码112可使用 “StartPerfCounter”和“Page Load”作为operationName和counterName参数 来调用makeCall函数。在这种情况下,性能计算器值可从对应于开始web应 用程序页面加载的经工具植入的客户机应用程序代码112接收。“objecteId” 和“instanceId”参数还可从经工具植入的客户机应用程序代码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.0应用程序本质上包括web应用程序本身内或 来自其他源的动态内容,因为web应用程序组合来自其他源的数据和内容以创 建信息的复杂混搭。在其中开发者不得不注入特定工具植入(因为开发者是知 道web应用程序内容的那个人)的方法中,每次web应用程序内容改变时,开 发者可不得不改变工具植入代码和/或管理服务器,其可以不是不可行的。在一 实施例中,使用试探法,可确定用于web应用程序的适当类型的工具植入,并 且web应用程序在其通过响应流水线可相应地修改。这种试探法可确定什么类 型的内容和函数需要测量并注入对应的工具植入代码而无需开发者介入。

规模:最后一英里或最终用户监视通常是其中收集所有用户数据的捕捉全 部努力,其使信息规模处理从服务器负荷和分析的观点来看都是很难的。其他 解决方案也可以捕捉原始形式的数据,这也增加服务器负荷并需要聚集水平变 得有意义。在各实施例中,因为可控制监视什么和何时监视的配置,所以信息 的智能采样可被用来获取各种各样的数据,以供性能和可用性监视、同时减小 服务器负荷并使复杂分析的需要最小化。例如,可执行与来自一种类别的客户 机(例如,特定版本的Mozilla浏览器)的一组采样代表性客户机相关 联的所捕捉的数据(例如,以免淹没管理系统)。聚集可在客户机上执行以使 传送给管理服务器的性能数据已经聚集并准备好被消费。在一实施例中,web 服务还可在使其对监视/报告系统可用之前执行附加聚集。

与客户机配置相关:期望执行对来自最终用户体验的数据的分析以使该数 据按照设备类型、客户机版本、位置、内容等来群集。该信息在应用服务器上 可用,但不必在管理服务器上是可用的。由此,解决方案通常涉及组合来自多 个源的数据以使其有意义。监视数据可提供性能和可用性度量,但可能需要访 问IIS日志以获得客户机浏览器类型和客户机位置。由此,需要复杂的相关以 产生可操作的数据。在各实施例中,所插入的工具植入代码可包括捕捉关于客 户机浏览器、客户机场所、和/或客户机语言的数据,该数据可与所捕捉的性能 信息一起被递送到管理服务器。由此,执行群集数据组变得更容易。通过将所 有所捕捉的数据提供给单个位置,可更快地执行分析,并且可缩减性能和可用 性的问题。

动态补救:Web 2.0应用程序允许开发者通过设计适于由客户机使用的设 备或浏览器的内容来个性化传递给客户机的内容。开发者还可基于网络连接来 调节内容以考虑客户机访问更慢的连接上的数据。这通常用关于如何显示内容 的硬编码规则来实现并且涉及开发者添加适当的工具植入以实现这一点。在各 实施例中,通过添加适当的工具植入代码来确定在客户机实际执行web应用程 序时的性能信息,可控制应用程序随后如何基于这些值来执行或请求新的内 容。例如,在当前执行内容的性能被确定为低时,可自动地插入工具植入代码 以停止加载内容。此外,可插入工具植入代码以改变在浏览器处查看的内容, 诸如在查看页面上视频的性能被认为是慢时使低保真广告显示。以此方式,后 续请求不会继续降低性能和可用性。

III.示例计算设备实施例

浏览器106、响应流水线108、响应流水线202、客户机应用程序代码生成 器204、应用程序工具植入模块206、扫描策略配置模块502、监视策略配置模 块504、性能数据接收模块506、应用程序扫描模块602、工具植入插装模块 604、HTTP流水线702、第一至第n阶段704a-704n、响应过滤器706、HTTP 流水线802、第一至第nHTTP模块804a-804n、HTTP处理器806、响应流水线 902和剖析器904可用硬件、软件、固件、或其任何组合来实现。例如,浏览 器106、响应流水线108、响应流水线202、客户机应用程序代码生成器204、 应用程序工具植入模块206、扫描策略配置模块502、监视策略配置模块504、 性能数据接收模块506、应用程序扫描模块602、工具植入插装模块604、HTTP 流水线702、第一至第n阶段704a-704n、响应过滤器706、HTTP流水线802、 第一至第nHTTP模块804a-804n、HTTP处理器806、响应流水线902、和/或 剖析器904可被实现为被配置在一个或多个处理器中执行的计算机程序代码。 替换地,浏览器106、响应流水线108、响应流水线202、客户机应用程序代码 生成器204、应用程序工具植入模块206、扫描策略配置模块502、监视策略配 置模块504、性能数据接收模块506、应用程序扫描模块602、工具植入插装模 块604、HTTP流水线702、第一至第n阶段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、以及用于读或写诸如 CD ROM、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、第一至第n阶段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、 硬盘驱动器、软盘、CD ROM、DVD ROM、zip磁盘、磁带、磁存储设备、光 存储设备、MEM(存储器)、基于纳米技术的存储设备等的存储设备。

VI.结论

尽管上文描述了本发明的各种实施例,但是应该理解,它们只是作为示例 来呈现的,而不作为限制。相关领域的技术人员将理解,在不偏离如所附权利 要求书所定义的本发明的精神和范围的情况下,可以在形式和细节方面进行各 种修改。因此,本发明的宽度和范围不应该受到上述示例性实施例中的任何一 个的限制,而只应根据以下权利要求和它们的等效内容来定义。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号