APP下载

基于Flex的数据通信技术研究与应用

2016-11-11黄寿孟

中国现代教育装备 2016年17期
关键词:服务器端数据量应用程序

黄寿孟

三亚学院 海南三亚 572022

现代教育技术与装备

基于Flex的数据通信技术研究与应用

黄寿孟

三亚学院海南三亚572022

Flex是可以创建RIA富互联网应用程序快速有效的方法之一。通过Flex数据访问组件技术,从Flex客户端应用程序发送数据到服务器端,可以实现与大多流行的服务器之间相互通信,有传统的低数据量通信也有后台的大数据量通信,并详细介绍了不同类型技术的服务器的Flex接口组件技术。当然基于Flex技术的开发的客户端应用程序,不需做任何改动,就可以与服务器端进行数据通信,并且通过Flex技术不仅可以明显增加表示层的表现力,而且提高现有应用程序开发的效率。

Flex;客户端;服务器端;数据通信

Flex开发中最重要的内容之一就是如何解决网页数据与服务器和数据库的通信。而对于一个基于Internet的Flex应用而言,不能与服务器端进行通信是不可以想象的。Flex提供了RPC[3](Remote Procedure Call远端程序调用)的Services,Data Manage Service和Message Service 三种方式与服务器端通信[1]。Flex中提供了3种可用的RPC服务方式[2]:HttpService,WebService,RemoteObject,其中前两种属于低数据量通信,最后一种属于大数据量通信的方式。RPC协议通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议,使得开发包括网络分布式多程序在内的应用程序更加容易。Flex可以同大多流行的服务器技术通信,如PHP,Adobe ColdFusion,微软的ASP.NET以及Java等,通过Flex数据访问组件,可以从Flex客户端程序发送数据到服务器,与服务器端相互通信[4]。

1 Flex与服务器端低数据量通信

这是Flex与服务器端的简单通信方式,主要通过HTTPService 和WebService两种组件的访问方式进行通信,两者读取数据的格式不同[1],HTTPService组件访问的是纯文本文件,而WebService组件主要是访问Web服务。

HTTPService组件方式使用HTTPService组件可以与各种服务器技术的页面传递数据,包括PHP,ColdFusion,JSP,ASP等。通过设置HTTPService组件的url属性的值,可以读取远程服务器端的数据,客户端可以通过HTTPService组件的resultFormat属性设置输出的格式。

下列代码是在服务器端创建一个PHP文件,并从my_sql数据库中读取数据。

在客户端通过创建Flex项目,调用HTTPService组件访问远程的服务器程序,请求结果集。代码如下:

使用HTTPService组件除了可以读取远程服务器数据之外,还可以和传统的HTML页面中的表单Form一样,使用POST或者GET提交数据。要提交数据,需要设置HTTPService组件中的method属性。

例如:

使用WebServiceFlex 应用程序通过使用WebService 组件可以使用 Web服务定义与远程服务器通信的接口。Web服务使用标准的WSDL描述格式,所以不需要格式转换,就可以轻易地做到数据交换。

在Flex中提供了相应的WebService组件,该WebService组件支持SOAP消息格式,SOAP定义了基于XML格式的数据交换类型。Flex通过该组件可以与所有支持SOAP消息格式的,提供Web服务的服务器端程序通信。操作方法:先在Flex应用程序中创建一个WebService组件,接着创建表单Form组件提交数据,创建DataGrid组件显示数据,在服务器端,无论程序使用什么技术,最后生成的SOAP消息都是一样的。

另外,Flex中还提供了WebService类访问Web服务。具体应用如下:先在Flex应用程序中创建一个WebService类的对象,再设置WebService对象的相关属性,并添加相关的事件代码。主要代码如下:

2 Flex与服务器端大数据量通信

Flex提供RPC服务方式的RemoteObject组件与后台服务器端进行大数据量通信,虽然基于Flex技术开发的客户端应用程序不需改动就可以与服务器端进行通信,但是不同服务器的技术不同,它们之间的数据通信技术接口也有些不同,下面详细介绍FABridge,ColdFusion,AMFPHP,FluorineFx,BlazeDS,LCDS,Red5等接口技术。

