65.9K
CodeProject 正在变化。 阅读更多。
Home

最大化 ASP.NET AJAX 数据网格控件的性能和用户体验

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2010年1月4日

CPOL

10分钟阅读

viewsIcon

20816

深入了解 Infragistics WebDataGrid 的 UI 性能,看看其行业领先的闪电般的速度是如何通过经过验证的 ASP.NET AJAX 性能测量实践实现的。

如今,每个人都在谈论用户体验——它是新经济中的关键差异化因素。当大多数人谈论他们应用程序的用户体验时,通常会集中在应用程序的审美设计上,虽然审美设计很重要,但它仅仅是整体用户体验的一个方面。人们常常忽略了应用程序用户体验中一个可能对应用程序整体体验产生与应用程序美学同等重要影响的领域——应用程序性能!

Infragistics 非常重视您应用程序的用户体验,这意味着不仅要帮助您提供世界一流的视觉体验,还要关注您应用程序中用户体验的性能。在本文中,您将了解 Infragistics 如何处理 Infragistics WebDataGrid™ for ASP.NET AJAX 的架构和测试,以及它如何提供市场上最快的网格用户体验。

立即下载 NetAdvantage® for Web Client: ASP.NET AJAX 控件的免费 Infragistics WebDataGrid 试用版,亲身体验其闪电般的速度。

性能和用户体验

为什么性能在整体用户体验中如此重要?

  • 更高的客户满意度
  • 提高最终用户生产力
  • 硬件和带宽方面的资源效率

客户不希望,也不应该被应用程序开发细节所打扰;他们只关心使用应用程序时的体验。他们想要一个“合乎逻辑”的应用程序,这意味着一个提供直观用户界面的应用程序,并且性能符合客户的预期——换句话说——他们不应该注意到或思考它的性能。当您选择 Infragistics WebDataGrid 时,您将获得一个控件,它允许您为最终用户提供这种“合乎逻辑”的体验,包括市场上最佳的性能。而且,这并不是以实现自定义 ORM(对象关系映射)解决方案或某些自定义数据提供程序为代价的——这是开箱即用的数据绑定。无需更改您的数据访问策略。

卓越性能的最佳实践

在我们的产品生命周期中,随着新功能的添加或用例的更新,我们会在不同阶段测试我们的 UI 控件。我们在性能测试的规划、配置、实施和审查中遵循一系列最佳实践,以确保控件在正确的情况下得到测试,并且我们生成的结果是准确的。

  • 规划。 在规划阶段,我们确定测试对象(例如,之前的版本、竞争对手等),并考虑特定平台上的性能测试可用的选项和工具。我们还确定要测试的具体场景,以及如何创建使用尽可能相似配置的竞争性测试。
  • 配置。 在此阶段,我们配置一个尽可能模拟客户使用情况的测试环境,该环境基于描述产品需求的场景。
  • 实施。 我们实施测试计划中概述的测试,并多次执行它们以生成性能统计数据。
  • 审查。 在审查期间,我们评估测试结果的一致性,寻找可能表明测试环境存在影响测试结果问题的异常情况。

基于上述最佳实践,我们对产品的每个夜间构建版本实施和执行自动化性能测试。在测试过程中,性能结果会自动存储并生成报告。这使开发团队能够持续监控整个开发过程中的性能。

测试 WebDataGrid

