• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>Flex>文章内容
  • Fluorine中AS3与.NET数据转换(2)
  • 来源:RIA爱好者 作者:Flying 2007-10-25 【

一、 AS3转换成.NET(以ToNetType.mxml和ToNetType.cs为例)

1. 基本类型的数据

比如说我们用一个方法要向服务器端发送一个人的基本信息:比如姓名、年龄和婚姻状况,可以简单地把姓名、年龄和婚姻状况作为该方法的参数传递。参数的个数及前后位置要和.Net对应,参数一多,很容易出错。而且很多时候还需要用.Net再次转换。此类数据转换基本上是一一对应,和HTTP Service和Web Service差不多,体现不了Remoting Service技术的优势。请参看源文件中的sendArgs方法。

2. 数组类型

 同样是上述情形,如果改用数组为参数,方法会看起来简洁很多。不过仍然数组的元素的前后位置也必须与服务器端一致。AS3数组通过Fluorine转换为.NET的IList接口数据类型,详情请参看sendArray方法。

3. 关联数组类型

联数组其实就是Object对象,它可以让我们动态添加属性。参数变成了Object对象的属性,再将Object对象高级参数传递,再也不用担心AS与.Net文件中方法的参数个数及顺序必须一致了。AS3关联数组通过Fluorine转换为.NET的Hashtable,请参看AssoArray方法。

4. DTO/VO对象数据类型

再通过Fluorine,我们可以将自定义ActionScript 类(DTO/VO,如Person.as)转换为.NET的自定义类(如Person.cs),从而实现AS3与.NET的Mapping(映射)。如sendVO方法,这两个类的类名可以不一样,属性名和属性个数都可以不一样(为了好记,最好相同)。实现映射有以下两种方法:

(1) 在ActionScript 类必须添加元数据标签: [RemoteClass(alias=".Net全限定类名")]

(2) 在web.config 文件中添加classMappings节点

<classMappings>
    <classMapping>
        <type>.Net全限定名</type>
        <customClass>AS3全限定类名</customClass>
    </classMapping>
</classMappings>

在某些情况下第一种方法失效,可以尝试第二种方法。很显然,用ValueObject向.NET传递数据是最方便的。

当然还有ByteArray数据类型也是很重要的,比如说常见的大头拍应用,传统的方法在服务器端进行二进制编码是很麻烦效率也很糟糕的事。如果用Fluorine对AS3和.NET都直接使用ByteArray数据类型,那就方便高效多了。

点击此处查看转换效果,点击此处下载工程文件。





上一篇:使用Flex和PHP创建自己的视频应用   下一篇:Fluorine中AS3与.NET数据转换(1)
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
FLASH源文件

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)