Flex AMF remoting 通讯协议

    相信很多朋友都在用Flex开发一些程序,必然少不了Flex前端对象和后台JAVA对象的转换,很久以前是使用servlet+xml、HTTPService、Web Service,我们会发现一个问题:它们都只支持文本格式的数据通信。在数据量小的情况下,这种方式还行,但如果要传递复杂的数据,必须先转换成其他文本格式,比如xml开式,供flex调用,而Flex获得数据后,又得花时间来把xml数据还原本来的结构。这样服务端和客户端各自多了一道工序,降低了运行效率。所以Adobe公司开发了AMF通信协议,它采用二进制压缩,支持数据序列化和数据反序列化,为swf文件和Remoting服务器(如java,php,.net)提供了一种轻量级的、高效能的通信方式。并且数据量越大,Remoting的传输效率就越高,远远超过HTTPService或Web Service,由于Adobe BlazeDS的开源,现在我有个项目就是使用这种文件调用java后台的方法。

Flex调用java某一个方法时会要传参数,Flex:String,int,Number,Array,ArrayCollection,Object可以和java中的:String,int,Integer,Long,String[],ArrayList可以一一对应,但有时候希望从Flex中直接传某一个model去java中的后台。如:java有个类Mobile.java里面有很多参数,Flex也有一个Mobile.as类,里面双方的属性完全一样,java属性是private并且有getter,setter方法,Mobile.as中属性是public的。如

Mobile.as
  // Fields
  //主键
  public var id:String;
  //产品名称
  public var mobileName:String;
  //客户名
  public var price:int; 

 如果希望在Flex调用某个远程方法时传些类的参数到java后台需在此类上加上

[RemoteClass(alias="com.xxx.xxxxl.model.Mobile")]
public class Mobile
{
      public function Mobile()
     {}
}
      

 

RemoteClass(alias="com.xxx.xxxxl.model.Mobile")]这句是表示此as类与远程Mobile类绑定。无数据绑定到java端的Mobile.java对象.注意成员名要一致。
如果不加这一句的话,传到java后台是就会是一个flex.messaging.io.amf.ASObject类,此类是hashMap的扩展类。这样需要你多编码去卦装一个Mobile.java对象给
Service 层调用。我java环境是Spring2.5+Hibernate3.0+Strut2.0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值