[AMF]DSMessage在第三方的支持

AMF简介

ActionScript是Flash中的开发语言,而AMF(Action Message Format)是ActionScript的二进制消息协议。

 

 

 

 

AMF协议

目前有2各版本,版本0与版本3,版本3是在版本0的基础上进行扩展而来。

AMF3定义  AMF0定义

 

 

 

 

第三方支持AMF协议的列表

OtherLib Support for AMF

这里仅仅关注.NET平台,其中目前为止(2015年12月1日),NET平台AMF.NET在0.3版本停止维护;FluorineFx仅对Flex Data Services部分支持。

 

 

 

 

Flex与AMF关系

目前Flex版本4.6之前属于adobe;4.7之后为apache

adobe的ActionScript文档 包含4.6之前的版本

apache的ActionScript文档 最新版本(4.14)

 

Flex定位为RIA,运行于Flash Player、AIR、Flash Lite客户端,服务器则由LiveCycle Data Services解决交互问题。

FDS全称Flex Data Services,Adobe将其改名为LiveCycle Data Services(LC DS),LiveCycle ES是Adobe企业解决方案平台,LC DS则是其中的一个组件,Blaze Data Service(BlazeDS)则是LiveCycle Data Services中实现远程对象调用、Web消息通讯的JAVA开源实现。

对应的BlazeDS 3、4早期版本为adobe;BlazeDS 4.7以上版本为apache;

Flex 4.6 blazeds 3.x源码 Flex 4.6 blazeds 4.x源码

Flex 4.7 blazeds 4.7.x源码

所以LC DS和BlazeDS中都有AMF的相关实现;另有JAVA的客户端实现JAVA AMF Client

 

 

 

 

AMF中的常见消息

 

DSMessage

真正会出现在AMF中被序列化为二进制的消息有以下几种

  • 代号(类名{父类+Ext后缀})
  • DSA(AsyncMessageExt)
  • DSK(AcknowledgeMessageExt)
  • DSC(CommandMessageExt)
  • DSD(DataMessageExt)
  • DSP(PagedMessageExt)
  • DSQ(SequencedMessageExt)
  • DSU(UpdateCollectionMessageExt)

这些消息类都同名父类消息的可序列化子类,所以实现Externalizable序列化接口、 ClassAlias获得消息代号接口。而父类Message均实现Message接口,现在根据封装包不同分为2种消息:

CoreMessage

  • AbstractMessage
  • AsyncMessage
  • AcknowledgeMessage
  • CommandMessage
  • ErrorMessage

BlazeDS/LC DS封装在flex-messaging-core.jar/flex.messaging.messages包中(AEP DS4.6文档 LC DS4.6文档 LC DS4.7文档 ADEP 文档);

Flex(Adobe Digital Enterprise Platform Data Services for Java EE)封装在mx.messaing.messages包中(4.6文档 4.7文档)。

DataMessage

  • SequencedMessage
  • PagedMessage
  • DataMessage
  • UpdateCollectionMessage

LC DS封装封装在flex-messaging-data.jar/flex.data.messages包(文档中是没有的LC DS文档 ADEP文档

Flex(Adobe Digital Enterprise Platform Data Services for Java EE)封装在mx.data.messages包中(4.6文档

 

 

 

 

各个类库对于DSMessage的支持

BlazeDS/LC DS

LC DS是支持最为完整,其Message继承关系如下,DSMessage省略:

AbstractMessage

AsyncMessage

CommandMessage

AcknowledgeMessage

SequencedMessage

PagedMessage

DataMessage

UpdateCollectionMessage

AMF.NET

AMF.NET无Message

DotAMF

DotAmf无Message

amfmessaging

amfmessaging支持部分Message

FluorineFx

fluorinefx有CoreMessage、DataMessage,缺少DSMessage支持。除AbstractMessage被命名为MessageBase外,其他名称与包名与LC DS一致,其Message继承如下:

MessageBase(AbstractMessage)

AsyncMessage

CommandMessage

AcknowledgeMessage

SequencedMessage

PagedMessage

DataMessage

UpdateCollectionMessage

Charles

CharlesJava平台下的HTTP调试监控软件,自带支持DSMesage,在原有Message名称中添加DS,全部封装到com.xk72.amf.externalizable包下:

AbstractDSMessage

CommandDSMessage

AsyncDSMessage

AcknowledgeDSMessage

SequencedDSMessage

PagedDSMessage

DataDSMessage

UpdateCollectionDSMessage

AMFParser

AMFParserFiddler的一款插件,自带AMF解析算法,没有支持Message

FiddlerAmfParser

FiddlerAmfParserFiddler的一款插件,是利用FluorineFx解析AMF协议的,故不支持DSMessage解析

FiddlerAmfParser_DSMessageOutputProcessor

FiddlerAmfParser_DSMessageOutputProcessor是本人针对FiddlerAmfParser制作的一款增强插件,用于支持DSMessage解析

 

 

 

 

文章参考

LiveCycle ES vs LiveCycle DS vs BlazeDS – clearing up the confusion

初识Flex Data Services(FDS)

LiveCycle Data Service和Blaze DS的基本概念

谈AMF和AMF Message

初探AMF——Flash盛行年代的安全问题

AMF学习1数据类型

Amf3协议分析与实现

Categories: AMF 标签:

[AMF]DSMessage在第三方的支持”的一个响应

留下评论