自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深入剖析Flex程序性能測(cè)試

開發(fā) 后端
本文向大家簡(jiǎn)單介紹一下Flex程序性能測(cè)試的概念,Adobe的Flex已經(jīng)越來(lái)越流行,但是Flex程序的性能測(cè)試卻還沒(méi)有很好的工具。

在學(xué)習(xí)Flex的過(guò)程中,你可能會(huì)遇到Flex程序性能測(cè)試方面的問(wèn)題,這里和大家分享一下,本文重點(diǎn)介紹性能測(cè)試中如何處理Flex的AMF消息。本文采用的測(cè)試工具是TheGrinder,開發(fā)語(yǔ)言是Jython和Java。

Flex程序性能測(cè)試

Adobe的Flex已經(jīng)越來(lái)越流行,但是Flex程序的性能測(cè)試卻還沒(méi)有很好的工具。包括著名的性能測(cè)試工具LoadRunner都還沒(méi)有對(duì)新版本Flex性能測(cè)試有很好的支持。筆者在實(shí)際工作的研究中,發(fā)現(xiàn)了一個(gè)好的測(cè)試Flex程序的方式。本文重點(diǎn)介紹性能測(cè)試中如何處理Flex的AMF消息。本文采用的測(cè)試工具是TheGrinder,開發(fā)語(yǔ)言是Jython和Java。
 
  1.Flex程序性能測(cè)試的困惑

  Flex默認(rèn)使用的是AMF協(xié)議進(jìn)行傳輸。AMF協(xié)議在瀏覽器與Server端的交互是通過(guò)HTTP協(xié)議進(jìn)行傳輸,如圖1-1。Client端發(fā)到Server端:首先是ActionScript的對(duì)象,包裝進(jìn)AMFMessage,AMFMessage對(duì)象再被序列化成二進(jìn)制數(shù)組,存入HTTPPOST請(qǐng)求的Data域中,數(shù)據(jù)傳到服務(wù)器后,反序列化成Java版AMFMessage對(duì)象,Server端Flex框架再把AMFMessage中的業(yè)務(wù)對(duì)象取出來(lái)發(fā)送到對(duì)應(yīng)的服務(wù)器端Java對(duì)象。Server端到Client端是類同的。

  圖1-1FlexAMFMessage的傳輸

 

 

  當(dāng)用腳本錄制器把AMFMessage錄制下來(lái)時(shí),是一串人不可讀的二進(jìn)制數(shù)組。
  result=request1201.POST('/home/messagebroker/amfsecure'+
  '?RND',
  (0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x04,
  0x6E,0x75,0x6C,0x6C,0x00,0x02,0x2F,0x31,
  0x00,0x00,0x00,0xCB,0x0A,0x00,0x00,0x00,
  0x01,0x11,0x0A,0x81,0x13,0x4D,0x66,0x6C,
  0x31,0x30,0x37,0x37,0x34,0x32,0x45,0x31,
  ...,
  0x07,0x6E,0x69,0x6C,0x01,0x04,0x00,),
  (NVPair('Content-Type','application/x-amf'),))

  如果不需要對(duì)發(fā)出去的AMFMessage做任何參數(shù)化,直接回放腳本即可。但是如果想要看懂AMF消息里面的內(nèi)容,或者需要依據(jù)實(shí)際情況修改AMF消息中的內(nèi)容后再發(fā)出去,那么就要想辦法把二進(jìn)制的數(shù)組解析出來(lái)。如前面所訴,這個(gè)二進(jìn)制的數(shù)組,其實(shí)是AMFMessage對(duì)象序列化后的數(shù)據(jù)。可惜的是,這個(gè)序列化算法是Adobe自定義的,普通的Java反序列化,并不能解析出來(lái),并且解析成AMFMessage對(duì)象以后,還需要重新序列化成二進(jìn)制,發(fā)送到服務(wù)器端。筆者曾經(jīng)嘗試過(guò)多種辦法解析和編碼AMFMessage對(duì)象,***找到一個(gè)方法可以很好的編碼和解析AMFMessage,并在實(shí)際測(cè)試中予以運(yùn)用,這個(gè)方法同時(shí)適用于TheGrinder,和LoadRunner。#p#

  2.解析和編碼FlexAMFMessage

  首先在已部署的Flex應(yīng)用程序中找到flex-messaging.jar、flex-messaging-common.jar兩個(gè)包,通常在war/WEB-INF/lib目錄下。
  開啟Eclipse創(chuàng)建一個(gè)JavaObject引用這兩個(gè)包,創(chuàng)建一個(gè)類AMFTransformer,專門負(fù)責(zé)解析和編碼AMFMessage。
