利用fluorineFx将DataTable从.Net传递到Flash
时间:2022-04-23
本文章向大家介绍利用fluorineFx将DataTable从.Net传递到Flash,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
FluorineFx自带的示例都不错,就是有点不简洁,下面的代码基本上已经最简版了(环境vs2010) 1、先创建一个Web Application,然后添加FluorineFx以及FluorineFx.ServiceBrowser的引用
这二个程序集的默认位置在:
C:Program Files (x86)FluorineFxBinnet3.5FluorineFx.dll C:Program Files (x86)FluorineFxBinnet3.5FluorineFx.ServiceBrowser.dll
2、然后添加一个DataService.cs类,写好.net的服务端代码
using System.Data;
using FluorineFx;
namespace DataTableDemo
{
[RemotingService]
public class DataService
{
[DataTableType("随便填写什么")]
public object GetCountries(string capital)
{
DataTable tbl = new DataTable();
tbl.Columns.Add("ID", typeof(System.Int32));
tbl.Columns.Add("Country", typeof(System.String));
tbl.Columns.Add("Capital", typeof(System.String));
tbl.Rows.Add(1, "Andorra", "Andorra");
tbl.Rows.Add(2, "United Arab", "Abu Dhabi");
tbl.Rows.Add(3, "BeiJing", "China");
if (capital.Length > 0)
{
DataTable tbl2 = tbl.Clone();
DataRow[] drs = tbl.Select("Capital like '%" + capital + "%'");
foreach (var item in drs)
{
tbl2.Rows.Add(item[0], item[1], item[2]);
}
return tbl2;
}
return tbl;
}
}
}
这段代码很简单,就是返回一个DataTable而已
3、添加一些配置文件
3.1、修改web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!--添加fluorinefx配置节信息-->
<sectionGroup name="fluorinefx">
<section name="settings" type="FluorineFx.Configuration.XmlConfigurator, FluorineFx" requirePermission="false"/>
</sectionGroup>
</configSections>
<fluorinefx>
<settings>
</settings>
</fluorinefx>
<system.web>
<httpModules>
<!--添加FluorineGateway的httpMudules-->
<add name="FluorineGateway" type="FluorineFx.FluorineGateway, FluorineFx"/>
</httpModules>
<compilation debug="true" targetFramework="4.0" />
</system.web>
</configuration>
3.2、创建WEB-INF/flex目录,并创建二个文件remoting-config.xml,services-config.xml
remoting-config.xml内容
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service"
class="flex.messaging.services.RemotingService"
messageTypes="flex.messaging.messages.RemotingMessage">
<!-- DO NOT CHANGE <adapters> SECTION-->
<adapters>
<adapter-definition id="dotnet" class="FluorineFx.Remoting.RemotingAdapter" default="true"/>
</adapters>
<default-channels>
<channel ref="my-amf"/>
</default-channels>
<destination id="fluorine">
<properties>
<source>*</source>
</properties>
</destination>
</service>
services-config.xml内容
<?xml version="1.0" encoding="utf-8" ?>
<services-config>
<services>
<service-include file-path="remoting-config.xml" />
</services>
<channels>
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://{server.name}:{server.port}/{context.root}/Gateway.aspx" class="flex.messaging.endpoints.AMFEndpoint"/>
<properties>
<legacy-collection>true</legacy-collection>
</properties>
</channel-definition>
</channels>
</services-config>
目录结构如下:
4、写Flash调用端
import org.bytearray.remoting.Service;
import org.bytearray.remoting.PendingCall;
import org.bytearray.remoting.events.ResultEvent;
import org.bytearray.remoting.events.FaultEvent;
var gatewayUrl:String="http://localhost:7796/Gateway.aspx";
if (root.loaderInfo.parameters.remotingGatewayPath!=null) {
gatewayUrl=root.loaderInfo.parameters.remotingGatewayPath+"/Gateway.aspx";
}
var service:Service=new Service("DataTableDemo.DataService",gatewayUrl,ObjectEncoding.AMF3);
var rpc:PendingCall=service.GetCountries("B");
rpc.addEventListener( ResultEvent.RESULT, success );
rpc.addEventListener( FaultEvent.FAULT, error );
function success( pEvt:ResultEvent ):void {
txtResult.text="当前网关路径:" + gatewayUrl + "n调用成功,以下是返回的数据:n";
var len:int=pEvt.result.length;
var i:int=0;
for (i=0; i<len; i++) {
txtResult.appendText("ID:"+pEvt.result[i].ID+",Country:"+pEvt.result[i].Country+",Capital:"+pEvt.result[i].Capital+"n");
}
}
function error( pEvt:FaultEvent ):void {
txtResult.text="当前网关路径:" + gatewayUrl + "n调用失败,以下是详细信息:n";
txtResult.appendText( pEvt.fault.description );
}
运行截图:
示例源文件下载: http://cid-2959920b8267aaca.office.live.com/self.aspx/Flash/01.DataTable.rar
- (Head First 设计模式)学习笔记(3) --装饰者模式(StarBuzz咖啡店实例)
- 我的Js代码-按钮按下时判断是否选择了最后一行,给出提示
- (Head First 设计模式)学习笔记(2) --观察者模式(气象站实例)
- Spring Boot使用HandlerInterceptorAdapter和WebMvcConfigurerAdapter实现原始的登录验证
- 一条视频获C+融资 两个域名神助攻
- ExtJs与WCF交互:生成树
- JavaScript大略
- 加点的心得
- Markdown
- 介绍linux下利用编译bash设置root账号共用的权限审计设置
- 分享一例脚本发版和tomcat重启脚本
- 2018年小程序的红利趋势预测,或许你将成为下个富翁
- 分布式监控系统Zabbix-3.0.3-完整安装记录(5)-邮件报警部署
- label自定义的惨痛教训
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python实现多线程下载脚本的示例代码
- Android自定义控件仿iOS滑块SwitchButton
- kotlin gson反序列化默认值失效深入讲解
- Android使用Volley实现上传文件功能
- 工作中使用jasmine遇到的一个html element和Component绑定属性失去同步的问题
- Android使用Volley框架定制PostUploadRequest上传文件
- Android实现横向滑动卡片效果
- 在jasmine beforeEach里修改UI元素的一个side effect
- Android实现头像上传功能
- 关于jasmine里debugElement.query和fixture.detectChanges的依赖关系
- 使用python批量转换文件编码为UTF-8的实现
- rxjs operator学习笔记
- python实现将两个文件夹合并至另一个文件夹(制作数据集)
- rxjs里使用from operator从一个generator里生成Observable
- 使用asyncScheduler进行Observable的延迟subscribe