BlazeDS是一个基于服务器的Java远程调用(remoting)和Web消息传递(messaging)技术,使得后台的Java应用程序和运行在浏览器上的Flex应用程序能够相互通信
一个BlazeDS应用包括两个部分:一个客户端应用程序和一个服务器端的J2EE程序,架构如下图:
(1) 客户端程序
①客户端简介:
BlazeDS 客户端程序通常是一个Flex或AIR 应用程序。Flex 和AIR程序使用Flex 组件和BlazeDS 服务器通讯,包括RemoteObject,HTTPService,WebService,Producer和Consumer组件,HTTPService, WebService,,Producer和Consumer 组件都是Flex SDK 的一部分
尽管通常使用Flex 或AIR 开发客户端程序,但也可联合使用Flex,HTML,JavaScript技术。或者用HTML和JavaScript通过Ajax client library与BlazeDS 通讯。
②客户端体系结构:
Blazeds使用一个基于消息的框架与服务端结合。这个框架使用通道封装了Flex程序和Blazeds服务端之间的连接。下面是Blazeds客户端的结构
(2) BlazeDS服务端
① 服务器端简介:
Blazeds服务运行在一个J2EE的应用服务器中。为你的J2EE Web程序配置Blazeds支持:
1. 加入Blazeds和其他需要的jar包
2. 编辑WEB-INF/flex目录下的配置文件
3. 在web.xml文件中定义MessageBrokerServlet anda session listener。
② 服务器端体系结构:
服务就是一个包含J2EE Web应用程序的应用。Flex客户端通过通道发送请求到Blazeds服务的端点上。从端点开始,请求经过一些列的Java对象包括消息传播对象、服务对象、目标对象以及最终的适配器对象。适配器将请求实现为本地的、或者contacting a backendsystem或者远程服务例如JMS服务。下面展示了Blazeds服务体系
(3) BlazeDS核心功能
BlazeDS 核心功能包括RPC Services和Messaging Service。
Blazeds使用基于消息的框架在客户端和服务端之间发送和返回数据。Blazeds在它们之间使用了两个交换模式。第一个模式是请求---响应模式,客户端发送请求给服务端处理。服务端返回处理结果给客户端。RPC Service就是使用这个模式。
第二个模式是发布—订阅模式,即服务端发布消息设置,客户端订阅了去接收它们。Messaging Service使用这个模式将数据推给“感兴趣“的客户端。Messaging Service同样使用求/响应模式来解决一些发布消息、数据交换等问题。
① RPC Services
远程程序调用(RPC)服务是应用程序访问外部数据的比较好的方法,通过调用、返回的形式。RPC允许客户应用程序异步请求远程程序,处理请求后直接返回给客户端。你可以通过HTTP GET or POST (HTTPservices), SOAP (web services), 或者 Java objects(remoteobject services)等RPC组件直接访问数据。
如果你想通过使用RPC Services提供一些企业级功能,如不同域之间数据交换的代理功能、客户端认证、服务器端日志、本地化支持、RPC Services服务集中化管理等功能时,BlazeDS通过使用RemoteObject控件可以轻松实现,而不需要配置他们像SOAP- compliant网络服务。
当客户端RPC控件调用远程服务时。这个控件将返回的数据储存到一个ActionScript对象,你可以轻易的获得这些数据。注意:HTTP services和web services可以直接使用,不包括Blazeds,但是RemoteObject不能脱离Blazeds或者ColdFusion.
②Messaging Service。
消息服务允许客户端应用异步的直接发送消息到服务器以及返回。消息定义的格式是:一个唯一的标识,Blazeds头,其他自定义头,一个消息体。
客户端发送消息就是消息生产者(producers)。在Flex应用中通过使用Producer控件来定义一个producer。客户端接收消息就是消息消费者(consumer),使用Consumers组件。Consumer控件负责订阅和接收服务器端某一个目的地的消息,Producer控件发送消息到这个目的地。
(4) BlazeDS的通道和端点
客户端使用通道发送消息给服务端。通道封装了消息的格式、网络格式、服务端解析方式、目的和应用代码。通道封装以及转换信息,并且传达他们到服务端的一个端点。
通道同样使得发送和返回的消息变得有序。有序对保证数据传送的一致性和可预见性起到重要的作用
在服务器端,通道是与基于Java的端点发生交换的,端点负责解析消息成特定的协议模式,然后把它传送给普通Java形式的“消息代理人”(Message Broker),最终由消息代理人决定该消息发往何处,路由给恰当的目的地。
Blazeds包括几个特殊的通道,包括标准的和加密的AMF通道。HTTP(AMFX)通道。AMF和HTTP通道都支持无轮询的请求/响应模式以及客户轮询模式来模拟实时通信,而AMF和HTTP流通道模式提供了真正的数据流实时模式。
参考文献:
http://www.cnblogs.com/xia520pi/archive/2012/05/26/2519343.html
http://hi.baidu.com/prince_zyb/item/fc797bd65026d0856cce3f14
http://bhsc-happy.iteye.com/blog/320209