載入以下對(duì)象:
  importflex.messaging.io.SerializationContext;
  importflex.messaging.io.amf.ActionContext;
  importflex.messaging.io.amf.ActionMessage;
  importflex.messaging.io.amf.AmfMessageDeserializer;
  importflex.messaging.io.amf.AmfMessageSerializer;

  解碼,二進(jìn)制到AMFMessage對(duì)象,利用AmfMessageDeserializer類:

 

  AMFMessage解析成Java對(duì)象后,可以根據(jù)實(shí)際需要做任意的修改。

 

 #p#

  編碼,AMFMessage對(duì)象到二進(jìn)制數(shù)組,利用AmfMessageSerializer類:

 

  注:AmfMessageSerializer,AmfMessageDeserializer的構(gòu)造函數(shù)在不同版本中略有差異,可能需要SerializationContext作為構(gòu)造函數(shù)的參數(shù)。
  AMFMessage解析成對(duì)象后,為了更加方便測(cè)試人員閱讀和理解,可以利用開源包XStream把Java對(duì)象轉(zhuǎn)儲(chǔ)成XML。

  3.Flex性能測(cè)試

  能夠把FlexAMFMessage消息解析和編碼后,就可以利用傳統(tǒng)的Web性能測(cè)試工具進(jìn)行測(cè)試了。

  4.后記

  本文書寫倉(cāng)儲(chǔ),不可避免有遺漏錯(cuò)誤之處,如有不對(duì),還往不吝賜教。

【編輯推薦】

  1. 使用FlexSDK4時(shí)三大注意事項(xiàng)
  2. FlexBuilder4十大新特性閃亮登場(chǎng)
  3. 解析六大優(yōu)秀Flex開源項(xiàng)目
  4. 揭開Flex正則表達(dá)式的神秘面紗
  5. 技術(shù)分享 在Flex中嵌入Flex字體的步驟


 

責(zé)任編輯:佚名 來(lái)源: csdn.net
相關(guān)推薦

2013-12-17 17:05:20

iOS性能優(yōu)化

2010-08-04 13:52:53

Flex事件機(jī)制

2009-07-01 18:24:59

JSP應(yīng)用程序JMeter

2010-08-09 16:01:37

Flex字體

2010-08-03 13:47:26

Flex程序員

2010-08-13 09:54:23

Flex字體

2010-08-03 16:21:54

FlexFlash

2010-08-06 15:20:25

Flex Builde

2010-08-04 08:42:28

Flex和Flash

2024-12-09 09:50:00

JVM逃逸逃逸分析

2010-08-12 16:10:44

Flex應(yīng)用程序

2010-08-12 11:29:01

Flex組件

2010-02-04 09:41:03

Android應(yīng)用程序

2010-08-04 09:43:28

Flex應(yīng)用程序

2018-11-20 10:50:00

Java性能優(yōu)化編程技巧

2010-06-11 10:19:22

systemd

2010-08-11 09:01:41

Flex4布局

2019-02-01 09:50:00

提升Python程序性能

2019-10-17 10:10:23

優(yōu)化Web前端

2010-07-30 15:35:11

Flex結(jié)合
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)