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

所属分类: 网页制作 / Flash 阅读数: 688
收藏 0 赞 0 分享
于此,本文将使用FluorineFx网关来提供数据服务等多项功能来介绍通过FluorineFx实现远程访问的相关知识点。

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

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

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

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

Code

     上面代码片段中分别提供了返回一个对象,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 private var book:BookVO;
3     
4 private function onGetBookHandler(evt:ResultEvent):void
5 {
6     book=evt.result as BookVO;
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 private function onGetDataTableHandler(evt:ResultEvent):void
2 {
3     books=evt.result as ArrayCollection;
4 }

 三、返回DataTable对象

1 private function onGetDataSetHandler(evt:ResultEvent):void
2 {
3     books=evt.result as ArrayCollection;
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):void
15             {
16                 book=evt.result as BookVO;
17             }
18             
19             private function onGetDataTableHandler(evt:ResultEvent):void
20             {
21                 books=evt.result as ArrayCollection;
22             }
23             
24             private function onGetDataSetHandler(evt:ResultEvent):void
25             {
26                 books=evt.result as ArrayCollection;
27             }
28             
29             private function onFaultHandler(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>
="COLOR: rgb(0,128,128)">19            &
更多精彩内容其他人还在看

Flex 对象持久化

总有人问我关于Flex对象序列化和持久化的问题,很多人认为对象不能拷贝到服务器,其实浅度的拷贝是可以做到的。
收藏 0 赞 0 分享

XML TO ArrayCollection 两种实现方式

最近研究FLEX,在网上看过100遍同一篇文章,结果测试不通,不知道到底能不能跑通,最后翻资料自己试验处理。
收藏 0 赞 0 分享

java TO ArrayCollection

因为new ArrayCollection 需要 array对象,event.result是空间返回对象(JAVA方法返回值)所以类型不同无法使用new 构造ArrayCollection ,可是恶心的FLEX偏偏支持javalist=ArrayCollection
收藏 0 赞 0 分享

Flex DataGrid DataGridColumn数据颜色多样化-类型替换

用得多了,发觉自己了解的真的是九牛之一毛都没有,最近用到了从后台读出数据时显示的问题,相信很多人都有用整形数据来代替字符串数据的情况
收藏 0 赞 0 分享

flex PopUpManager使用说明

PopUpManager在产生TitleWindow时应记录当前的TitleWindow,目前只能通过1)获取
收藏 0 赞 0 分享

Flex 字符串ReplaceAll使用说明

用过FLEX中String类型的朋友可能知道,replace这个方法并不过替换所有内容。那么我们需要替换所有内容怎么办?
收藏 0 赞 0 分享

基于Socket的网络连接 Flex与.NET互操作(一)

Flash/Flex也支持基于Socket的网络连接 ,服务器端可以是C++,VB,C#,Java等任一语言开发。监听一个网络端口便可以接收到Flash/Flex开发的客户端的连接。
收藏 0 赞 0 分享

基于WebService的数据访问(上) Flex与.NET互操作(二)

Flex提供了<mx:WebService>、<mx:HTTPService>和<mx:RemoteObject>标签来直接访问远程数据,这用于与各种不同语言环境开发提供的远程服务端数据源(如WebService)进行数据交互通信显得更加容易.
收藏 0 赞 0 分享

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

在上一篇文章《Flex与.NET互操作(二):基于WebService的数据访问(上) 》中介绍了通过<mx:WebService>标签来访问Webservice。实际上我们也可以通过编程的方式动态的访问WebService,Flex SDK为我们提供了WebServ
收藏 0 赞 0 分享

Flex与.NET互操作 使用HttpService、URLReqeust和URLLoader加载/传输数据

在前两篇文章中分别介绍了Flex与.NET的WebService之间的数据交互通信知识,本文将介绍另外一种加载数据以及发起请求的方式。
收藏 0 赞 0 分享
查看更多