对于 NetAdvantage® for Web Client: ASP.NET,我们的性能测试大部分集中在 WebDataGrid 上,主要是因为它在许多数据密集型应用程序中使用,并且包含了大量功能。由于我们经常与那些应用程序需要数据网格控件来加载大量数据并以非常高的刷新率运行的客户交流,因此在设定性能目标和设计测试时,我们能够考虑到这些真实世界的场景。为了开始测试 WebDataGrid,我们创建了以下测试环境来执行性能测试。

  • 两台物理机(非虚拟机),一台服务器和一台客户端——这将模拟真实场景。
  • 服务器和客户端均运行 Microsoft Windows Server® 2003 Standard Edition SP2,CPU 2.13GHz,4 GB RAM。
  • 服务器运行 Microsoft SQL Server® 2005 作为后端数据存储。我们使用了其默认设置。
  • 服务器还运行 IIS 6.0。我们使用了其默认设置。
  • 客户端运行 Internet Explorer® 7 作为其默认浏览器。
  • 服务器和客户端都使用相同的网络交换机,该交换机与公司其他网络流量隔离,以帮助我们专注于网格的性能,而不受其他可能超出我们控制范围的性能抑制因素的影响。
  • 服务器和客户端都配置有静态 IP 地址。
  • 服务器和客户端均禁用 Windows Update。

为了运行测试,我们编写了代码,将所有测试场景运行了 100 次。场景包括模拟用户单击到与 SQL Server 2005 的完整 CRUD(创建、读取、更新和删除)操作。每次运行都使用了我们最新的夜间构建版本和可用的竞争对手控件的最新构建版本。为了确定测试结果,我们记录了每次操作的时间,然后计算了差异。

性能结果

我们使用我们和竞争对手网格的最新公共位开发了测试应用程序。这些测试应用程序旨在最大程度地确保我们进行“苹果对苹果”的比较,并模拟银行、呼叫中心、保险公司等中的真实场景。在此比较中,我们使用了我们在竞争对手网站上找到的所有公开信息。

网格的主要场景确定了以下区域对于使用网格进行数据显示和编辑的整体用户体验至关重要:

  • 平面数据绑定
  • 分页
  • 排序(字符串、数字)
  • 筛选(字符串、数字)

在本文中,除非另有说明,我们将展示使用包含 10 列(包含所有主要数据类型)和 300,000 行数据的数据集执行这些场景的测试结果。

在所有场景中,我们都使用 LinqDataSource,因为它只从 SQL Server 获取所需数据,这比从 SQL 数据表中提取所有数据并在 SQL Server 外部获取所需数据更快。SQL Server 会为您处理。

在所有场景中,我们都使用带有分页(每页 10 行)和每列筛选的页面。我们将测试和结果分为两大组:

  • ;浏览器中的单用户操作
  • 负载测试

浏览器中的单用户操作

这些场景包括完整的周期——浏览器渲染(Internet Explorer 7)和相应的服务器响应时间。这些测试更紧密地代表了客户在使用所测试数据网格时的体验。

  Infragistics WebDataGrid 竞争对手 I 竞争对手 II
分页 174 210 (慢 21%) 447 (慢 157%)

数字排序

535 561 (慢 4%) 800 (慢 49%)

字符串排序

549 576 (慢 4%) 828 (慢 50%)

数字筛选

172 193 (慢 12%) 491 (慢 185%)
字符串筛选 191 223 (慢 16%) 515 (慢 169%)
表 1。Infragistics WebDataGrid 和竞争性 ASP.NET AJAX 数据网格在浏览器中进行数次单用户操作的时间(毫秒)。

那么,我们是如何在 WebDataGrid 中实现如此惊人的性能的呢?简单来说——这是因为 WebDataGrid 基于其坚固的 Aikido™ 框架架构。此外,我们的负载大小比竞争对手小。

什么是“负载大小”?直观定义:服务器(IIS)和客户端(浏览器)之间交换的数据量。

 

为什么更小的负载大小对性能更好?较小的数据交换将被浏览器更快地处理和渲染。另外,如果您在客户端和服务器之间的带宽有限,这将是一个巨大的好处——因为在网络上传输的数据量更少。

使用 Fiddler 2,我们监控了客户端和服务器之间交换的数据。在下表中,您可以看到每次操作发送和接收字节数的摘要。

  Infragistics WebDataGrid 竞争对手 I 竞争对手 II
