什么是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 应用程序相互通信。
分享到:
相关推荐
Flex远程过程调用(RPC)部署涉及多个关键步骤和技术,主要目标是使Flex客户端能够与服务器端的Java代码进行通信。以下是对Flex RPC部署过程的详细说明: 1. **项目结构**: 首先,确保项目是按照Flex的要求组织的...
在本例子中,我们将探讨如何使用Flex与Java后端进行远程调用,借助Adobe的BlazeDS服务。BlazeDS是Flex与Java服务器之间通信的一个中间件,支持AMF(Action Message Format)协议,提供数据推送、拉取和消息代理等...
Flex与Java远程传值是Web开发中的一个重要技术组合,它允许富互联网应用程序(RIA)如Flex客户端与服务器端的Java应用进行数据交换。本示例是一个综合性的项目,包括两个模块:一个基于Flex的前端应用和一个基于Java...
在Flex中,远程调用是一项关键功能,它允许Flex客户端与服务器端进行数据交换。这种通信通常通过HTTP或HTTPS协议实现,以避免同源策略的限制。一种常见的远程调用技术是RPC(Remote Procedure Call),Flex支持AMF...
BlazeDS是Adobe的开源项目,它提供了一个中间层,使得基于Flex的前端能够通过远程调用(Remote Procedure Call, RPC)与基于Java的后端应用程序进行通信。Spring BlazeDS Integration则是Adobe和Spring社区合作的...
1. **RemoteObject**:Flex中的RemoteObject类是用于远程调用服务器端服务的对象。它可以调用后端提供的服务,并接收返回的结果。 2. **AMFChannel**:AMFChannel是Flex中用于发送和接收数据的通道之一。它支持AMF...
Flex支持多种远程调用协议,如AMF(Action Message Format)和HTTPService。AMF是一种高效的数据交换格式,允许客户端和服务器之间快速传输复杂的数据结构,而HTTPService则利用HTTP协议发送XML或JSON数据。根据描述...
- `result`函数是远程调用的结果处理函数,使用JSON解析返回的数据,将解析后的数据转换为地理图形并添加到地图上。 - 使用`Alert.show`进行调试,显示关键步骤的信息。 - `clearGraphic`函数用于清除地图上的...
这个方法将在Flex客户端被调用,以展示Flex与Java之间的交互。 在Flex客户端,我们使用MXML语言编写用户界面,包括一个文本输入框、一个按钮和一个标签。当用户点击按钮时,`button1_clickHandler`事件处理程序被...
3. **客户端调用**:在Flex界面中调用远程对象的方法,实现与服务器的通信。 4. **处理结果**:服务器返回的结果会被自动反序列化为Flex客户端可以使用的ActionScript对象。 5. **错误处理**:BlazeDS还提供了内置...
两者通过Remoting方式通信,即远程过程调用,可以实现在不同环境之间的数据交换。 Remoting是一种允许Flex客户端与ASP.NET服务端进行直接通信的技术。在这种模式下,Flex应用可以通过AMF(ActionScript Messaging ...
使用`RemoteObject`组件进行远程调用,指定服务名和方法名,处理响应结果。 6. **数据交换** 当Flex向服务器发送请求时,数据会被转换成AMF格式,服务器接收到请求后,将数据解码为Java对象进行处理。反之,服务器...
而LCDS是Flex与后端数据服务之间的桥梁,它通过AMF(Action Message Format)协议,提供了低延迟、高效率的数据交换机制,使得Flex应用能够直接调用Java的远程方法,处理复杂的数据操作。 在J2EE环境中,LCDS通常...
- BlazeDS接收到请求后,将ActionScript方法调用转换为Java方法调用,转发给HelloWorldJava。 - Java服务器执行sayHelloWorld方法,返回结果。 - BlazeDS接收到Java返回的结果,将其转换回ActionScript对象,通过...
WebService 是一种基于SOAP协议的远程调用方式,可以跨平台调用服务端的功能。虽然在本描述中没有详细介绍,但WebService允许Flex应用调用服务端的Web服务接口,这些接口可以是数据库操作、业务逻辑处理等。如果你...
服务端的Spring Bean被配置为可被远程调用,这样Flex可以通过AMF请求这些服务,获取或更新数据。 6. **SSI(Spring Security Integration)**: 提到的"SSI开发框架"可能指的是Spring Security的集成,这是一个强大...