`
NewTamato
  • 浏览: 100879 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

flex 与远程调用中间转换过程 概念

阅读更多

什么是RPC

 远端程序调用(RPC, Remote Procedure Call) 是一种客户端与服务器端交换数据方式。我们可以调用本地对象带对各种参数方法设置回调并接受调用结果。我们不用关心发送和接收数据的实现细节。实现细节通常是抽象的,就像我们在调用本地方法一样。

AMFPHP的工作原理


  客户端(Flash / Flex)与服务器端(PHP) 使用相同的方式描述方法调用和复杂数据。客户端序列化请求并将它发送到网关AMFPHP。AMFPHP再执行:
  (1) 反序列化请求
  (2) 找到相应的远程服务类
  (3) 实例化类
  (4) 执行安全检查
  (5)(使用指定参数)调用服务器端方法
  (6) 序列化返回的数据
  AMFPHP可以正确地序列化、反序列化复杂类型数据。除了对象和数组,它还支持resources 数据连接资源,这就意味着我们可以通过调用远程方法简单返回mysql_query,amfphp 会处理这一切。如果平台支持 (目前来说,Flash Remoting 和Flex Remoting),AMFPHP还可以处理循环引用和自定义数据它也支持简单的远程调试。还有AMFPHP附带一个浏览器,它可以在创建客户端代码前测试远程服务。AMFPHP 1.0.1还添加了模板,可以自动生成客户端代码。AMFPHP 1.9 beta更是新增了对AMF3的支持

  AMF协议是基于Http协议的


  它的内容处理过程大致是这样:
  1.从客户端获取Http请求(Request)流.
  2.对流进行解串行化(Deserialize),得到服务器端程序能够识别的数据,并建立一个响应(Response)消息
  3.Debug开始
  4. 对流进行各种处理(记录、许可、服务)得到返回值
  5.对响应流进行串行化
  6.发送Http响应给客户端
  Flash ActionScript 数据类型在AMF协议中对应的值是:
  Number 0x00;
  Boolean 0x01;
  String 0x02;
  Object 0x03;
  MovieClip 0x04;
  Null 0x05;
  Undefined 0x06;
  Reference 0x07;
  ECMAArray 0x08;
  ObjectEnd 0x09;
  StrictArray 0x0a;
  Date 0x0b;
  LongString 0x0c;
  Unsupported 0x0d;
  Recordset 0x0e;
  XMLObject 0x0f;
  TypedObject(Class) 0x10;

 

BlazeDS 

 
BlazeDS 是一个基于服务器的 Java 远程控制 (remoting) 和 Web 消息传递 (messaging) 技术,它能够使得后端的 Java 应用程序和运行在浏览器上的 Adobe Flex 应用程序相互通信。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics