FluorineFx Sample (blogMp3)

FluorineFx与.NET跨平台开发
本文介绍了一个使用FluorineFx实现的跨平台应用案例,该案例展示了如何通过Flash与.NET进行数据交互,包括数据服务、消息传递等功能。文中详细解释了从Flash端调用.NET服务的方法,并提供了具体的代码实例,如音乐数据管理服务的实现。

FluorineFx实现remotion ,messaging 和data services, ,

FluorineFx要注意的是net 和as3之间的数据交互.

as3的 array 对应的net 是IList

as3的 object 对应的net是hashtable

还有就是可以把as3的一个类传到net中,也会转成net的一个类,你需要在net里的web.config里增加一个classmap节点.

<classMappings>
   <classMapping>
    <type>SampleClassNet</type>
    <customClass>SampleClassAS</customClass>
   </classMapping>
  </classMappings>

做了个例子,管理音乐数据的,flash + net + access

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Data.OleDb;
using FluorineFx;
using System.Collections;
using System.Diagnostics; 

namespace MP3Library
{
    /// <summary></summary>
    /// Fluorine sample service.
    /// 
    [RemotingService("Mp3DataManager")]
    public class Mp3DataManager
    {
        public Mp3DataManager()
        {
        }

        public string Echo(string text)
        {
            return "Gateway echo: " + text;
        }

        private string strconn = "Provider=Microsoft.Jet.OleDb.4.0;Data source="+System.Web.HttpContext.Current.Server.MapPath("database/data.mdb");
        private OleDbConnection conn;

        public IList getData()
        {
            checkConn();
            string sql = "select * from mp3";
            OleDbCommand mycommand = new OleDbCommand(sql, conn);
            OleDbDataReader myread = mycommand.ExecuteReader();
            ArrayList list = new ArrayList();
            while (myread.Read())
            {
                Hashtable tb = new Hashtable();
                tb.Add("id",myread["id"]);
                tb.Add("author",myread["author"]);
                tb.Add("name", myread["name"]);
                tb.Add("url", myread["url"]);
                list.Add( tb ) ;
            }
            myread.Close();
            return list.ToArray();
        }

        public int addItem(Hashtable tb)
        {
            checkConn();
            string sql = "Insert into mp3(author,name,url) Values('" + tb["author"] + "','" + tb["name"] + "','" + tb["url"] + "')";
            OleDbCommand mycommand = new OleDbCommand(sql, conn);
            //返回增加的行数
            return mycommand.ExecuteNonQuery();
        }

        public int editItem(Hashtable tb)
        {
            checkConn();
            string sql = "UPDATE mp3 SET author='" + tb["author"] + "', name='" + tb["name"] + "', url='" + tb["url"] + "' WHERE id=" + Convert.ToInt32(tb["id"]) + "";
            Debug.WriteLine(sql);
            OleDbCommand mycommand = new OleDbCommand(sql, conn);
            //返回增加的行数
            return mycommand.ExecuteNonQuery();
        }

        public int delItem(String i)
        {
            checkConn();
            string sql = "DELETE FROM mp3 WHERE id=" + i + "";
            OleDbCommand mycommand = new OleDbCommand(sql, conn);
            //返回增加的行数
            return mycommand.ExecuteNonQuery();
        }


        private void checkConn()
        {
            if (conn == null)
            {
                conn = new OleDbConnection(strconn);
                conn.Open();
            }
        }
    }
}
flash端只要
nc.call('MP3Library.Mp3DataManager.getData',new Responder(getDataResult,getDataFault));
server 下载
client 下载
### 关于 FluorineFx 和 AMF3 的使用指南 #### 安装和配置 FluorineFx 为了使应用程序能够处理AMF3数据,需要安装并配置FluorineFx库。该库是一个.NET框架组件,允许服务器端与Flash/Flex客户端之间通过AMF协议高效通信[^1]。 对于ASP.NET Web应用,在项目中引入`Fluorine.dll`之后,还需修改Web.config文件来注册HTTP模块和服务路由。这一步骤确保了来自Flex前端发送过来的数据包可以被正确解析成CLR对象,并返回给调用者相应的响应消息[^2]。 ```xml <configuration> <system.webServer> <handlers> <add name="FluorineGateway" path="*.amf" verb="*" type="FluorineFx.Web.FluorineHandler, Fluorine"/> </handlers> </system.webServer> </configuration> ``` #### 编写服务类 创建一个继承自`RemotingService`的服务类用于定义远程方法接口。这些方法将会暴露给ActionScript代码作为可调用的操作。当接收到请求时,参数会自动转换为对应的C#类型;同样地,执行完毕后的结果也会被打包回传至SWF播放器内运行的应用程序实例中去。 ```csharp using System; using FluorineFx; public class MyService : RemotingService { public string HelloWorld(string name){ return $"Hello {name}"; } } ``` #### Flex 应用中的连接设置 在Flex端建立RemoteObject实例并与上述后台API对接之前,先要指定目标地址以及目的地名称(Destination ID)。通常情况下,后者对应着部署好的.asmx页面路径或者是WCF终结点URL的一部分。此外还需要注意版本号的选择——这里特别指明采用的是AMF3编码方式。 ```actionscript import mx.rpc.remoting.mxml.RemoteObject; var ro:RemoteObject = new RemoteObject(); ro.destination = "MyService"; ro.endpoint = "http://localhost/YourApp/amfphp/gateway.php"; // 或其他网关入口 // 设置默认使用的序列化格式为AMF3 ro.channelSet.defaultChannel.properties.amfVersion = 3; ``` #### 常见问题解答 - **无法接收到来自服务器的消息** 如果遇到此类情况,请确认已按照前述说明完成了必要的网络配置工作,并且防火墙规则不会阻止外部访问尝试。另外检查日志记录以获取更多诊断线索。 - **性能表现不佳** 对象图过大可能导致传输效率低下。考虑优化数据结构设计,减少不必要的属性传递。同时启用压缩功能有助于缓解带宽压力。 - **跨域资源共享(CORS)错误** 当浏览器安全策略限制不同源之间的交互行为时会出现此现象。解决方案之一是在IIS管理控制台里调整相应站点的权限设定,允许特定域名下的资源加载操作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值