flex和blazeds_使用BlazeDS和AMF构建Web和桌面应用程序

flex和blazeds

使用Adobe AIR在桌面上运行的应用程序或使用Flash Player在浏览器中运行的应用程序通常在需要加载或处理数据时连接到服务器。 使用Adobe Flex和Flash CS3之类的工具构建这些应用程序的开发人员具有多种选择,可以使他们的应用程序与服务器进行通信。 服务器本身可以运行Java,ColdFusion,.Net,PHP,Ruby或任何其他服务器端技术。 无论采用哪种服务器端技术,当在Flash Player或Adobe AIR中运行的客户端应用程序需要与服务器通信时,都需要某种形式的网络通信。 通常,这种通信通过HTTP进行-HTTP是网络浏览器用来加载网页和应用程序的相同协议。 但是,通过HTTP传递数据的方式上的差异会大大降低应用程序性能以及开发人员的工作效率。

在Adobe AIR或Flash Player中运行的许多应用程序都使用基于HTTP的XML技术(例如SOAP或REST)在客户端和服务器之间移动数据。 此方法简单且易于设置。 每种服务器技术都是基于文本的协议,因此可以轻松地说出XML。 当需要协议透明性时,XML是完美的选择。 例如,Flickr的Web服务通过HTTP使用RESTful样式的XML。 这允许使用任何技术的任何开发人员通过向Flickr发送基于文本的简单请求来轻松地与Flickr进行交互。 Flickr然后使用简单的XML进行响应,这使开发人员可以轻松地解析和使用数据。 XML之类的基于文本的协议的一个缺点是,数据抽象的附加层通常很难编写和维护。 另外,在对数据进行序列化和反序列化时,此数据抽象层会消耗服务器端和客户端上的资源(请参见图1)。

flex和blazeds_使用BlazeDS和AMF构建Web和桌面应用程序_第1张图片

图1. AMF减少了通过网络编组数据的层

一段时间以来,Flash Player支持一种传输协议,该协议减轻了与基于文本的协议相关的不必要的瓶颈,并为开发人员提供了一种与服务器进行通信的更简单方法。 这种用于交换数据的二进制协议称为操作消息格式(AMF),可以通过HTTP代替传输XML的基于文本的协议来使用。 使用AMF的应用程序可以消除不必要的数据抽象层,并与服务器进行更有效的通信。 要查看AMF的性能优势的演示,请查看Census RIA Benchmark应用程序 。

在过去的几年中,出现了许多开源项目来提供AMF实现,类似于旧的Macromedia产品Flash Remoting。 这些项目允许使用PHP,Java和其他技术的开发人员在其应用程序中使用AMF。 Flex 1.0发布时,它还包含AMF功能。 Flex 2发布时,它包含XML和AMF功能,但是服务器端AMF功能已转移到称为Flex Data Services的新产品中。 加入Live Cycle产品套件后,Flex Data Services成为LiveCycle Data Services ES。 尽管LiveCycle Data Services ES Express已针对单个CPU服务器免费提供,但具有多个CPU的服务器的定价使某些开发人员无法使用AMF或导致他们选择其他非标准AMF实现。

2007年12月,Adobe发布了两个重要公告,使每个人都可以开始利用AMF。 第一个公告是AMF规范现已公开可用。 发布规范允许其他项目根据规范实现AMF,而不是对协议进行反向工程。 无论开发人员使用哪种后端技术(Java,ColdFusion,PHP,.Net,Ruby等),AMF的实现都可以符合规范。 第二个重要公告是,LiveCycle Data Services ES技术的一部分作为名为BlazeDS的项目被开源。

BlazeDS包括AMF的Java实现,该实现用于与服务器端Java对象进行远程通信以及在客户端之间传递消息。 BlazeDS远程处理技术使开发人员可以轻松地在普通的旧Java对象(PO​​JO),Spring服务或EJB上调用方法。 开发人员可以使用消息传递系统轻松地将消息从客户端发送到服务器,或者从服务器发送到客户端。 BlazeDS也可以链接到其他消息传递系统,例如JMS或ActiveMQ。 因为远程处理和消息传递技术在HTTP上使用AMF,所以它们获得了AMF的性能优势以及无需处理其他数据抽象层的简单性。 BlazeDS可与各种基于Java的应用程序服务器一起使用,包括Tomcat,WebSphere,WebLogic,JBoss和ColdFusion。 此外,BlazeDS可以轻松地用于Web(在Flash Player中运行)和桌面(在Adobe AIR中运行)的Flex应用程序中。

