用WebORB实现flex + .net后台的Remoting
采用RemoteObject的方式,传输的内容采用AMF3格式的二进制编码,效率较高,并且能实现远程对象调用,代码的可读性,和开发效率也会有所提高。
WebORB是adobe官方推荐的实现flex与.NET后台实现 RemoteObject 的解决方案。目前WebORB完全免费
WebORB的原理介绍:
1. 在Server端,WebORB利用.NET 的HTTPHANDLE机制,HttpHandle是一种在.NET程序里显示IIS中 ISAPI功能的机制,我的理解是实际上就是一种分发机制预处理机制。类似功能的还有HttpModule,比如可以将默认需要在网站系统第一次被访问的时候就初始化以后就不需要再改变的内容利用HTTPMODULE机制重载它的OnInit方法实现。
比如使用WebORB,需要在web.config文件中增加如下配置:
<httpHandlers>
<add verb="*" path="weborb.aspx" type="Weborb.ORBHttpHandler"/>
<add verb="*" path="codegen.aspx" type= "Weborb.Management.CodeGen.CodegeneratorHttpHandler"/>
</httpHandlers>
这段配置表示所有.aspx的http请求在被IIS分配给aspnet_wp.exe处理后, 对于名称是weborb.aspx的请求都交由Weborb.ORBHttpHandler这个类来处理,同理所有codegen.aspx页面的请求交由Weborb.Management.CodeGen.CodegeneratorHttpHandler处理。
在Weborb.ORBHttpHandler类的内部,首先解析http请求的内容,根据flex的AMF3二进制格式解码,然后根据解码后的信息,通过.net的反射机制,将远程调用的对象转换成.NET对象,并调用client端指定的方法,然后生成对应结果集, 再编码成AMF3格式,返回给客户的
2. 在client端,flex根据编译时指定的services-config.xml配置,将RemoteObect调用时指定的destination转换成对应的url调用,在调用时生成一个对应http请求,将欲调用的类和方法按协议转换成http请求内容。
使用WEBORB的方法:
.NET版本: .NET 2.0 VS2005开发环境
flex 3.0
eclipse flex builder
1.下载WebORB,并安装
2.新建asp.net工程Flat
copy WebORB工程目录下的文件(我是安装在:C:\Inetpub\wwwroot\weborb30):
weborb.config 拷贝到根目录
diagnostics.aspx 拷贝到根目录
weborb.dll 拷贝到App_WebReferences目录
3.引用weborb.dll到flat项目
4.修改flat项目的web.config文件,增加如下配置:
<httpHandlers>
<add verb="*" path="weborb.aspx" type="Weborb.ORBHttpHandler"/>
<add verb="*" path="codegen.aspx" type= "Weborb.Management.CodeGen.CodegeneratorHttpHandler"/>
</httpHandlers>
5.copy WEB-INF目录下所有文件到 flat项目目录下,可以随意指定,但flex 项目中必须引用这个目录,我这里copy到: E:\wwwroot\FlexDataCenter\WEB-INF\flex
6.新建cs文件,添加如下代码:
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/**//// <summary>
/// ComputeService 的摘要说明
/// </summary>
public class ComputeService
{
public ComputeService()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public int Compute(int arg1, int arg2)
{
return arg1 + arg2;
}
}
Compute方法实现一个计算2个参数之和的功能。
7.在eclipse中新建flex工程 HelloNet。
8.修改HelloNet项目的编译属性为:
-locale en_US -services E:\wwwroot\FlexDataCenter\WEB-INF\flex\services-config.xml
主要是需要制定-services 参数,设定services配置文件的读取路径,以便swf文件在使用RemoteObject时将对应的amf channel映射到相应的url,这个非常重要!
默认的一个channel配置如下:
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint uri="weborb.aspx" class="flex.messaging.endpoints.AMFEndpoint"/>
<properties>
<polling-enabled>false</polling-enabled>
</properties>
</channel-definition>
这个配置指定 id是my-amf的remote请求都映射到当前站点的weborb.aspx,然后交由weborb.aspx的 httphandle处理程序处理
9.修改HelloNet项目的Build Path和debug,run path : E:\wwwroot\FlexDataCenter\Flex (这是flat站点的目录)
在flex application文件中增加代码:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal"
xmlns="http://www.degrafa.com/2007"
>
<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
private function getComputerInfoHandler(event : ResultEvent) : void{
Alert.show(event.result.toLocaleString());
}
private function getFaultHandler( event : FaultEvent) : void{
Alert.show("fault");
}
]]>
</mx:Script>
<mx:Button label="test remote" click="compinfo.Compute(1,4);">
</mx:Button>
<mx:RemoteObject id="compinfo" destination="GenericDestination"
source="ComputeService"
showBusyCursor="true" >
<mx:method name="Compute" result="getComputerInfoHandler(event)" fault="getFaultHandler(event);"/>
</mx:RemoteObject>
</mx:Application>
注意:RemoteObject对象 的destination表示欲调用的后台,都在remoting-config.xml配置文件中定义:
<destination id="GenericDestination">
<properties>
<source>*</source>
</properties>
</destination>
由.NET server端解析
转载于:https://www.cnblogs.com/0000/archive/2009/08/14/1546364.html
用WebORB实现flex + .net后台的Remoting相关推荐
- Flex数据交互之Remoting[转]
Flex数据交互之Remoting 一 前言 Flex数据交互常用的有三种方式:WebService.HttpService以及Remoting. WebService方式已在这篇文章中给出,这篇文章 ...
- flex 与 后台通讯
public function submit():void{//要请求的URLvar request:URLRequest = new URLRequest("http://localhos ...
- Flex数据交互之Remoting
一 前言 Flex数据交互常用的有三种方式:WebService.HttpService以及Remoting. WebService方式已在这篇文章中给出,这篇文章主要讲解以Remoting方式进行数 ...
- Flex与后台交互的4种方法
一.HTTPService 程序代码: view plaincopy to clipboardprint? <?xml version="1.0" encoding=&quo ...
- Flex与外部的数据通信
视频课:https://edu.csdn.net/course/play/7621 本章简介 第3章讲解了视图状态.Flex页面间的跳转.Flex应用的模态窗体.数据绑定.使用拖放,图表等知识.本章将 ...
- Flex 常见问题解答(from MM)
Flex 概述 什么是 Macromedia Flex? Macromedia Flex 是为满足希望开发 Rich Internet 应用程序的企业级程序员的需求而推出的表示服务器和应用程序框架.R ...
- flex面试题及答案
在网上见到了一篇不错的关于flex面试题目,转来记录一下.希望有所帮助! 第一部分: 1.使用Flex Bulider3建立一下新的.mxml的页面时默认的背景是蓝色的,请问 用什么办法能修改掉此背景 ...
- 使用Fluorine实现Flex与.NET通信
哈哈,轉載該篇文章主要用來自己睇傑,無他意,因爲不想看雞腸.全面介紹最好是看官方那些雞腸拉:http://fluorine.thesilentgroup.com/fluorine/index.html ...
- web 请求 编码 引发的问题
前不久公司做了一个应用,大致的结构是:前台flex调用后台的数据做为显示. 因为当前的种种原因,放弃了web service做为后台数据的服务,而在那之前用过spring mvc,所以,干脆去spri ...
最新文章
- 心灵小栈: 镌刻在地下500米的母爱
- 钉钉日志范文100篇_看图写话范文328:暑假旅行(4篇)
- java泛型(一)、泛型的基本介绍和使用
- linux基础知识个人总结
- 打印图片的属性和实现另存图片功能以及使用numpy
- P2571 [SCOI2010]传送带
- LeetCode MySQL 614. 二级关注者
- 信息学奥赛一本通 1307:【例1.3】高精度乘法 | 1174:大整数乘法 | OpenJudge NOI 1.13 09:大整数乘法
- cacti php zombie,Cacti1.2.x新版教程之监控本机
- 循环移动(cyclic)
- python怎么实现deepcopy_deepcopy和python-避免使用的提示?
- java全能速查宝典_MATLAB函数全能速查宝典 邓薇等 编著.pdf
- 共享打印机连接报错问题汇总
- 第一门慕课计划——在广东海洋大学推广MOOC学习
- 推荐一个node QQ机器人框架-onebot
- 怎么查二手苹果手机价格
- 新浪微博热搜榜“背后的男人”讲述热搜背后的秘密
- 实验二 语音信号基本时频分析(待更改)
- 个人微信开发协议sdk接口API分享
- 【Py】基于Python的身份证读卡器二开全记录