免费下载!由 O’Reilly 出版的《NGINX 完全指南》中文版已正式上线 了解详情
写点什么

成功进行微软 Silverlight 应用程序负载测试的三项建议

  • 2012-01-25
  • 本文字数:3776 字

    阅读完需:约 12 分钟

微软 Silverlight 是一项功能强大的技术,用于在 web 上创建和发布富因特网应用程序以及多媒体信息。Silverlight 的功能类似于 Adobe Flash,它将多媒体图像、动画以及交互整合到单一的运行环境中。Silverlight 最初致力于提供富媒体体验,让设计师和开发人员能够为他们的站点添加丰富的交互行为、媒体和动画。其后的 Silverlight 版本增加了许多对业务系统非常重要的新特性。

对于在企业级环境中使用 web 形式业务系统的组织来说,世界已经发生了巨大变化。基于多层全局分布式架构、SOA 以及其它新技术的现代应用程序变得越来越复杂,这导致企业开发、测试和管理 web 形式业务应用程序的方式也发生了很大变化。像 Silverlight 之类的富因特网应用程序(RIA)技术能使我们创建的浏览器应用程序和服务具备更加快速而迷人的交互体验。使用这些技术开发扩展应用程序非常吸引人,而这些 RIA 技术同时给需要在有限时间和低成本情况下部署应用程序功能特性的企业组织带来新的挑战。

为了做好准备,企业组织必须调整他们的测试方法。考虑到把新技术部署到因特网或内部网应用程序中的运行方式,在选用 Silverlight 应用程序测试方法时应该小心谨慎。在关键的应用程序平台上开发下一代应用程序时,你必须确信应用系统表现良好。负载测试是正式启用 web 应用程序前最后的关键任务之一,通常是在紧缩的时间限制和其他压力之下完成。在讨论能使你成功进行 Silverlight 应用程序负载测试的建议之前,先让我们来看一下 Silverlight 应用程序有多么独特。

Silverlight 应用程序和你之前接触过的应用程序可能有些不同。对于经典 HTML Web 应用程序,服务器会负责所有的处理,进一步说,即 HTML 渲染要求整个页面刷新。Silverlight 应用程序的不同之处在于内容的分发不需要重新加载页面,服务器会不断地异步更新应用程序。正因为如此,IIS 服务器负载显示出了很不一样的评测数据。

在进行 web 应用程序性能测试时,所有测试人员都知道测量事务响应时间的重要性。而 Silverlight 技术会导致后台产生的浏览器到服务器的 HTTP 请求次数不断增长。这种传输量的增长会对性能产生深远的影响。虽然用户可能不会意识到浏览器和远程服务器之间的双向通信,但如果因为负载增加而导致应用程序运行缓慢或抛出异常,用户必然会知道性能出现了问题。知道部署的可扩展性制约是很关键的。

使用革新的 RIA 技术,比如 Silverlight,在试图模拟实际负载时会碰到新的挑战。如果你计划使用这项新技术开发或部署应用程序,要想成功战胜这些挑战需要思考负载测试的新方法。

让我们来看看进行 Silverlight 应用程序负载测试的新挑战,以及提高应用程序性能和改善用户体验的三项建议。

建议 1:确保你能够支持 Silverlight 通信协议

Silverlight 应用程序能够使用多种协议和服务器通信。基于 WCF(Windows Communication Foundation),最常用的协议是使用经典 XML 或二进制 XML 的 REST 和 SOAP。为了精确模拟用户,你的负载测试工具必须能够支持 Silverlight 所使用的多种协议,因为这样你才能参数化请求、从响应中提取数据并验证响应。如果缺少这项功能,你的工具就不能根据实际用户提供真实的测试设计,导致测试的结果几乎没有价值。

REST 协议

REST 定义了一组架构原则,通过它你可以根据一些设计规则来设计 web 服务。这些规则隐式使用了各种 HTTP 动词,比如 GET、POST、PUT 和 DELETE。这意味着你的测试工具必须处理所有这些动词,以全面支持使用了 REST 的 web 服务。否则一些请求就无法重现,导致实际用户不能成功使用。

SOAP 协议

SOAP 是一个基于 XML 的简单协议,用于让应用程序在 HTTP 之上交换数据。测试人员可以以两种方式使用该协议来处理应用程序。第一种方式是使用 XML 操作,第二种方式是使用具有专门 SOAP 支持的负载测试工具。