初始请求 208,242 268,168 309,064
数字筛选 30,062 43,135 22,554
取消数字筛选 30,238 43,100 21,943
分页 30,491 43,435 26,904
数字排序 32,208 43,381 23,914
总计 331,241 459,219 (多 39%) 404,379 (多 22%)
表 2。Infragistics WebDataGrid 和竞争性 ASP.NET AJAX 数据网格在浏览器中进行代表性单用户操作的负载大小(字节)。

负载测试

当我们看到我们在单用户方面的优势有多大时,我们决定看看当我们加载我们和竞争对手的网格时会发生什么。我们对 WebDataGrid 及其竞争对手重复了以下步骤:

  • 我们使用了与上述相同的环境和页面进行负载测试。我们在客户端 PC 上使用了商业 Web 负载工具来模拟负载,但您也可以使用许多免费的 Web 负载测试工具之一来重复此负载测试。
  • 我们的测试场景包括以下模拟操作:
    • 初始请求
    • 数字筛选(“小于”)
    • 清除数字筛选
    • 分页(“下一页”)
    • 分页(“上一页”)
    • 数字排序
  • 我们在所有操作之间模拟了 2 秒的“思考时间”间隔。
  • 我们每 15 秒增加 2 个用户,直到达到 50 个用户。
  • 在增加负载后,负载工具继续运行场景 1 小时。

多次重复所有负载测试,以消除环境瞬时故障影响结果的可能性。每次测试运行后都会重启服务器和客户端 PC。

  Infragistics WebDataGrid 竞争对手 I 竞争对手 II
平均吞吐量* 584,873 884,022 (多 51%) N/A
平均每秒命中数** 55.34 49.01 (少 15%) N/A
表 3。在模拟 50 个用户 1 小时的负载下的负载测试结果,针对 Infragistics WebDataGrid 和一个竞争性 ASP.NET AJAX 数据网格(竞争对手 II 因内存不足错误无法完成负载测试)。

*- 负载测试期间 Web 服务器的吞吐量(字节/秒)量,其中吞吐量表示用户在任何给定秒内从服务器接收到的数据量。

**- 负载测试期间模拟用户向 Web 服务器发出的命中次数(每秒)。

如表 3 的第一行所示,Infragistics WebDataGrid 的平均吞吐量比“竞争对手 I”**好 51%**。这直接归功于我们出色的负载大小。

在表 3 的第二行中,您可以看到,通过使用 Infragistics WebDataGrid,您的用户的生产力每单位时间可提高约 **15%**。

因此,从负载测试中可以得出结论,如果您使用 Infragistics WebDataGrid,您的用户生产力将提高 **15%**。

最后,您不应该忘记,这些结果是在两台 PC 连接到同一个网络交换机的环境中实现的。在现实生活中,当客户端和服务器相距数千英里,且网络带宽有限时,由于 WebDataGrid 惊人的负载大小,这个百分比将会增加。这可能带来每周数万美元,每年可能数百万美元的节省。

摘要

您可以看到,通过采用稳健的性能测试框架,您可以进一步提高实际节省的时间和感知体验的价值。我们通过使用稳健的 AJAX 架构基础和紧凑的负载来实现这一点。我们还遵循严格的最佳实践方法来设置和运行测试——每个测试都在 Infragistics 的最新版本和我们竞争对手的最新服务版本上执行。使用 Infragistics WebDataGrid,您的应用程序不仅会看起来更好、更容易使用,而且性能将超越当今市场上任何其他产品。这会带来更高的最终用户满意度,以及您部署的应用程序的最终用户生产力方面实实在在节省的资金。

立即试用 Infragistics WebDataGrid,立即下载NetAdvantage for Web Client: ASP.NET AJAX 控件的免费试用版。亲眼见证它们闪电般的速度!

infragistics-logo-stylized.jpg

Copyright © 1996-2009 Infragistics, Inc. 保留所有权利。Infragistics、Infragistics 徽标和 NetAdvantage 是 Infragistics, Inc. 的注册商标。Aikido 和 WebDataGrid 是 Infragistics, Inc. 的商标。所有其他商标或注册商标均为其各自所有者的财产。

© . All rights reserved.