当前位置: 首页 > news >正文

Flex与.NET互操作(八):使用FluorineFx网关实现远程访问

关于远程访问在本系列文章中陆续的写了不少示例了,本文没有准备深入的去探讨,为了巩固FluorineFx网关的学习和使用。于此,本文将使用FluorineFx网关来提供数据服务等多项功能来介绍通过FluorineFx实现远程访问的相关知识点。

FluorineFx提供的远程访问包括有很多方面的知道点,本文只介绍其中的三个知识点:访问远程对象返回对象,返回DataTable,返回DataSet对象.FluorineFx安装包里自带有相关的示例程序,要学习更多可直接参考这些示例程序.

在实现访问前我们同样来做一些准备工作,建立好远程对象,如下:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1namespaceFluorine.ServiceLibrary
2{
3publicclassBook
4{
5publicintId{get;set;}
6publicstringName{get;set;}
7publicstringAuthor{get;set;}
8publicdoublePrice{get;set;}
9}
10}

下面是提供Flex访问的远程对象:

Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1namespaceFluorine.ServiceLibrary
2{
3[RemotingService]
4publicclassFluorineService
5{
6///<summary>
7///返回一个简单对象
8///</summary>
9///<returns></returns>
10publicBookGetBook()
11{
12returnnewBook
13{
14Id=1,
15Name="《三国演义》",
16Author="罗贯中",
17Price=100
18};
19}
20
21///<summary>
22///返回DataTable对象
23///</summary>
24///<returns></returns>
25[DataTableType("Fluorine.ServiceLibrary.Book")]
26publicDataTableGetDataTable()
27{
28DataTabledt=newDataTable("Book");
29dt.Columns.Add("Id",typeof(int));
30dt.Columns.Add("Name",typeof(string));
31dt.Columns.Add("Author",typeof(string));
32dt.Columns.Add("Price",typeof(double));
33
34DataRowdr=dt.NewRow();
35dr["Id"]=1;
36dr["Name"]="《三国演义》";
37dr["Author"]="罗贯中";
38dr["Price"]=52.30;
39dt.Rows.Add(dr);
40
41dr=dt.NewRow();
42dr["Id"]=2;
43dr["Name"]="《西游记》";
44dr["Author"]="吴承恩";
45dr["Price"]=39.91;
46dt.Rows.Add(dr);
47
48returndt;
49}
50
51///<summary>
52///返回DataSet对象
53///</summary>
54///<returns></returns>
55[DataSetType("Fluorine.ServiceLibrary.Book")]
56publicDataSetGetDataSet()
57{
58DataSetds=newDataSet("DS");
59DataTabledt=ds.Tables.Add("Books");
60dt.Columns.Add("Id",typeof(int));
61dt.Columns.Add("Name",typeof(string));
62dt.Columns.Add("Author",typeof(string));
63dt.Columns.Add("Price",typeof(double));
64
65DataRowdr=dt.NewRow();
66dr["Id"]=1;
67dr["Name"]="《三国演义》";
68dr["Author"]="罗贯中";
69dr["Price"]=52.30;
70dt.Rows.Add(dr);
71
72dr=dt.NewRow();
73dr["Id"]=2;
74dr["Name"]="《西游记》";
75dr["Author"]="吴承恩";
76dr["Price"]=39.91;
77dt.Rows.Add(dr);
78
79returnds;
80}
81
82}
83}

上面代码片段中分别提供了返回一个对象,DataTable,DataSet对象的方法。这里只需要记住两个关键标识就行,它门是:DataTableType和DataSetType. 下面通过Flex的非可视化组件<mx:RemoteObject>来访问远程对象,OK,下面我们来看看具体怎么来调用。

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1 < mx:RemoteObjectid = " ro " destination = " fluorine " >
2 source = " Fluorine.ServiceLibrary.FluorineService "
3 fault = " onFaultHandler(event) "
4 < mx:methodname = " GetBook " result = " onGetBookHandler(event) " />
5 < mx:methodname = " GetDataTable " result = " onGetDataTableHandler(event) " />
6 < mx:methodname = " GetDataSet " result = " onGetDataSetHandler(event) " />
7 </ mx:RemoteObject >

一、返回对象示例

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1 [Binable]
2 private varbook:BookVO;
3
4 private functiononGetBookHandler(evt:ResultEvent):void
5 {
6 book = evt.result as BookVO;
7 }

通过点击按扭调用远程方法GetBook()完成方法的调用,直接可以将返回结果绑定到界面元素上。

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1 < mx:Buttonlabel = " Book " click = " ro.GetBook() " />
2 < mx:TextInputwidth = " 302 " text = " {boo.Name+book.Author+book.Price} " />

二、返回DataTable对象

返回DataTable和DataSet,将结果绑定到DataGrid上显示,先看看DataGrid的定义:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1 < mx:DataGrid x ="10" y ="10" width ="543" height ="147" dataProvider ="{books}" >
2 < mx:columns >
3 < mx:DataGridColumn headerText ="编号" dataField ="Id" />
4 < mx:DataGridColumn headerText ="书名" dataField ="Name" />
5 < mx:DataGridColumn headerText ="作者" dataField ="Author" />
6 < mx:DataGridColumn headerText ="价格" dataField ="Price" />
7 </ mx:columns >
8 </ mx:DataGrid >

