blazdes amf http

无论是采用Adobe AIR技术的桌面应用程序 ,还是结合Flash Player使用浏览器的应用,在需要加载或处理数据的时候往往都需要连接到服务器。在采用Adobe Flex或Flash CS3来开发应用程序的过程中,应用程序与服务器间交互的实现方式有很多选择。服务器本身除了可以运行Java、ColdFusion、.Net、 PHP、Ruby等某种服务器端技术之外,还必须具备网络通信的能力,这为Flash Player中运行的应用或Adobe AIR应用的客户端与服务器端间的交互奠定了基础。通常,两者间的通信采用的是HTTP协议-- 也就是web浏览器加载web页面和应用时所采用的协议。但是,HTTP协议下采用不同的数据传输方式会带来应用性能和开发效率的天壤之别。

很多在Abode AIR或Flash Player中运行的应用都采用XML-over-HTTP技术(比如SOAP、REST等)在客户端和服务器之间传输数据。这个方法很简单,也很容易搭建。无论是哪种服务器端技术都很容易应用XML,因为XML完全是一个基于文本的协议。在必须实现透明协议的时候,XML是完美的选择。比如,Flickr的web服务在HTTP传输之上采用的就是REST风格的XML。这样一来,无论是谁采用哪种技术都可以简单地通过向Flickr发送简单的基于文本的请求来与Flickr交互。Flickr的回复是简单的XML,开发者可以轻松地解析这个XML回复,使用其中的数据。像XML这样基于文本的协议的缺点是额外的数据抽象层的编写与维护工作相对很沉重。此外,如果数据需要序列化和反序列化,那么这个数据抽象层在客户端和服务器端都会占用很多资源。
Flash Player可以支持另外一种传输协议,这个协议能够缓解由基于文本的协议导致的传输瓶颈问题,能够帮助开发者以更简单的方式与服务器交互。这就是 AMF(Action Message Format)。它是一个二进制格式的协议,能够替代用于传输XML的基于文本的协议而在HTTP协议之上交换数据。采用AMF的应用中,数据抽象层完全可以省去,客户与服务器间的通讯效率比传统的应用基于文本的协议传输要高得多。Census RIA Benchmark应用程序可以证明AMF带来的性能优势。

过去几年里,大量旨在提供AMF实现的开源项目蜂拥而至,这些项目与Macromedia之前一个叫做Flash Remoting的产品很相似。由于这些开源项目,无论是PHP、Java还是其它技术的开发人员都得以能够在他们的应用中采用AMF。Flex 1.0版本发布的时候,就涵盖了AMF相关功能。Flex发布版本2的时候同时包含了XML和AMF的相关功能,但服务器端的AMF相关功能却特别转移到 Flex Data Services这个新产品中。Flex Data Services在集成到Live Cycle产品系列中的时候又被重新命名为LiveCycle Data Services。针对单个CPU服务器的LiveCycle Data Services ES Express是免费的,但针对拥有多个CPU服务器的产品则收费很高,这使得一些开发者在选择AMF的时候望而却步,其中一些人也因此干脆转而选择一些非标准的AMF实现。

2007年十二月,Adobe做出了两个巨大的决策,让所有人都能够使用AMF。第一个决定是公开AMF规范。规范公布以后,所有项目都能按照规范来实现 AMF,而不用再对协议做反向工程。无论back-end采用的是Java、ColdFusion、PHP、.Net、Ruby还是其它技术,AMF的实现都只需要遵守规范即可。另一个决策是以BlazeDS项目的方式开源LiveCycle Data Services ES中的部分技术。

BlazeDS中包含了AMF的Java实现,可以用来与服务器端的Java对象远程交互,也可以用来在客户端之间传递消息。开发人员可以借助 BlazeDS的远程技术简单地调用POJO、Spring服务或EJB方法。开发人员可以通过其消息系统从客户端向服务器端发送消息,当然也可应从服务器端向客户端发送消息。BlazeDS也可以与其他一些消息系统结合使用,比如JMS、ActiveMQ。由于其远程技术与消息系统采用的方式是在 HTTP协议上传输AMF数据,BlazeDS因此在性能上拥有很大优势,同时也避免了额外的数据抽象层的处理工作。BlazeDS在很多基于Java的应用服务器环境下都能正常工作,这些服务器包括Tomcat、WebSphere、WebLogic、JBoss以及ColdFusion。此外,无论是 web(在Flash Player中运行)还是桌面(在Adobe AIR下运行)的Flex应用程序中,BlazeDS的使用都很简单。

开发人员现在可以从Adobe Labs站点上下载预发布版本,将blazeds-samples.war文件部署到任何一个servlet容器中,就开始你使用BlazeDS开发的旅程了。这个web应用包中提供了很多预配置的示范应用,所有这些应用都可以通过http://localhost:8080/blazeds-samples/ (端口号由你所使用的应用服务器和服务器配置所决定)来访问。

你可以遵循下面的步骤向应用程序中引入BlazeDS远程服务:

创建一个新的POJO Java类,这个类中需要包含你想要从Flex应用访问的方法
在remoting-config.xml文件中配置BlazeDS的远程终端
创建一个使用RemoteObject类的Flex应用
若要使用BlazeDS消息服务,则需要下列步骤:

在messaging-config.xml文件中创建消息服务的终端
创建一个使用Producer和Consumer类来接收消息的Flex应用
通过注册Consumer的消息feed来监听消息。
这下就可以使用BlazeDS高效地向back-end的Java类发送远程请求了,也可以应用BlazeDS的消息系统了.

你可能感兴趣的:(应用服务器,网络应用,Flex,网络协议,AIR)