相对于简单 XML 操作,有专门 SOAP 支持的测试工具具有以下优势:

  • 它能够处理 WS-Security 之类的先进功能特性或附件。
  • 它能在不需要记录来自现有客户端的流量的情况下设计性能测试用例。若没有辅助程序,从无到有设计一次 SOAP 请求是非常复杂的。而当你用包含了 web 服务正规描述的 WSDL 自动产生请求时,不仅生产力提高了,同时能保证请求的格式是正确的。

经典 XML

XML 是一种基于文本的格式,用于以机器可读的方式对文档进行编码。使用正规字符串操作很容易处理基本 XML 文档,而对复杂的文档进行数据抽取和验证则会是一项挑战。XPath 是用于在 XML 文档中对元素和属性进行导航的语言,它可用于在文档中精确定位数据。允许使用 XPath 的工具就确保你能使用任何 XML 文档,不管文档有多复杂。

二进制 XML

二进制 XML(MC-NBFX) 及其子协议,比如二进制 SOAP(MC-NBFS),以二进制格式对 XML 文档进行编码和解码,以减少处理时间,降低网络带宽。

许多负载测试工具都依靠 HTTP 传输数据,而不支持二进制协议。

因此,它们没有足够深入地分析客户端和服务端之间交换了什么数据。请确保你的负载测试工具对二进制 XML 进行解码,因为这是参数化请求、提取响应数据以及验证响应时所必须的。

建议 2:自动处理应用程序标识符

Silverlight 应用程序使用标识符做内部处理。有些标识符是特定用于某个应用程序的,其他的则通用于所有 Silverlight 应用程序。这些标识符被当作请求的参数,并在响应中使用,两者协同工作。例如,服务器响应某个请求并返回一个标识符,这个标识符会被作为后续请求的标识符发送。

每次客户端和服务端通信时,这些标识符会发生变化。按照原来的方式再现已记录的会话会因为错误的标识符值而导致错误产生。你必须在运行时为这些参数提取和重新注入恰当的值。因为标识符可以在很多请求中使用,手动处理它们意味着巨大的工作量。

为了避免痛苦地手动配置这些参数,需要确保你的负载测试工具能够自动检测和处理和所有 Silverlight 应用程序相关的标识符,并提供相关功能让你能够声明自定义的相关性规则,以自动处理自定义标识符。

建议 3:监测服务端

如果你的测试正在运行,而应用程序响应缓慢或者抛出异常,其根本原因会是什么呢?在进行负载测试时监测服务器能帮助你在服务器架构上找到这些问题的原因。

下面的例子是一个典型的性能计数器。该计数器用于监测某个典型微软应用程序的每个组件:

  • Windows: Processor\% Processor Time, Memory\Available MBytes, System\Processor Queue Length, PhysicalDisk\% Idle Time, Network Interface\Output Queue Length…
  • IIS: HTTP Service Request Queues\RejectionRate, Web Service Cache\File Cache Hits %, HTTP Service Url Groups\CurrentConnections…
  • ASP.Net: ASP.NET\Requests Queued, ASP.NET\Requests Rejected, .NET CLR Exceptions\#Exceps Thrown / sec, .NET CLR Data\ SqlClient: Current # pooled connections…
  • SQLServer: General Statistics\Logins/sec, SQL Statistics\ SQL Compilations/sec, Locks\Number of Deadlocks/sec…

我们需要什么样的计数器?什么样的值是糟糕的?除非你是一个系统专家,否则,你需要使用工具来自动选择合适的计数器,并根据预设的临界值设置警告。理想情况下,该工具不应只是能够根据行业标准设置计数器和临界值,而同时应该能够根据你的特定要求提供自定义设置。

结果相关性对有效结果分析很重要。利用该功能,对基础架构性能计数器提供的应用程序响应次数和错误数据进行相关性分析,你可以确定导致性能问题的原因。例如,如果你看到池容量占用率达到 100% 的警告,而同时发现响应次数陡增,你就找到了响应时间问题的根源:池的容量大小还是默认设置的值,并没有发生改变,所以应该上调容量限制。使用相同的工具分析你用于产生性能测试的监测数据,能保证在寻找性能问题的根源时更快速地找到相关性事件,最终提高工作效率。

随着越来越多的公司在因特网上发布关键型应用程序,在正式上线之前对这些 web 应用程序在不同负载下的性能测试已经变得愈发重要。因为 Silverlight 提供了扩展的能力,以帮助开发支持企业组织需求、功能强大的新型应用程序,该技术不同于其它技术,所以需要有新的负载测试方法。想要搞清楚的你应用程序在 Silverlight 生产环境中如何能够正常运行,以及如何优化它们以提高性能,你不能只是模拟单个用户的活动,还要能够模拟多个用户同时进行的活动。通过遵循本文中的建议,企业组织能够快速调整他们的测试方法论以应对 Silverlight 应用程序,比以前更加容易和快速地进入市场,提高生产力并节约成本。

