`
izuoyan
  • 浏览: 9222987 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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">
2source="Fluorine.ServiceLibrary.FluorineService"
3fault="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]
2privatevarbook:BookVO;
3
4privatefunctiononGetBookHandler(evt:ResultEvent):void
5{
6book=evt.resultasBookVO;
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:DataGridx="10"y="10"width="543"height="147"dataProvider="{books}">
2<mx:columns>
3<mx:DataGridColumnheaderText="编号"dataField="Id"/>
4<mx:DataGridColumnheaderText="书名"dataField="Name"/>
5<mx:DataGridColumnheaderText="作者"dataField="Author"/>
6<mx:DataGridColumnheaderText="价格"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]
2privatevarbooks:ArrayCollection;
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1privatefunctiononGetDataTableHandler(evt:ResultEvent):void
2{
3books=evt.resultasArrayCollection;
4}

三、返回DataTable对象

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

相关推荐

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

    在探讨Flex与.NET互操作的系列文章中,本篇文章主要围绕如何使用FluorineFx网关实现远程访问展开。FluorineFx是一个开源的.NET Remoting与Flash Remoting网关,它允许.NET应用程序和Adobe Flex应用程序之间进行远程...

    fluorineFx实现Flex与.NET交互实例代码

    本实例代码涵盖了Flex与.NET互操作的多个方面,包括虚拟角色(fluorineFxVR)、服务对象(fluorineFxSO)、服务器RPC(fluorineFxServerRPC)以及聊天应用(fluorineFxChat)。以下是这些关键知识点的详细解释: 1....

    flex与.net通信的FluorineFx模板

    Flex与.NET通信的FluorineFx模板是一个关键的技术实现,它使得基于Adobe Flex的前端应用能够有效地与后端的.NET Framework服务进行交互。FluorineFx是这个过程中的核心工具,它是一个开放源码的库,专门设计用于解决...

    Flex与.NET互操作(十一):FluorineFx.Net的及时通信应用(Remote Procedure Call)(二)

    Flex与.NET互操作系列文章的第十一部分主要探讨了FluorineFx.NET框架下的远程过程调用(RPC)机制,这是一种实现客户端(Flash或Flex)与服务器端(.NET)高效通信的方法。FluorineFx.NET为跨平台交互提供了强大的...

    Flex与ASP.net交互

    1. 自动数据类型转换:Flex与.NET的数据类型不同,如Flex的Date对应.NET的DateTime。FluorineFX可以自动进行这些类型之间的转换,避免手动编写转换代码。 2. 提高交互效率:通过FluorineFX,Flex可以直接与.NET的...

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

    Flex与.NET互操作的核心在于 FluorineFx.Net 框架,它允许 Flex 客户端与 .NET 服务端进行高效的数据交换。本篇主要关注的是 Remote Shared Objects(远程共享对象),这是一个强大的功能,用于在多客户端之间实现...

    Flex 4 asp.net VS2010 FluorineFX

    FluorineFX是将Flex与.NET Framework连接的关键组件。它实现了Adobe的Action Message Format (AMF),这是一种高效的数据交换协议,用于在Flex客户端和ASP.NET服务器之间传输数据。通过AMF,可以实现低延迟、高效的...

    Flex与.NET交互

    总结来说,Flex与.NET的交互通过FluorineFx等工具实现,使得富互联网应用可以充分利用.NET的后端能力,同时提供了高效的数据传输方式,支持复杂对象的传递。这种交互方式在多层架构的应用开发中具有广泛的应用前景。

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

    Flex与.NET互操作是开发跨平台富互联网应用(RIA)时常见的需求,FluorineFx作为一款开源的Adobe Flex到.NET互操作框架,极大地简化了这一过程。本文将深入探讨如何利用FluorineFx配置环境,实现Flex与.NET之间的...

    Flex与ASP.Net通信(FluorineFx)程序例子

    FluorineFx 是一个开源的AMF(Action Message Format)网关,它可以将Flex与ASP.NET无缝对接,提供高效的二进制数据传输,提高了应用性能。 首先,我们需要理解Flex和ASP.NET各自的角色。Flex作为客户端展示层,...

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

    在本文中,我们将深入探讨如何利用FluorineFx.Net框架来实现视频录制与回放功能。FluorineFx.Net是一个强大的工具,它不仅提供了AMF(Action Message Format)通信、RTMP(Real-Time Messaging Protocol)协议、RPC...

    Flex与.NET互操作(十):FluorineFx.Net的及时通信应用(ApplicationAdapter)(一)

    ***是基于.NET平台的一个开源框架,用于实现实时通信(real-time communication)应用,尤其在Flash/Flex客户端与.NET服务端之间的通信。它允许开发者构建基于RTMP(Real Time Messaging Protocol)或AMF(Action ...

    fluorinefx与asp.net结合flex连接数据库

    FluorineFX 是一款强大的 .NET 与 Adobe Flex 之间的集成框架,它允许开发者使用 Flex 客户端与 ASP.NET 服务器端进行交互,实现数据的动态交换和远程调用服务(RPC)。在这个示例中,我们将探讨如何利用 FluorineFX...

    Flex(PureMVC) asp.net FluorineFx操作数据库

    标题中的“Flex(PureMVC) asp.net FluorineFx操作数据库”表明这是一个关于使用Adobe Flex(一种基于ActionScript的前端开发框架)与后端ASP.NET通过FluorineFx进行数据交互并操作数据库的项目。以下是相关知识点的...

    Flex与.Net

    3. FluorineFx:这是.NET平台上流行的Flex与.NET通信框架,用于实现在Flex应用和ASP.NET服务之间的AMF(Action Message Format)数据交换。 4. Microsoft Visual Studio Team System 2008:这是.NET开发的主要IDE,...

    Flex(Flash)与.net交互教程

    - **AMF通信**:使用FluorineFx实现在Flex和.NET之间的AMF通信,这是一种高效的数据交换格式,可以实现远程对象调用。 - **服务代理**:在Flex中,通过Flex的WebService或HTTPService组件定义服务代理,指定.NET...

Global site tag (gtag.js) - Google Analytics