DataGrid的数据源为定义的一个ArrayCollection对象,详细如下:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1 [Binable]
2 privatevarbooks:ArrayCollection;
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1 private functiononGetDataTableHandler(evt:ResultEvent):void
2 {
3 books = evt.result as ArrayCollection;
4 }

三、返回DataTable对象

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1 private functiononGetDataSetHandler(evt:ResultEvent):void
2 {
3 books = evt.result as ArrayCollection;
4 }

如上便完成了通过FluorineFx网关来实现远程访问,下面是完整的Flex端代码,实现很简单这里就不作详细讲解:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1 <? xmlversion="1.0"encoding="utf-8" ?>
2 < mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml" layout ="absolute" >
3 < mx:Script >
4 <! [CDATA[
5 importmx.controls.Alert;
6 importmx.rpc.events.ResultEvent;
7 importmx.rpc.events.FaultEvent;
8 importmx.collections.ArrayCollection;
9 [Binable]
10 privatevarbooks:ArrayCollection;
11 [Binable]
12 privatevarbook:BookVO;
13
14 privatefunctiononGetBookHandler(evt:ResultEvent):void
15 {
16 book=evt.resultasBookVO;
17 }
18
19 privatefunctiononGetDataTableHandler(evt:ResultEvent):void
20 {
21 books=evt.resultasArrayCollection;
22 }
23
24 privatefunctiononGetDataSetHandler(evt:ResultEvent):void
25 {
26 books=evt.resultasArrayCollection;
27 }
28
29 privatefunctiononFaultHandler(evt:FaultEvent):void
30 {
31 Alert.show(evt.fault.faultDetail);
32 }
33 ]] >
34 </ mx:Script >
35 < mx:Panel x ="42" y ="56" width ="578" height ="226" layout ="absolute" fontSize ="12" >
36 < mx:DataGrid x ="10" y ="10" width ="543" height ="147" dataProvider ="{books}" >
37 < mx:columns >
38 < mx:DataGridColumn headerText ="编号" dataField ="Id" />
39 < mx:DataGridColumn headerText ="书名" dataField ="Name" />
40 < mx:DataGridColumn headerText ="作者" dataField ="Author" />
41 < mx:DataGridColumn headerText ="价格" dataField ="Price" />
42 </ mx:columns >
43 </ mx:DataGrid >
44 < mx:ControlBar >
45 < mx:Button label ="DataTable" click ="getDataTable()" />
46 < mx:Button label ="DataSet" click ="getDataSet()" />
47 < mx:Button label ="Book" click ="ro.GetBook()" />
48 < mx:TextInput width ="302" text ="{boo.Name+book.Author+book.Price}" />
49 </ mx:ControlBar >
50 </ mx:Panel >
51 < mx:RemoteObject id ="ro" destination ="fluorine" >
52 source="Fluorine.ServiceLibrary.FluorineService"
53 fault="onFaultHandler(event)"
54 < mx:method name ="GetBook" result ="onGetBookHandler(event)" />
55 < mx:method name ="GetDataTable" result ="onGetDataTableHandler(event)" />
56 < mx:method name ="GetDataSet" result ="onGetDataSetHandler(event)" />
57 </ mx:RemoteObject >
58 </ mx:Application >
59

相关文章:

  • LeetCode -- Missing Number
  • [Windows编程] Windows 7 对多核的支持
  • LeetCode -- Palindrome Linked List
  • SSH客户端设置环境变量
  • LeetCode -- Search for a Range
  • 老子生平
  • LeetCode -- Simplify Path
  • 老子著述
  • LeetCode -- Single Number
  • LeetCode -- Find Peak Element
  • 老子思想
  • LeetCode -- Add Two Numbers
  • LeetCode – Combination Sum
  • ArcGIS Server Java ADF 案例教程 21
  • LeetCode -- Contains Duplicate
  • Angularjs之国际化
  • CODING 缺陷管理功能正式开始公测
  • JAVA多线程机制解析-volatilesynchronized
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • 构造函数(constructor)与原型链(prototype)关系
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 数组的操作
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 一个SAP顾问在美国的这些年
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​​​​​​​​​​​​​​Γ函数
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (转)创业的注意事项
  • **PHP分步表单提交思路(分页表单提交)
  • .NET 反射 Reflect
  • .Net 垃圾回收机制原理(二)
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .netcore 获取appsettings
  • .net反编译的九款神器
  • .NET命令行(CLI)常用命令
  • .sdf和.msp文件读取
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • /var/spool/postfix/maildrop 下有大量文件
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @JsonSerialize注解的使用
  • @WebServiceClient注解,wsdlLocation 可配置
  • [ 数据结构 - C++] AVL树原理及实现
  • [C#]winform使用引导APSF和梯度自适应卷积增强夜间雾图像的可见性算法实现夜间雾霾图像的可见度增强
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
  • [HUBUCTF 2022 新生赛]
  • [Jquery] 实现鼠标移到某个对象,在旁边显示层。
  • [Jquery] 实现温度计动画效果