分类: 系统运维
2008-05-30 10:20:09
Flex的Remoting采用AMF通信协议(Flex3已经升级为了AMF2了),这种协议最大的一个优势就是由于采用了二进制的传输方式,其传输效率非常高,可以让我们在复杂的网络环境获得良好的性能。根据国外一个很牛的老外写的在线测试工具,AMF协议的效率要远远高于webservice以及采用JSON格式承载数据的AJAX方式。 Flex的另一种方式通信就是PollingChannel,它的特点就是它可以多批次的去服务端取数据,而不是长时间保持连接直到所有数据取回之后才关闭我们宝贵的HTTP连接。
首先我们在WEB-INF下面的Class目录中添加一个JAVA类,如下:
public class HelloWorld {
private userSaid;
public repeat( said) {
this.userSaid = "Reply from server: " + said;
return this.userSaid;
}
public sayHello() {
now = new ();
return "Hello World " + now;
}
}
然后我们打开Remoting-Config.xml文件,在service中添加一个目的地指向我们服务端的JAVA类(destination节点),具体如下:
>
HelloWorld>
>
>
>
>
>
添加完成之后,我们打开一个flex页面,在上面添加一个RemotObject标签,当然你也可以在可视化状态下拖一个上去,然后添加我们刚才在HelloWorl类中定义的两个方法,并在AS代码块中定义两个回调方法用来异步接收返回的结果或发生的异常,具体代码如下:
[CDATA[
import mx.managers.CursorManager;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
private function faultHandler(fault:FaultEvent):void
{
CursorManager.removeBusyCursor();
result_text.text = "code:n" + fault.fault.faultCode + "nnMessage:n" + fault.fault.faultString + "nnDetail:n" + fault.fault.faultDetail;
}
private function resultHandler(evt:ResultEvent):void
{
result_text.text = evt.message.body.toString(); // same as: evt.result.toString();
}
]]–>
做好之后,激动人心的时刻来临了, F11运行,现在你就可以尽情的与服务端发消息了。注意,JAVA类的序列化与反序列化对我们来说都是透明的,这一切都是FLEX与Blazeds为我们做的。这就是它们带给我们的好处,让我们将重点放在业务逻辑与用户更好的操作性与体验上。