FLASH与ASP.NET通讯
前言
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.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,这里注意了,大家就不要走弯路了,用默认的配置是连不上的,我是后来找它自带的例子的时候才找到可用的配置文件的,如下,直接覆盖就行。
<!--
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
{
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
{
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,咋办?我的办法就是用一个变量保存验证前后的状态,像这样:
public var CheckFlag:String = null;
在接受的地方把代码改成
接受结果时用Timer来阻塞当前线程来等待服务器返回数据,如下
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通讯相关推荐
- FLASH与ASP.NET通讯[Flash | CS3 | ActionScript | ASP.NET | FluorineFx ]
前言 flash编程俺不熟,跟java的语法较相近,应要求需要flash与数据库通讯,或者间接通讯.于是在网上找相关的文章,装了个Flash CS3 ,也看到网上说不能直接和数据库直接通讯,后来也真让 ...
- FLASH与ASP通信原理入门
经常有人问我FLASH留言板的制作方法,无奈这东西一句两句没办法说清楚,于是就萌发了写教程的想法.可后来又一想,授人以鱼,不如授人以渔,还不如集中精力好好讲将FLASH与ASP的通讯原理,原理通了,具 ...
- [转]FLASH与ASP通信入门教程
★经常有人问我FLASH留言板的制作方法,无奈这东西一句两句没办法说清楚,于是就萌发了写教程的想法.可后来又一想,授人以鱼,不如授人以渔,还不如集中精力好好讲将FLASH与ASP的通讯原理,原理通了, ...
- php爬取flash的交互数据库,基于PHP的Flash与MySQL数据库通讯的实现
第 27卷 第 6期 2013年 12月 商洛学院学报 Journal of Shangluo University V01.27 NO.6 Dec. 2013 基于 PHP的 Flash与 MySQ ...
- Flash Socket 的基本通讯协议流程例子
Flash Socket 的基本通讯协议流程例子 分类: flash builder2012-05-09 09:30 13人阅读 评论(0) 收藏 举报 原文:http://www.sujun.org ...
- FLASH与ASP通信入门教程(四) ASP操作数据库入门
经过前几节的学习,我们对LV类和ASP的输入输出应该已经很熟练了吧,而且我们也已经了解了LV与ASP通讯的基本原理.这个原理可能并不复杂,不过如果你想利用它做出点东西来,关键还是要看你ASP和FLAS ...
- 两个简单的Demo示例向读者展示Flash和ASP.NET交互原理以及过程
ASP.NET与FLASH交互学习了ASP.NET的基础知识之后,终于等到学习交互的时候了.请大家和我一起来进行让人激动的交互吧!本章我将用两个简单的Demo示例向读者展示Flash和ASP.NET交 ...
- asp_php_flash_java,Flash 和 ASP / PHP 以及 Javascript 的交互-ASP教程,ASP应用
唉,第一次写文章,真是很紧张,这是前几天在网上查资料和自己研究的结果,希望能对一些朋友有用.水平所限,肯定有错漏之处,烦劳高手指正,不胜感激! 下面就书归正传: flash 以javascript 为 ...
- Flash/Flex/.net remoting通讯--Fluorine安装
最近一直都在和单位的.net工程师讨论关于flash与后台数据交互的问题,我们以前一般的做法是通过访问aspx文件来获取xml进行交互,但 是这样的做法安全性不高,效率又差.所以转而研究其它方式,正好 ...
最新文章
- DVWA 1.9 通关秘籍
- 深入理解JavaScript的变量作用域
- PyTorch之LeNet-5:利用PyTorch实现最经典的LeNet-5卷积神经网络对手写数字图片识别CNN
- jQuery formValidator表单校验代码生成器ver1.0
- 2 Convex sets
- UVA 2474 - Balloons in a Box 爆搜
- Visual Studio 窗口的图标、图片资源 $this.Icon 在哪查看
- 千呼万唤始出来!诺基亚发预热海报:5摄手机真要来了
- Lind.DDD.Aspects通过Plugins实现方法的动态拦截~Lind里的AOP
- 【难题+重点】剑指offer——面试题40:数组中只出现一次的数字
- UITableVIew与UICollectionView带动画删除cell时崩溃的处理
- 在国外用什么app软件听歌 解除网易云音乐地区限制
- DevExpress DXperience 的本地化(汉化)方法
- 提升windows使用效率的软件
- hdu 4939 Stupid Tower Defense 2014多校七 DP
- 最新电脑cpu性能排行服务器,服务器cpu性能排行,手把手教你服务器cpu性能排行...
- 如何读懂和利用你的微生物多样性测序结果?
- 工作知识记录—TDMA和物理层协议
- JAVA基础之设计模式和枚举
- Apache http设置反向代理和负载均衡
热门文章
- 博科VP:闪存推动了与之相匹配的第六代FC的发展
- ubuntu eclipse CDT 问题
- Material Designer的低版本兼容实现(十)—— CheckBox RadioButton
- java list三种遍历方法性能比較
- HTTP 错误 404.3 - Forbidden
- 【noqsl】beansdb的分布式实现~简单粗暴有效~
- Exchange企业实战技巧(16)发布SMTP、POP、IMAP连接信息设置
- 程序员兄弟们,我们的基本素质怎么样?
- 快速提升UI设计感的7个版式小妙招
- 数据源 No operations allowed after connection closed