2.1Flex与Ajax

FABridge是一个小型的代码库,通过这个接口,可以实现Flex与Ajax互相通信。Ajax是利用JavaScript和XML技术,出现的一种新的代码框架技术。Ajax并不是一个新技术,只是利用了JavaScript脚本中某些对象和方法,与远程服务器端通信。把更多的数据处理转移到了客户端,优化了浏览器与服务器之间的传输,减少不必要的数据往返,也减少了带宽占用时间,还减少了Web服务器的处理时间,从而实现了更好的用户体验。

Flex与Ajax同样都是客户端技术,Flex最终会被编译成SWF文件,而Ajax不会,Flex与Ajax两者结合实际上是利用各自的优点:Flex的表现力更强,而Ajax的响应速度更快。

FABridge类库整合了ExternalInterface类,而ExternalInterface类在ActionScript类库中提供了更加强大的技术,因为ExternalInterface类是一个应用程序编辑接口,负责ActionScript和JavaScript之间的通信。FABridge类库主要包含了2个文件:FABridge.as和FABridge.js,通过使用FABridge.as中的FABridge类可以访问JavaScript数据;通过使用FABridge.js中的FABridge函数就可以访问ActionScript中的数据。在Flex中通过这2个文件可以达到两者相互访问的目的,具体应用如下:在Flex应用程序项目右击,选择Create Ajax Bridge选项,创建FABridge桥,系统自动生成2个主要文件FABridge.as和FABridge.js,在FABridge.as 的main.html文件内添加一个Flex的回调函数initCallback(),获取和设置Flex中控件的值;在FABridge.js的main.mxml文件中创建一个FABridge组件和TextInput文本框控件。

操作方法如下:创建Flex应用程序时,在服务器类型选项中选择Desktop application(runs in Adobe AIR),在服务技术选项中选择ColdFusion Flash Remoting,接着创建ColdFusion服务器程序文件和Flex代码destination表示远程服务器的类型,source表示调用ColdFusion服务器的文件名称。ColdFusion中已经内置了可以直接调用.NET类库。

2.2Flex与PHP

PHP是一种开源的Web开发脚本语言,通常是嵌入在HTML页面中,也就是一个PHP与HTML代码的混合文件。通过AMFPHP,Flex可以与PHP无缝通信,从而创建客户端表现力更强的PHP应用程序。AMFPHP是PHP的RPC工具,是一种客户端与服务器交换数据方式。它可以调用本地对象带有不同参数的方法,设置回调并接受调用结果,而不用关心发送和接收数据的实现细节。

应用操作如下:先在服务器端AMFPHP项目的services目录下创建服务器端PHP代码文件,接着在客户端创建Flex应用程序主MXML文件中,再添加访问远程服务器端的PHP程序。其主要代码如下:

2.3Flex与.NET

.NET是一种功能强大的开发框架,包含了一套成熟的开发工具Visual Studio.NET。使用.NET框架既可以开发Windows应用程序,也可以开发的Web应用程序。同时它提供多功能的应用程序执行环境、简化开发以及多种开发语言之间简易的整合。FluorineFx提供了一个Flex/Flash Remoting的接口,用于访问.NET,所以使用FluorineFx可以轻易地实现Flex与.NET之间的通信。具体应用如下:服务器端打开Visual Studio.NET,通过添加新项目FluorineFx Serive Library,可以使用不同功能的代码分离,这样更容易管理和维护项目代码。接着添加新网站FluorineFx ASP.NET Web Site并确定存放位置。客户端选择创建Flex应用程序类型为ASP.NET,项目属性设置为Flex CompilerFlex,编译参数-services “services-config. xml”, services-config.xml文件是ASP.NET站点中包含的配置文件,可以把路径直接指向该站点目录,也可以把该配置文件复制到Flex目录中,通常情况下需要修改配置文件中endpoint节点的uri属性值即可,也就是把uri属性指向远程.NET服务器的网关文件gate_ way.aspx。

2.4Flex与Java