通过从Adobe Labs 下载预发行版 ,开发人员可以立即开始使用BlazeDS。 首先,只需将blazeds-samples.war文件部署在任何servlet容器中。 该Web应用程序包含许多预配置的示例应用程序,可以从http:// localhost:8080 / blazeds-samples /访问(端口可能会根据应用程序服务器和服务器配置的不同而有所不同)。

要在您的应用程序中开始使用BlazeDS Remoting Service,请执行以下简单步骤:

  1. 创建一个新的POJO Java类,该类公开要从Flex应用程序访问的方法。
  2. 在remoting-config.xml文件中配置BlazeDS远程目标。
  3. 创建一个使用RemoteObject类的Flex应用程序。

要使用BlazeDS消息服务,请遵循以下简单步骤:

  1. 在messaging-config.xml文件中创建一个消息传递目的地。
  2. 创建一个使用Producer和Consumer类发送和接收消息的Flex应用程序。
  3. 通过订阅使用者的消息提要开始收听消息。

这就是您需要做的所有事情,以高效地向后端Java对象发出远程请求,并将消息传递系统与BlazeDS结合使用! 让我们使用Eclipse和Flex Builder更详细地完成这些步骤。 您将需要安装以下软件:

  • Eclipse 3.3经典版
  • Flex Builder 3 Beta 3 (Eclipse插件)
  • 任何Java应用程序服务器(Tomcat,JBoss,WebLogic,WebSphere等)
  • 火焰DS

要创建一个简单的远程应用程序:

  1. 将blazeds.war文件从BlazeDS解压缩到应用程序服务器的部署文件夹中。 例如,在JBoss上,使用 /server/default/deploy/blazeds.war
  2. 启动Eclipse / Flex Builder
  3. 创建一个新的Java项目,可用于配置BlazeDS并将Java类添加到Web应用程序。
    1. 使用项目名称,例如“ blazeds_server”
    2. 从现有来源创建项目; 使用已部署的BlazeDS WAR的WEB-INF目录的路径,例如: /server/default/deploy/blazeds.war/WEB-INF/
    3. 将src目录添加到构建路径
    4. 使用WEB-INF / classes目录作为输出文件夹
  4. 使用以下代码创建一个名为HelloWorld.java的新Java类:
  5. public class HelloWorld {
    public String sayHello(String name) {
    return "hello, " + name;
    }
    }
  6. 通过将目标添加到WEB-INF / flex目录中的remoting-config.xml文件,将BlazeDS配置为允许对HelloWorld类进行远程请求。 使用以下目标配置:


  7. HelloWorld

  8. 启动应用程序服务器,并通过转到以下URL验证Web应用程序已配置(端口可能因应用程序服务器配置而异):http:// localhost:8080 / blazeds /
    (如果未将服务器配置为显示目录内容,则可能会看到404错误。可以。)
  9. 创建一个新的Flex项目
    1. 对于项目名称,键入“ testHelloWorld”
    2. 选择“ J2EE”作为应用程序服务器类型
    3. 选择“使用远程对象访问服务”和LiveCycle Data Services
    4. 将Root文件夹指定为已部署WAR文件的位置
    5. 将根URL指定为:http:// localhost:8080 / blazeds(您的端口名可能会有所不同,具体取决于您的应用程序服务器配置)
    6. 将上下文根指定为:/ blazeds
    7. 验证配置,然后单击完成
  10. 通过使用以下源代码更新testHelloWorld.mxml文件来创建Flex应用程序:





  11. 运行应用程序并通过在TextInput框中键入您的名字来对其进行测试。 您应该看到TextInput下方显示“ hello,<您的姓名>”,如下图所示。
flex和blazeds_使用BlazeDS和AMF构建Web和桌面应用程序_第2张图片

说明:Flex应用程序正在使用RemoteObject库与启用BlazeDS的服务器进行通信。 当用户在TextInput框中输入文本时,更改事件使RemoteObject向服务器发出请求。 然后,服务器向远程目标配置中指定的Java类发出请求。 这也可以调用Spring服务或EJB会话Bean,但是此示例仅调用POJO。 在此示例中,POJO的返回值只是传递给它的名称字符串,附加在“ hello”之后。 当对象返回一个值时,该值将被序列化为AMF并返回给Flex应用程序。 然后,RemoteObject库将ro..lastResult属性设置为返回的值。 (在这种情况下为ro.sayHello.lastResult. )还可以通过RemoteObject上的result事件获得结果。 数据绑定触发Label显示从POJO返回的字符串。 BlazeDS还支持来回传递类型化的Java对象。

