前言

flash编程俺不熟,跟java的语法较相近,应要求需要flash与数据库通讯,或者间接通讯。于是在网上找相关的文章,装了个Flash CS3 ,也看到网上说不能直接和数据库直接通讯,后来也真让我找到了flash直接连接数据库的文章,是个牛人自己写了一个连接数据库的驱动,叫flashTDS,文章地址:http://space.flash8.net/bbs/viewthread.php?tid=341811。连接SQL2000没有问题,但是连接带实例名的SQL2005死活都连接不上,他的连接字符串:flashtds:MSSqlConnection:localhost:1433/MyFlashDB;user=gates;password=gates88 我把连接字符串改成flashtds:MSSqlConnection:over\sql2005:1433/MyFlashDB;user=gates;password=gates88 不行,sql2005是实例名,把斜杠换成双斜杠、去掉端口都试了就是不行,后来没有再试,放弃了这种办法。然后也找到了用LoadVars方法,都不太理想,后来找到了FluorineFx,觉得比较符合自己的要求,一方面Flash程序员调用起来方面,一方面C#程序员开发起来也比较方便,文中的例子采用《Flash/Flex ActionScript 3.0 交互式开发详解》这本书二十二章第二节第三点(22.2.3)的例子,代码几乎相同,但是需有注意的地方。

需要下载

1.     FluorineFx :http://www.fluorinefx.com/ 下载安装,这是VS的一个插件,网上也有相关文章.

正文

1.下载安装FluorineFx,新建一个FluorineFx示例项目:

2.新建项目之后会生成很多文件,可以先浏览一下,尤其是Web.config文件,然后在App_Code下编写测试连接类:

Test.cs

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Test 的摘要说明
/// </summary>
public class Test
{
    public Test()
    {
        //
        // TODO: 在此处添加构造函数逻辑
        //
    }

/// <summary>
    /// 
    /// </summary>
    /// <param name="sName"></param>
    /// <returns></returns>
    public string hello(string sName)
    {
        return "hello," + sName;
    }
}

3.修改配置文件Web.config,这里注意了,大家就不要走弯路了,用默认的配置是连不上的,我是后来找它自带的例子的时候才找到可用的配置文件的,如下,直接覆盖就行。

<?xml version="1.0"?>
<!-- 
    Note: As an alternative to hand editing this file you can use the 
    web admin tool to configure settings for your application. Use
    the Website->Asp.Net Configuration option in Visual Studio.
    A full list of settings and comments can be found in 
    machine.config.comments usually located in 
    \Windows\Microsoft.Net\Framework\v2.x\Config 
-->
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
    <configSections>
        <sectionGroup name="fluorinefx">
            <section name="settings" type="FluorineFx.Configuration.XmlConfigurator, FluorineFx" requirePermission="false"/>
        </sectionGroup>
    </configSections>
    <fluorinefx>
        <settings>
            <!-- value="browse|access" -->
            <remotingServiceAttribute>browse</remotingServiceAttribute>
        </settings>
    </fluorinefx>
    <connectionStrings/>
    <system.web>
        <httpModules>
            <add name="FluorineGateway" type="FluorineFx.FluorineGateway, FluorineFx"/>
        </httpModules>
        <compilation debug="true">
            <assemblies>
                <add assembly="System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/></assemblies></compilation>
        <authentication mode="None"/>
    </system.web>
</configuration>

4.编写flash的CS文件,这里是用的NetConnection进行连接的,cs代码如下:

RemotingConnection.as

package
{
    import flash.net.NetConnection;
    import flash.net.ObjectEncoding;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.events.Event;
    import flash.system.Security;
    
    public class RemotingConnection extends NetConnection
    {
        public function RemotingConnection(gatewayUrl:String)
        {
            //设置通信权限
            Security.allowDomain(gatewayUrl);
            //设置数据格式
            this.objectEncoding = ObjectEncoding.AMF0;
            //连接网关
            this.connect(gatewayUrl);
        }
    }
}

