3.1 LiveCycle Data Services ES 客户端架构

1 篇文章 0 订阅

 LiveCycle Data Services ES(以下简称LCDS),是Adobe公司提供的用于开发使用Flex作为前端,JAVA作为后端的中间组件。它不是免费的,但有一个开源版本 BlazeDS,同样是Adobe提供,只不过小一部分功能。 以下文字是我对LCDS2.6开发文档中的第3章关于LCDS客气端架构的翻译,译文不保证100%准备。

 

  LCDS客户端使用由LCDS提供的基于消息的(message-based)框架与服务器交互。该基于消息的框架在客户端是通道(channels),通道封装了Flex客气端和LCDS服务端之间的连接行为。通道被分组并组成通道集,目的是通道搜索和通道容错。下图展示了LCDS客户端架构:

 LCDS Client Arch

Flex组件

   下列Flex组件与LCDS服务端交互:

  •       RemoteObject
  •       HTTPService
  •       WebService
  •       Producer
  •       Consumer
  •       DataService

   除了DataService组件之外,其它所有组件都包含在Flex SDK中的rpc.swc组件库中。DataService组件包含在LCDS安装提供的fds.swc组件库中。

    尽管RemoteObject,Producer和Consumer这三个组件包含在Flex SDK中,但它们需要有服务端才能解释各自发送的消息。BlazeDS和LCDS服务端就是两种这样的服务端。Flex应用程序同样可以直接利用HTTP服务或WEB服务调用远程服务,并不一定需要LCDS这样的中间层。但是,通过LCDS来代理这些服务以得到一些好处是有一些理由的。

    客户端的组件通过发送和接收正确类型的消息来与LCDS服务端通信。

 

通道和通道集(channel sets)

    Flex组件使用通道与LCDS服务端通信。一个通道集包含一些通道。通道的主要功能是提供Flex客户端和LCDS服务端的连接。通道集中的通道根据优先顺序排列。Flex组件首先尝试连接通道集中的第一个通道,如果这个通道不能建立连接的话就尝试通道集中的下一个通道。Flex组件按指定的顺序尝试连接通道,直到有一个能建立连接或所有的通道都用完。

  通道封装了Flex组件和LCDS服务端的连接行为。概念上,通道是Flex组件下的标准,它们处理Flex客户端和LCDS服务端的通信。通道与相应的在LCDS服务端上的端点(endpoints)通信。

   Flex客户端可以使用几种不同的通道,像AMFChannel,HTTPChannel和RTMPChannel。通道的选择由一些因素判定,包括你正在建立的应用程序的类型。例如,如果你的应用环境只允许使用HTTP协议,你只能使用AMFChannel或HTTPChannel,你不能采用使用RTMP协议的RTMPChannel。如果没有传输二进制数据的需要,你可以使用HTTPChannel,它使用被称为AMFX(AMF in XML)的非二进制格式。

 

消息

    所有Flex客户端和LCDS之间的通信都通过消息执行。Flex组件使用若干消息类型与LCDS中对应的服务通信。所有的消息都有客户端(ActionScript)实现和服务端(Java)实现,因为消息在客户端和服务端都被序列化和反序列化。你同样可以直接用Java创建消息并用服务端推的API把消息传递到客户端。

   一些消息类型,如确认消息(AcknowledegMessaget)和命令消息(CommandMessage),在不同的Flex组件和LCDS服务端都被使用。其它消息类型只在特定的Flex组件中使用或只在服务端使用。例如,一个Producer组件发送消息给订阅了该消息的Consumer组件,你建立一个AsyncMessage消息,并传递给Producer组件的send()方式。

   还有其它情况,你不用写代码创建和发送消息。例如,你只是使用RemoteObject组件在Flex程序中调用远程方法。RemoteObject组件创建远程消息(RemotingMessage)封装RemoteObject调用。作为回应它从服务端接受确认消息(AcknowledegMessaget),它封装在Flex应用程序中的ResultEvent中。

   有时候你必须创建消息并发送给服务端。例如,你必须发送一个AsyneMessage消息并传递给Producer。

   LCDS使用两种模式发送和接受消息:请求/应答模式和发布/订阅模式。RemoteObject,HTTPService和WebService组件使用请求/应答消息模式,Flex组件生成一个请求并接受一个该请求的应答。Producer和Consumer组件使用发布/订阅消息模式,这个模式中,Producer发布一个消息给LCDS服务端定义的终点(destination)。所有订阅了该终点的Consumer都会收到该消息。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值