博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flex与ASP.NET通过Remoting方式交互基本思路
阅读量:5058 次
发布时间:2019-06-12

本文共 4702 字,大约阅读时间需要 15 分钟。

系统基于Flex的表现层与基于ASP.NET的业务逻辑层之间的通信方式主要采用Remote Object,即采用Adobe定义的AMF通信协议,通过使用第三方协议通信网关解析软件Fluorine作为中间件实现Flex与ASP.NET之间的通信。本文将使用FluorineFx网关来提供数据服务等多项功能来介绍通过FluorineFx实现远程访问的相关知识点。 FluorineFx提供的远程访问包括有很多方面的知识点,本文主要介绍其中的三个知识点:访问远程对象返回对象,返回DataTable,返回DataSet对象(返回的对象需要能够在服务器端和flex端都可以被解析,如果在服务器端返回一个复杂的对象那么在flex端就需做相应复杂的对象解析工作)。

一、 在实现访问前建立好远程对象: 

namespace Fluorine.ServiceLibrary{    public class Disaster    {        public int Id { get; set; }        public string Name { get; set; }    }}

二、返回Flex访问的远程对象:

namespace Fluorine.ServiceLibrary{    [RemotingService]    public class FluorineService    {        ///         /// 返回一个简单对象        ///         /// 
public Disaster GetDisaster() { return new Disaster { Id = 1, Name = "滑坡", }; } /// /// 返回DataTable对象 /// ///
[DataTableType("Fluorine.ServiceLibrary.Disaster")] public DataTable GetDataTable() { DataTable dt = new DataTable("Disaster"); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Name", typeof(string)); DataRow dr = dt.NewRow(); dr["Id"] = 1; dr["Name"] = "滑坡"; dr = dt.NewRow(); dr["Id"] = 2; dr["Name"] = "崩塌"; return dt; } /// /// 返回DataSet对象 /// ///
[DataSetType("Fluorine.ServiceLibrary.Disaster ")] public DataSet GetDataSet() { DataSet ds = new DataSet("DS"); DataTable dt = ds.Tables.Add("Disasters"); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Name", typeof(string)); DataRow dr = dt.NewRow(); dr["Id"] = 1; dr["Name"] = "滑坡"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Id"] = 2; dr["Name"] = "崩塌"; dt.Rows.Add(dr); return ds; } }}

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

source="Fluorine.ServiceLibrary.FluorineService" fault="onFaultHandler(event)"

(1)、返回对象示例

private var disaster:DisasterVO;                        private function onGetDisasterHandler(evt:ResultEvent):void            {                disaster =evt.result as DisasterVO;            }

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

(2)、返回DataTable对象

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

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

[Binable]            private var disasters:ArrayCollection;            private function onGetDataTableHandler(evt:ResultEvent):void            {                disasters=evt.result as ArrayCollection;            }

(3)、返回DataTable对象

private function onGetDataSetHandler(evt:ResultEvent):void            {                disasters =evt.result as ArrayCollection;            }

 如上便完成了通过FluorineFx网关来实现远程访问,下面是完整的Flex端代码:

source="Fluorine.ServiceLibrary.FluorineService" fault="onFaultHandler(event)"

 

转载于:https://www.cnblogs.com/xlyeaco/archive/2012/04/25/2469231.html

你可能感兴趣的文章
windows下编译FreeSwitch
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>
App.config自定义节点读取
查看>>
unity3d根据手机串号和二维码做正版验证
查看>>
二十六、Android WebView缓存
查看>>
django Models 常用的字段和参数
查看>>
linux -- 嵌入式linux下wifi无线网卡驱动
查看>>
SVN使用教程总结
查看>>
SQL中varchar和nvarchar有什么区别?
查看>>
OpenCV矩阵运算总结
查看>>
Java Build Practice 4:Extend and Invoke Ant API
查看>>
[转] Transformer图解
查看>>
FreeBSD方式安装 MAC OSX
查看>>
Linux 根文件系统制作
查看>>
IOS--沙盒机制
查看>>
My.Ioc 的性能
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
hdoj 1846 Brave Game(巴什博弈)
查看>>