ConnectionASPNET.as

package
{
    import flash.display.Sprite;
    import RemotingConnection;
    import flash.net.Responder;
    
    public class ConnectionASPNET extends Sprite
    {
        public var gateway:RemotingConnection;
        public var responder:Responder;
        
        public function ConnectionASPNET()
        {
            //连接网关
            //http://localhost:1968/Gateway.aspx
            //http://localhost:1968/FluorineFx/GateWay.aspx
            gateway = new RemotingConnection("http://localhost:1968/Gateway.aspx");
            //调用类
            gateway.call("Test.hello",new Responder(onResult,onFault),"lalo");
        }
        
        /***************************
        * 返回成功
        **/
        public function onResult(resultt:Array):void
        {
            trace(resultt);
        }
        
        /***************************
        * 返回失败
        **/
        public function onFault(fault:String):void
        {
            trace(fault);
        }
    }
}

说明:

a)as调用的时候用的是类的全限定名加方法名称,很明显ASP.NET这边是要用反射来找这个类了。

b) new Responder 第二个参数可以设置为null,表示不接受错误返回,默认也是null

c) call 方法最后的参数是不定的,也就是你传的参数,可以不传,也可以传1个、2个、3个......

5.走到这一步基本上没有什么问题了,能够通讯了,但是调用起来有点麻烦,因为不是阻塞式的,不能直接调用就能拿到返回值,用了接受返回值的回调函数onResult,咋办?我的办法就是用一个变量保存验证前后的状态,像这样:

//null 未完成通讯
public var CheckFlag:String = null;

在接受的地方把代码改成

CheckFlag=resultt;

接受结果时用Timer来阻塞当前线程来等待服务器返回数据,如下

var oneMinuteTimer:Timer = new Timer(500, 3);
            oneMinuteTimer.start();
            oneMinuteTimer.addEventListener(TimerEvent.TIMER,timerevent);
            function timerevent(e:TimerEvent) {
                if(asp.CheckFlag == null)
                {
                    //说明还没有通讯完毕,继续等待
                }
                else
                {
                    //显示到swf的文本框
                    tbShowInfo.text = asp.CheckFlag.toString();
                    //终止Timer
                    oneMinuteTimer.removeEventListener(TimerEvent.TIMER,timerevent);
                }
            }

结束

折腾一天,不容易,呵呵,标记,欢迎有朋友能推荐更好的办法。这里已经和ASP.NET通讯上了,再间接连接数据库就不用再说了。

转载于:https://blog.51cto.com/over140/586484

