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

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

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

1 namespace Fluorine.ServiceLibrary 2 { 3     public class Book 4     { 5         public int Id { get; set; } 6         public string Name { get; set; } 7         public string Author { get; set; } 8         public double Price { get; set; } 9     }10 }

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

1 namespace Fluorine.ServiceLibrary 2 { 3     [RemotingService] 4     public class FluorineService 5     { 6         /// <summary> 7         /// 返回一个简单对象 8         /// </summary> 9         /// <returns></returns>10         public Book GetBook()11         {12             return new Book13             {14                 Id = 1,15                 Name = "《三国演义》",16                 Author = "罗贯中",17                 Price = 10018             };19         }20 21         /// <summary>22         /// 返回DataTable对象23         /// </summary>24         /// <returns></returns>25         [DataTableType("Fluorine.ServiceLibrary.Book")]26         public DataTable GetDataTable()27         {28             DataTable dt = new DataTable("Book");29             dt.Columns.Add("Id", typeof(int));30             dt.Columns.Add("Name", typeof(string));31             dt.Columns.Add("Author", typeof(string));32             dt.Columns.Add("Price", typeof(double));33 34             DataRow dr = dt.NewRow();35             dr["Id"] = 1;36             dr["Name"] = "《三国演义》";37             dr["Author"] = "罗贯中";38             dr["Price"] = 52.30;39             dt.Rows.Add(dr);40 41             dr = dt.NewRow();42             dr["Id"] = 2;43             dr["Name"] = "《西游记》";44             dr["Author"] = "吴承恩";45             dr["Price"] = 39.91;46             dt.Rows.Add(dr);47 48             return dt;49         }50 51         /// <summary>52         /// 返回DataSet对象53         /// </summary>54         /// <returns></returns>55         [DataSetType("Fluorine.ServiceLibrary.Book")]56         public DataSet GetDataSet()57         {58             DataSet ds = new DataSet("DS");59             DataTable dt = ds.Tables.Add("Books");60             dt.Columns.Add("Id", typeof(int));61             dt.Columns.Add("Name", typeof(string));62             dt.Columns.Add("Author", typeof(string));63             dt.Columns.Add("Price", typeof(double));64 65             DataRow dr = dt.NewRow();66             dr["Id"] = 1;67             dr["Name"] = "《三国演义》";68             dr["Author"] = "罗贯中";69             dr["Price"] = 52.30;70             dt.Rows.Add(dr);71 72             dr = dt.NewRow();73             dr["Id"] = 2;74             dr["Name"] = "《西游记》";75             dr["Author"] = "吴承恩";76             dr["Price"] = 39.91;77             dt.Rows.Add(dr);78 79             return ds;80         }81 82     }83 }

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

1 <mx:RemoteObject id="ro"destination="fluorine">2 source="Fluorine.ServiceLibrary.FluorineService"3 fault="onFaultHandler(event)"4 <mx:method name="GetBook"result="onGetBookHandler(event)"/>5 <mx:method name="GetDataTable"result="onGetDataTableHandler(event)"/>6 <mx:method name="GetDataSet"result="onGetDataSetHandler(event)"/>7 </mx:RemoteObject>

一、返回对象示例

1 [Binable]2 privatevar book:BookVO;3 4 privatefunction onGetBookHandler(evt:ResultEvent):void5 {6 book=evt.result asBookVO;7 }

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

1 <mx:Button label="Book"click="ro.GetBook()"/>2 <mx:TextInput width="302"text="{boo.Name+book.Author+book.Price}"/>

二、返回DataTable对象

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

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对象,详细如下:

1 [Binable]2 private var books:ArrayCollection;
1 privatefunction onGetDataTableHandler(evt:ResultEvent):void2 {3 books=evt.result asArrayCollection;4 }

 三、返回DataTable对象

1 privatefunction onGetDataSetHandler(evt:ResultEvent):void2 {3 books=evt.result asArrayCollection;4 }

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

1 <?xml version="1.0" encoding="utf-8"?>2 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute">3 <mx:Script>4 <![CDATA[5 import mx.controls.Alert;6 import mx.rpc.events.ResultEvent;7 import mx.rpc.events.FaultEvent;8 import mx.collections.ArrayCollection;9 [Binable]10 private var books:ArrayCollection;11 [Binable]12 private var book:BookVO;13 14 private function onGetBookHandler(evt:ResultEvent):void15 {16 book=evt.result as BookVO;17 }18 19 private function onGetDataTableHandler(evt:ResultEvent):void20 {21 books=evt.result as ArrayCollection;22 }23 24 private function onGetDataSetHandler(evt:ResultEvent):void25 {26 books=evt.result as ArrayCollection;27 }28 29 private function onFaultHandler(evt:FaultEvent):void30 {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

BookVO 如下: public class BookVO { public function BookVo():void {} public var Id:Number; public var Name:String; public var Author:String; public var Price:Number; }

版权说明

本文属原创文章,欢迎转载,其版权归作者和博客园共有。

作      者:Beniao

文章出处: http://www.cnblogs.com/

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

  1. Flex与.NET互操作(九):FluorineFx.NET的认证(Authentication )与授权(Authorization)

    FluorineFx.NET的认证(Authentication )与授权(Authorization)和ASP.NET中的大同小异,核实用户的身份既为认证,授权则是确定一个用户是否有某种执行权限,应 ...

  2. Flex与.NET互操作(十三):FluorineFx.Net实现视频录制与视频回放

    本文主要介绍使用FluorineFx.Net来实现视频录制与视频回放,FluorineFx如同FMS一样,除了有AMF通信,RTMP协议,RPC和远程共享对象外,它同样具备视频流服务的功能.通过它我们 ...

  3. Flex与.NET互操作系列文章

    本系列文章主要介绍了关于Flex与.NET结合开发中的一些互操作性,包括网络通信.数据加载.数据传输.文件传输.以及应用于Flex与.NET协作开发的通信网关开源项目FluorineFx的相关知识点. ...

  4. Flex与.NET互操作系列文章索引

    本系列文章主要介绍了关于Flex与.NET结合开发中的一些互操作性,包括网络通信.数据加载.数据传输.文件传输.以及应用于Flex与.NET协作开发的通信网关开源项目FluorineFx的相关知识点. ...

  5. Flex与.NET互操作(七):了解FluorineFx的环境配置(远程对象、网关、通道、目的地)...

    注:本文内容原本计划在上一篇<Flex与.NET互操作(六):Flex和.NET协同开发利器FluorineFx >中写出,考虑到写在一起文章内容太长故分为两篇. Flex中的远程对象访问 ...

  6. Flex与.NET互操作(十二):FluorineFx.Net的及时通信应用(Remote Shared Objects)(三)

    远程共享对象(Remote Shared Objects) 可以用来跟踪.存储.共享以及做多客户端的数据同步操作.只要共享对象上的数据发生了改变,将会把最新数据同步到所有连接到该共享对象的应用程序客户 ...

  7. Flex与.NET互操作(三):基于WebService的数据访问(下)

    在上一篇文章<Flex与.NET互操作(二):基于WebService的数据访问(上) >中介绍了通过<mx:WebService>标签来访问Webservice.实际上我们也 ...

  8. [转]Flex与.NET互操作(三):基于WebService的数据访问(下)

    转自:http://blog.csdn.net/beniao277/archive/2009/01/19/3837605.aspx 在上一篇文章<Flex与.NET互操作(二):基于WebSer ...

  9. Flex与.NET互操作(十):基于FluorineFx.Net的及时通信应用(Real-time Messaging Applications)(一)...

     使用FluorineFx.Net开发的每一个实时通讯功能应用都拥有一个应用程序适配器(ApplicationAdapter),用来管理整个实时通讯应用的生命周期,以及接受和拒绝客户端的连接等.应用程 ...

最新文章

  1. Android studio第一次使用配置(三)gradle项目构建
  2. 资讯丨NVIDIA自造AI超级计算机:轻松进入世界前五
  3. QT实现太阳系系统八大行星
  4. 35岁前成功黄金法则
  5. amr文件转mp3 php,PHP 将微信录音arm格式文件转mp3格式
  6. springboot 前缀_SpringBoot2.x 给Controller的RequestMapping添加统一前缀
  7. nosql笔记1_早前的时候
  8. [转]网络安全设备Bypass功能介绍及分析 - [网络编程]
  9. H5+CSS3面试题
  10. 深度学习之TensorFlow(一)
  11. PCB十六大可靠性测试,看看您的板是否经得起测试?
  12. 如何获取宝宝取名软件注册码
  13. matlab画椭圆抛物面参数方程,求单叶双曲面和双叶双曲面、椭圆抛物面、双曲抛物面用matlab怎么画或其参数方程?...
  14. vot-toolkit-python测试DiMP50在VOT2018上的表现
  15. 阿里云天池大赛赛题解析(深度学习篇)--阅读笔记1--赛题一
  16. hdu_5620_KK's Steel(水题)
  17. 陈远:兴趣是永远的老师
  18. 温州医科大学计算机学院分数线,2017温州医科大学录取分数线
  19. 怎么使用迅捷文字转语音软件转换文字
  20. a标签中调用js的方法

热门文章

  1. C语言实现通用堆栈(附完整源码)
  2. C语言实现大数的阶乘(附完整源码)
  3. C++如何选择智能指针
  4. QT的QScriptValueIterator类的使用
  5. c语言的32个关键词
  6. C 读写php,C语言读取文件所有内容
  7. 1.将cocos2d-x项目移植到Linux环境下,将cocos2d-x项目移植到手机上
  8. Mysql 8 group replication组复制集群单主配置图解
  9. 基于mondrian的多维分析系统
  10. 【C语言】%[修饰符] 格式字符