专著于富媒体技术~
本站某些作品来源于互联网,如果侵犯了您的利益,请留言说明!
本站某些作品来源于互联网,如果侵犯了您的利益,请留言说明!
FluorineFx提供的远程访问包括有很多方面的知道点,本文只介绍其中的三个知识点:访问远程对象返回对象,返回DataTable,返回DataSet对象.FluorineFx安装包里自带有相关的示例程序,要学习更多可直接参考这些示例程序。
在实现访问前我们同样来做一些准备工作,建立好远程对象,如下:
namespace Fluorine.ServiceLibrary
{
public class Book
{
public int Id { get; set; }
public string Name { get; set; }
public string Author { get; set; }
public double Price { get; set; }
}
}
{
public class Book
{
public int Id { get; set; }
public string Name { get; set; }
public string Author { get; set; }
public double Price { get; set; }
}
}
下面是提供Flex访问的远程对象:
namespace Fluorine.ServiceLibrary
{
[RemotingService]
public class FluorineService
{
/// <summary>
/// 返回一个简单对象
/// </summary>
/// <returns></returns>
public Book GetBook()
{
return new Book
{
Id = 1,
Name = "《三国演义》",
Author = "罗贯中",
Price = 100
};
}
/// <summary>
/// 返回DataTable对象
/// </summary>
/// <returns></returns>
[DataTableType("Fluorine.ServiceLibrary.Book")]
public DataTable GetDataTable()
{
DataTable dt = new DataTable("Book");
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Author", typeof(string));
dt.Columns.Add("Price", typeof(double));
DataRow dr = dt.NewRow();
dr["Id"] = 1;
dr["Name"] = "《三国演义》";
dr["Author"] = "罗贯中";
dr["Price"] = 52.30;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Id"] = 2;
dr["Name"] = "《西游记》";
dr["Author"] = "吴承恩";
dr["Price"] = 39.91;
dt.Rows.Add(dr);
return dt;
}
/// <summary>
/// 返回DataSet对象
/// </summary>
/// <returns></returns>
[DataSetType("Fluorine.ServiceLibrary.Book")]
public DataSet GetDataSet()
{
DataSet ds = new DataSet("DS");
DataTable dt = ds.Tables.Add("Books");
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Author", typeof(string));
dt.Columns.Add("Price", typeof(double));
DataRow dr = dt.NewRow();
dr["Id"] = 1;
dr["Name"] = "《三国演义》";
dr["Author"] = "罗贯中";
dr["Price"] = 52.30;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Id"] = 2;
dr["Name"] = "《西游记》";
dr["Author"] = "吴承恩";
dr["Price"] = 39.91;
dt.Rows.Add(dr);
return ds;
}
}
}
上面代码片段中分别提供了返回一个对象,DataTable,DataSet对象的方法。这里只需要记住两个关键标识就行,它门是:DataTableType和DataSetType. 下面通过Flex的非可视化组件<mx:RemoteObject>来访问远程对象,OK,下面我们来看看具体怎么来调用。
<mx:RemoteObject id="ro" destination="fluorine" >
source="Fluorine.ServiceLibrary.FluorineService"
fault="onFaultHandler(event)"
<mx:method name="GetBook" result="onGetBookHandler(event)"/>
<mx:method name="GetDataTable" result="onGetDataTableHandler(event)"/>
<mx:method name="GetDataSet" result="onGetDataSetHandler(event)"/>
</mx:RemoteObject>
source="Fluorine.ServiceLibrary.FluorineService"
fault="onFaultHandler(event)"
<mx:method name="GetBook" result="onGetBookHandler(event)"/>
<mx:method name="GetDataTable" result="onGetDataTableHandler(event)"/>
<mx:method name="GetDataSet" result="onGetDataSetHandler(event)"/>
</mx:RemoteObject>
一、返回对象示例
[Binable]
private var book:BookVO;
private function onGetBookHandler(evt:ResultEvent):void
{
book=evt.result as BookVO;
}
private var book:BookVO;
private function onGetBookHandler(evt:ResultEvent):void
{
book=evt.result as BookVO;
}
通过点击按扭调用远程方法GetBook()完成方法的调用,直接可以将返回结果绑定到界面元素上。
<mx:Button label="Book" click="ro.GetBook()"/>
<mx:TextInput width="302" text="{boo.Name+book.Author+book.Price}"/>
<mx:TextInput width="302" text="{boo.Name+book.Author+book.Price}"/>
二、返回DataTable对象
返回DataTable和DataSet,将结果绑定到DataGrid上显示,先看看DataGrid的定义:
<mx:DataGrid x="10" y="10" width="543" height="147" dataProvider="{books}">
<mx:columns>
<mx:DataGridColumn headerText="编号" dataField="Id"/>
<mx:DataGridColumn headerText="书名" dataField="Name"/>
<mx:DataGridColumn headerText="作者" dataField="Author"/>
<mx:DataGridColumn headerText="价格" dataField="Price"/>
</mx:columns>
</mx:DataGrid>
<mx:columns>
<mx:DataGridColumn headerText="编号" dataField="Id"/>
<mx:DataGridColumn headerText="书名" dataField="Name"/>
<mx:DataGridColumn headerText="作者" dataField="Author"/>
<mx:DataGridColumn headerText="价格" dataField="Price"/>
</mx:columns>
</mx:DataGrid>
DataGrid的数据源为定义的一个ArrayCollection对象,详细如下:
[Binable]
private var books:ArrayCollection;
private var books:ArrayCollection;
private function onGetDataTableHandler(evt:ResultEvent):void
{
books=evt.result as ArrayCollection;
}
{
books=evt.result as ArrayCollection;
}
三、返回DataTable对象
private function onGetDataSetHandler(evt:ResultEvent):void
{
books=evt.result as ArrayCollection;
}
{
books=evt.result as ArrayCollection;
}
如上便完成了通过FluorineFx网关来实现远程访问,下面是完整的Flex端代码,实现很简单这里就不作详细讲解:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.collections.ArrayCollection;
[Binable]
private var books:ArrayCollection;
[Binable]
private var book:BookVO;
private function onGetBookHandler(evt:ResultEvent):void
{
book=evt.result as BookVO;
}
private function onGetDataTableHandler(evt:ResultEvent):void
{
books=evt.result as ArrayCollection;
}
private function onGetDataSetHandler(evt:ResultEvent):void
{
books=evt.result as ArrayCollection;
}
private function onFaultHandler(evt:FaultEvent):void
{
Alert.show(evt.fault.faultDetail);
}
]]>
</mx:Script>
<mx:Panel x="42" y="56" width="578" height="226" layout="absolute" fontSize="12">
<mx:DataGrid x="10" y="10" width="543" height="147" dataProvider="{books}">
<mx:columns>
<mx:DataGridColumn headerText="编号" dataField="Id"/>
<mx:DataGridColumn headerText="书名" dataField="Name"/>
<mx:DataGridColumn headerText="作者" dataField="Author"/>
<mx:DataGridColumn headerText="价格" dataField="Price"/>
</mx:columns>
</mx:DataGrid>
<mx:ControlBar>
<mx:Button label="DataTable" click="getDataTable()"/>
<mx:Button label="DataSet" click="getDataSet()"/>
<mx:Button label="Book" click="ro.GetBook()"/>
<mx:TextInput width="302" text="{boo.Name+book.Author+book.Price}"/>
</mx:ControlBar>
</mx:Panel>
<mx:RemoteObject id="ro" destination="fluorine" >
source="Fluorine.ServiceLibrary.FluorineService"
fault="onFaultHandler(event)"
<mx:method name="GetBook" result="onGetBookHandler(event)"/>
<mx:method name="GetDataTable" result="onGetDataTableHandler(event)"/>
<mx:method name="GetDataSet" result="onGetDataSetHandler(event)"/>
</mx:RemoteObject>
</mx:Application>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.collections.ArrayCollection;
[Binable]
private var books:ArrayCollection;
[Binable]
private var book:BookVO;
private function onGetBookHandler(evt:ResultEvent):void
{
book=evt.result as BookVO;
}
private function onGetDataTableHandler(evt:ResultEvent):void
{
books=evt.result as ArrayCollection;
}
private function onGetDataSetHandler(evt:ResultEvent):void
{
books=evt.result as ArrayCollection;
}
private function onFaultHandler(evt:FaultEvent):void
{
Alert.show(evt.fault.faultDetail);
}
]]>
</mx:Script>
<mx:Panel x="42" y="56" width="578" height="226" layout="absolute" fontSize="12">
<mx:DataGrid x="10" y="10" width="543" height="147" dataProvider="{books}">
<mx:columns>
<mx:DataGridColumn headerText="编号" dataField="Id"/>
<mx:DataGridColumn headerText="书名" dataField="Name"/>
<mx:DataGridColumn headerText="作者" dataField="Author"/>
<mx:DataGridColumn headerText="价格" dataField="Price"/>
</mx:columns>
</mx:DataGrid>
<mx:ControlBar>
<mx:Button label="DataTable" click="getDataTable()"/>
<mx:Button label="DataSet" click="getDataSet()"/>
<mx:Button label="Book" click="ro.GetBook()"/>
<mx:TextInput width="302" text="{boo.Name+book.Author+book.Price}"/>
</mx:ControlBar>
</mx:Panel>
<mx:RemoteObject id="ro" destination="fluorine" >
source="Fluorine.ServiceLibrary.FluorineService"
fault="onFaultHandler(event)"
<mx:method name="GetBook" result="onGetBookHandler(event)"/>
<mx:method name="GetDataTable" result="onGetDataTableHandler(event)"/>
<mx:method name="GetDataSet" result="onGetDataSetHandler(event)"/>
</mx:RemoteObject>
</mx:Application>
出处:Bēniaǒ成长笔记
转载时必须以链接形式注明出处及本声明!
牛C网推荐您再看看以下日志:
如何在ASP.NET中获取随机生成的cookie加密与验证密钥
.NET访问配置文件app.config的功能详解
自定义阿ASP.NET CheckBox的设计思路
从Internet上抓取指定URL的源码的方案(C#)
.NET精简框架的“无法找到资源程序集”异常释疑
分享C#动态生成文字图片解决方案
ASP.NET2.0中的AccessDataSource控件
C#中提供的VB不支持的新特性
在ASP.NET中上传图片并生成缩略图的C#源码
ASP.NET学习过程和对初学者的建议
如何在ASP.NET中获取随机生成的cookie加密与验证密钥
.NET访问配置文件app.config的功能详解
自定义阿ASP.NET CheckBox的设计思路
从Internet上抓取指定URL的源码的方案(C#)
.NET精简框架的“无法找到资源程序集”异常释疑
分享C#动态生成文字图片解决方案
ASP.NET2.0中的AccessDataSource控件
C#中提供的VB不支持的新特性
在ASP.NET中上传图片并生成缩略图的C#源码
ASP.NET学习过程和对初学者的建议
上一篇