关于作者

Rebecca Clinard 是来自 Neotys 的高级性能工程师,负责为 web 应用程序提供负载测试软件。在此之前,Clinard 在 Bowstreet、Fidelity Investments、Bottomline Technologies 以及 Timberland 公司担当 web 应用程序性能工程师。她的经验横跨零售、金融服务、保险以及制造业。Clinard 的专业技能在于根据行业标准创建实际的负载测试,再现生产环境性能场景,以及对多层部署进行性能调试。
Clinard 从 2001 年开始组织和领导性能测试。她毕业于新罕布什尔大学,获得理学士学位,并持有伍斯特理工学院 UNIX 认证。

查看英文原文: Three Tips to Successfully Load Test Microsoft Silverlight Applications


感谢侯伯薇对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012-01-25 00:002127

评论

发布
暂无评论
发现更多内容

手摸手带你完成智慧路灯构建及避坑【华为云至简致远】

神奇视野

Python 科技

NFT盲盒挖矿DAO智能合约dapp系统开发详情

开发微hkkf5566

一次做数据报表的踩坑经历,让我领略了数据同步增量和全量的区别

百思不得小赵

数据同步 增量同步 全量同步 签约计划第三季 8月月更

破解数字化转型困局,企业分析协同场景案例解析

ModelWhale

数据分析 数字化转型 构建模型 成功案例 协同软件

DeepLink在转转的实践

转转技术团队

ios android 客户端

使用前端技术实现静态图片局部流动效果

dragonir

CSS JavaScript html 前端 SVG

云硬盘EVS详解以及如何用与避坑【华为云至简致远】

神奇视野

Python 后端 云服务 科技

技术干货|如何将 Pulsar 数据快速且无缝接入 Apache Doris

SelectDB

数据库 Doris pulsar 数据导入 kafaka

【实战】Next.js + 云函数开发一个面试刷题网站

狂奔滴小马

Serverless React

阿里云 EMAS Serverless 升级发布

移动研发平台EMAS

小程序云开发 阿里云 Serverless 开发者 云开发

利用java实现视频人像分割及视频背景替换

夏夜许游

Java 图像分割 视频人像分割 背景替换

2021年数据泄露成本报告解读

SEAL安全

DevSecOps 数据安全 混合云 零信任 软件供应链

2022最新发布超全的Java面试八股文,整整1700页,太全了

Java工程师

Java 面试 八股文

生物统计师与临床医生协同研究使用的低代码洞察平台丨数据科学 x 临床医学

ModelWhale

团队协作 Jupyter Notebook 数据科学 低代码开发 临床医学

开源一夏 | 打工人的第25天-曾经的考研人

Amazing_eve

#开源

不可忽略!户外LED显示屏的特点及优势

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

快速定位线上慢SQL问题,掌握这几个性能排查工具可助你一臂之力

IT学习日记

MySQL性能优化 数据库优化 MySQL 数据库 签约计划第三季 explain关键字

出海季,互联网出海锦囊之本地化

融云 RongCloud

元宇宙 IT业界

为什么Spring Boot项目加上就可以更新版本?

冉然学Java

程序员 源码分析 springboot Java 分布式 Java core

ffplay视频播放原理分析

百度Geek说

音视频

高性能创作本,日常修图剪辑选华硕无畏Pro15 2022完全足矣!

科技热闻

交大医学院临床研究中心如何将 ModelWhale 应用于临床医生教学、研究丨数据科学 x 临床医学

ModelWhale

人才培养 数据科学 低代码平台 教学 临床医学

ModelWhale 云端运行 WRF 中尺度数值气象模式,随时随地即开即用的一体化工作流

ModelWhale

数据科学 气象 全流程一体化 WRF 大气科学

开源一夏 |我在滴滴做开源

石臻臻的杂货铺

开源 8月月更

兆骑科创创业大赛,双创服务平台,线上直播路演

兆骑科创凤阁

R7 6800H+RTX3050+120Hz 2.8K OLED屏,无畏Pro15 2022开启预售

科技热闻

彻底搞懂云桌面配置及实践踩坑【华为云至简致远】

神奇视野

Python 科技

开源一夏 | 阿里云物联网平台之极速体验

六月的雨在InfoQ

阿里云 开源 物联网 8月月更

成功进行微软Silverlight应用程序负载测试的三项建议_.NET_Rebecca Clinard_InfoQ精选文章