FlashRemoting:Flex AMF 的应用

Java for Flash动态网站开发手札  里介绍的FlexRemoting使用很方便,但是flex里没有mx.remoting.Service类,而且FlexRemoting那里,文档只推介绍它的FlexDataServer来进行数据访问,好贵的东西。虽然flex的关方文档着重用它自家的服务器来提供完整的解决方案,其实Flex里还是保留了flash包,利用第三方的网关也能很好的解决flex和server的数据访问,无论使用ASP,PHP还是Ruby。
    我用采取的是AMFNET+ASP.Net,下面是Flex代码
< mx:Script >
        
<! [CDATA[
            import flash.net.Responder;
 
            public 
var  gateway : RemotingConnection;

            public 
function  initApplication()
            
{
                gateway 
= new RemotingConnection( "http://localhost:1267/FlexAMFTest/gateway.aspx" );
                gateway.call( 
"rayer.ReturnToFlash.ReturnStr"new Responder(onResult, onFault));
            }


            public 
function  onResult( result:Object) :  void
            
{
                trace( result );
            }



            public 
function  onFault( fault : Object) :  void
            
{
                trace( fault );
            }

        ]]
>
    
</ mx:Script >
下面是RemotingConnection类的代码REmotingConnection.as
package 
{
    import flash.net.NetConnection;
    import flash.net.ObjectEncoding;

    public class RemotingConnection extends NetConnection
    {
    public 
function  RemotingConnection( sURL:String )
        {
            objectEncoding 
=  ObjectEncoding.AMF0;
            
if  (sURL) connect( sURL );
        }
        
        public 
function  AppendToGatewayUrl( s : String ) :  void
        {
            
//
        }
    }
}

可以看出NetCOnnection类代替了Flash8里的Server类。
    AMFNET 的设置非常简单,只需要一个在web.config里添加一个httpHandler和一个gateway.aspx文件即可。
<httpHandlers>
      <add verb="*"
           path="gateway.aspx"
           type="Fuel.AmfNet.GatewayHandler, Fuel.AmfNet"/>
</httpHandlers>
httpHandler意思是只要请求gateway.aspx就将传入的请求映射到Fuel.AmfNet.GatewayHandler来处理。但是AMFNET是一个轻量级的网关,从源代码来看,只能对Number,String,Boolean,Array,Date,Object,XMLDocument进行互相转换。不过代码预留有MovieClip,RecordSet的接口,相信以后的版本肯定是要把它们都完善了的。虽然相比FlashRemoting可以直接返回.Net里的DataSet就逊色一些。不过总比一个15万的FlexDataServer要用的顺心。
 
    最后在说一下AMF (Action Message Format) ,这个也很好理解。flex要访问服务器,那么它要提交一个http请求给Web服务器(IIS,JRun等)。如果是XML形式的,类似SOAP那样,它的效率肯定低。如果把提交的请求内容进行压缩再传递给服务器,服务器响应后也把结果进行同样的压缩,再反还给flex客户端,那么中间的传输效率就要高很多。AMF就这样产生了, 所以AMF是一个协议,adobe规定的。在Flex Message Server里可以看到,AMF就是作为默认的Message格式的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值