FLASH与ASP.NET通讯相关推荐

  1. FLASH与ASP.NET通讯[Flash | CS3 | ActionScript | ASP.NET | FluorineFx ]

    前言 flash编程俺不熟,跟java的语法较相近,应要求需要flash与数据库通讯,或者间接通讯.于是在网上找相关的文章,装了个Flash CS3 ,也看到网上说不能直接和数据库直接通讯,后来也真让 ...

  2. FLASH与ASP通信原理入门

    经常有人问我FLASH留言板的制作方法,无奈这东西一句两句没办法说清楚,于是就萌发了写教程的想法.可后来又一想,授人以鱼,不如授人以渔,还不如集中精力好好讲将FLASH与ASP的通讯原理,原理通了,具 ...

  3. [转]FLASH与ASP通信入门教程

    ★经常有人问我FLASH留言板的制作方法,无奈这东西一句两句没办法说清楚,于是就萌发了写教程的想法.可后来又一想,授人以鱼,不如授人以渔,还不如集中精力好好讲将FLASH与ASP的通讯原理,原理通了, ...

  4. php爬取flash的交互数据库,基于PHP的Flash与MySQL数据库通讯的实现

    第 27卷 第 6期 2013年 12月 商洛学院学报 Journal of Shangluo University V01.27 NO.6 Dec. 2013 基于 PHP的 Flash与 MySQ ...

  5. Flash Socket 的基本通讯协议流程例子

    Flash Socket 的基本通讯协议流程例子 分类: flash builder2012-05-09 09:30 13人阅读 评论(0) 收藏 举报 原文:http://www.sujun.org ...

  6. FLASH与ASP通信入门教程(四) ASP操作数据库入门

    经过前几节的学习,我们对LV类和ASP的输入输出应该已经很熟练了吧,而且我们也已经了解了LV与ASP通讯的基本原理.这个原理可能并不复杂,不过如果你想利用它做出点东西来,关键还是要看你ASP和FLAS ...

  7. 两个简单的Demo示例向读者展示Flash和ASP.NET交互原理以及过程

    ASP.NET与FLASH交互学习了ASP.NET的基础知识之后,终于等到学习交互的时候了.请大家和我一起来进行让人激动的交互吧!本章我将用两个简单的Demo示例向读者展示Flash和ASP.NET交 ...

  8. asp_php_flash_java,Flash 和 ASP / PHP 以及 Javascript 的交互-ASP教程,ASP应用

    唉,第一次写文章,真是很紧张,这是前几天在网上查资料和自己研究的结果,希望能对一些朋友有用.水平所限,肯定有错漏之处,烦劳高手指正,不胜感激! 下面就书归正传: flash 以javascript 为 ...

  9. Flash/Flex/.net remoting通讯--Fluorine安装

    最近一直都在和单位的.net工程师讨论关于flash与后台数据交互的问题,我们以前一般的做法是通过访问aspx文件来获取xml进行交互,但 是这样的做法安全性不高,效率又差.所以转而研究其它方式,正好 ...

最新文章

  1. DVWA 1.9 通关秘籍
  2. 深入理解JavaScript的变量作用域
  3. PyTorch之LeNet-5:利用PyTorch实现最经典的LeNet-5卷积神经网络对手写数字图片识别CNN
  4. jQuery formValidator表单校验代码生成器ver1.0
  5. 2 Convex sets
  6. UVA 2474 - Balloons in a Box 爆搜
  7. Visual Studio 窗口的图标、图片资源 $this.Icon 在哪查看
  8. 千呼万唤始出来!诺基亚发预热海报:5摄手机真要来了
  9. Lind.DDD.Aspects通过Plugins实现方法的动态拦截~Lind里的AOP
  10. 【难题+重点】剑指offer——面试题40:数组中只出现一次的数字
  11. UITableVIew与UICollectionView带动画删除cell时崩溃的处理
  12. 在国外用什么app软件听歌 解除网易云音乐地区限制
  13. DevExpress DXperience 的本地化(汉化)方法
  14. 提升windows使用效率的软件
  15. hdu 4939 Stupid Tower Defense 2014多校七 DP
  16. 最新电脑cpu性能排行服务器,服务器cpu性能排行,手把手教你服务器cpu性能排行...
  17. 如何读懂和利用你的微生物多样性测序结果?
  18. 工作知识记录—TDMA和物理层协议
  19. JAVA基础之设计模式和枚举
  20. Apache http设置反向代理和负载均衡

热门文章

  1. 博科VP:闪存推动了与之相匹配的第六代FC的发展
  2. ubuntu eclipse CDT 问题
  3. Material Designer的低版本兼容实现(十)—— CheckBox RadioButton
  4. java list三种遍历方法性能比較
  5. HTTP 错误 404.3 - Forbidden
  6. 【noqsl】beansdb的分布式实现~简单粗暴有效~
  7. Exchange企业实战技巧(16)发布SMTP、POP、IMAP连接信息设置
  8. 程序员兄弟们,我们的基本素质怎么样?
  9. 快速提升UI设计感的7个版式小妙招
  10. 数据源 No operations allowed after connection closed