接下来,我们将构建一个使用BlazeDS消息传递系统的新Flex应用程序。

  1. 首先,将消息传递目标添加到WEB-INF / flex目录中的messages-config.xml文件中。 添加以下目的地:



    消息传递目标允许消息传递系统将消息中继到在该目标上侦听的客户端,并且还允许将消息发送到该目标。 消息传递目标可以具有持久性和网络参数,它们还可以连接到其他消息传递系统(如JMS)。
  2. 重新启动应用程序服务器,以便BlazeDS配置新的消息传递目标。
  3. 创建一个新的Flex项目
    1. 对于项目名称,键入“ testChat”
    2. 选择“ J2EE”作为应用程序服务器类型
    3. 选择“使用远程对象访问服务”和LiveCycle Data Services
    4. 将Root文件夹指定为已部署WAR文件的位置
    5. 将根URL指定为:http:// localhost:8080 / blazeds(您的端口名可能会有所不同,具体取决于您的应用程序服务器配置)
    6. 将上下文根指定为:/ blazeds
    7. 验证配置,然后单击完成
  4. 要创建使用消息传递系统的简单聊天应用程序,请使用以下代码更新testChat.mxml:





    import mx.messaging.messages.AsyncMessage;








  5. 运行应用程序。 在下方的TextInput框中输入一条消息,然后单击Send。 确认消息显示在上方的框中,如下图所示。 还要验证是否打开了多个浏览器窗口,并且所有浏览器之间都能进行消息传递。
flex和blazeds_使用BlazeDS和AMF构建Web和桌面应用程序_第3张图片

说明:Producer对象允许Flex应用程序将消息发送到消息系统中。 还有一个Java API(此示例中未使用),该API允许将消息发送到服务器上的消息系统中。 使用定制适配器或现成的JMS适配器,您还可以将消息系统连接到其他消息系统,但是默认情况下,消息系统是独立运行的。 当用户单击发送按钮时,将使用匿名对象创建一条新消息,以将消息正文中的msg属性设置为TextInput中的值。 因为消息类型是AsyncMessage,所以必须导入该类。 Consumer对象允许Flex应用程序侦听消息。 应用程序初始化后,将订阅消息系统。 然后,当接收到消息时,Consumer上的事件处理程序将聊天消息从消息主体中移出并将其附加到TextArea。

使用BlazeDS和AMF将有助于减少开发时间,并帮助您的应用程序更快地运行。 尝试一下BlazeDS,让我们知道您的想法! 您可以从Adobe Labs的BlazeDS页面中找到有关BlazeDS和开放AMF规范的更多信息。

关于作者

詹姆斯·沃德(James Ward)是Adobe Flex的技术传播者,也是Adobe JCP代表JSR 286、299和301的代表。他喜欢爬山,他喜欢编程,因为它提供了无尽的新发现,优雅的解决方法,山顶和山谷。 他在攀登中的冒险带给他许多地方。 同样,技术为他带来了许多冒险,包括:90年代初的Pascal和Assembly。 90年代中期的Perl,HTML和JavaScript; 然后是Java及其许多框架,它们始于90年代后期。 如今,他主要使用Flex为基于Java的后端构建漂亮的前端。 在Adobe工作之前,James为Pillar Data Systems建立了丰富的营销和客户服务门户。 詹姆斯·沃德(James Ward)的博客可在http://www.jamesward.org上找到。

Shashank Tiwari是Saven Technologies的首席技术专家,该公司位于芝加哥,为银行和金融服务公司提供尖端技术驱动的业务解决方案。 Shashank是一名多产的开发人员,作家和演讲者,他是JCP的积极成员,是以下274、283、299、301和312等JSR的专家组成员。他积极地使用至少十二种语言进行编程,包括Java,ActionScript。 ,Python,Perl,PHP,C ++,Groovy,JavaScript,Ruby和Matlab。 他是O'Reilly网络上的热门博客。 如今,他正忙于使用Flex和Java构建Web 2.0应用程序。 有关他的更多信息,请访问www.shanky.org 。

翻译自: https://www.infoq.com/articles/blazeds-intro/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1

flex和blazeds

你可能感兴趣的:(网络,java,python,linux,web)