Java语言是全世界最流行的语言之一,具有跨平台、高性能、健壮、安全、结构中立、可移植性等特点,拥有大量丰富的开源项目,也大大促进了其发展。实现Flex与Java的即时通信把二者连为一体成为更强的强者,可以采用BlazeDS,LCDS(LiveCycle Data Services),Red5(流媒体技术)等项目实现,特别是Red5为开发网络在线游戏提供了一个简单易行的方案。

BlazeDS是一种开源的项目,是一种基于服务器的Java远程控制(remoting)和Web消息传递(messaging)技术,它能够使得后端的Java应用程序和运行在Flex客户端的应用程序相互通信。具体应用如下:服务器端编译Java源文件并连同包(package)目录一起保存在classes目录中,进入Flex配置目录,打开remotingconfig.xml文件添加destination节,其中<source>指向Java类路径,系统会根据路径找到Java类,ID属性可以定义,但是必须与Flex中RemoteObject组件中的destination属性值一致。系统会依据destination属性值找到配置文件对应的节,从而找到Java类并调用。创建项目时选择J2EE服务器类型,若不选择需要在项目属性设置编译参数和Flex服务器参数。

当然除了BlazeDS外,还有LCDS(LiveCycle Data Services),Red5(流媒体技术)等项目可以实现Flex与Java的通信。LCDS技术的前身是FDS(Flex Data Service),同Flash Remoting一样是通过AMF(ActionScript Message Format)的数据格式与服务器端进行通信。LCDS提供了Remoting,Data Management,Messaging共3种与服务器端的基本通信方式。这3种通信方式可以实现在对象层面与服务器端的通信,这样与服务器端进行通信时就会涉及数据类型转换的问题。LCDS与服务器端通信的通信结构是前端的SWF发送ActionScript调用,再由LCDS转换为针对Java的调用,最后Java代码完成于数据库的通信以及业务处理。

3 结束语

Flex提供了四类实现与服务器端的通信:HTTPService,RemoteObject,Socket,WebService。另外还可以根据外部中间插件让Flex客户端与服务器端进行通信,如BlazeDS,LCDS,Red5。Flex客户端与服务器具体通信情况见表1。

表1 Flex客户端与服务器端数据通信情况表

目前,Flex的数据通信技术可以实现与已有的开发工具、设计语言、应用服务器和数据库结合起来,将基于Flex技术的用户界面与现有的业务逻辑组件或Web服务连接起来,不需做任何改动,并且Flex开发技术可以增加表示层的表现力,又可以提高现有应用程序运行的效率。同时,使用Flex技术进行开发设计RIA应用程序,开发效率大大提高。同样,设计开发面向数据管理方面的应用程序,使用Flex技术更符合开发设计者的习惯,开发效率也会比Flash高出很多倍。

[1] 吕辉.Flex从入门到实践[M].北京:清华大学出版社,2009.

[2] 钱海军.基于Flex的服务器通信技术[J].广东交通职业技术学院学报.2012(4):15-17.

[3] 百度百科.RPC[EB/OL].(2014-12-4)[2015-1-12].http://baike. baidu.com/view/7287257.htm.

[4] 吕晓鹏.精通Flex3.0:基于ActionScript 3.0实现[M].北京:人民邮电出版社,2008.

The Research and Application of the Flex Data Communication Technology

Huang Shoumeng
Sanya University, Sanya, 572022, China

This Flex is one of the methods to create RIA rich Internet applications quickly and effectively. The Flex data communication technology is available from the client application to send data to a server, so as to realize the communication between the server and the most popular.They both have a low amount of data communication of traditional, large data and have the background of the amount of communication,and introduces the Flex interface component technology of different types of technology of server. Of course, the client application of Flex technology, do not need to make any changes, and is directly with the server data communication. the application of Flex technology will increase the presentation layer of expressive force, and enhancing the effciency of present application development.

Flex; client; server; data communication

2016-02-22

黄寿孟,硕士,副教授。

海南省教育厅项目(编号:Hnky2015-55);三亚市院地科技合作项目(编号:2013YD43)。

猜你喜欢

服务器端数据量应用程序
基于大数据量的初至层析成像算法优化
Linux环境下基于Socket的数据传输软件设计
高刷新率不容易显示器需求与接口标准带宽
宽带信号采集与大数据量传输系统设计与研究
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用
三星电子将开设应用程序下载商店