BlazeDS Livecycle Data Services 能做什么,PyAMF 或 RubyAMF 不能做?
我正在进行一个技术评估,主要关注AMF与不同后端的整合,比如Rails、Python、Grails等等。
现在有很多选择,问题是,Adobe的产品(比如BlazeDS等)和像RubyAMF或pyAMF这样的工具有什么不同呢?
4 个回答
Adobe有两个产品:Livecycle Data Services ES(LCDS)和BlazeDS。BlazeDS是LCDS的一部分功能,并且是开源的。不过,NIO通道(RTMP NIO/HTTP)和数据管理功能只在LCDS中实现,而BlazeDS没有这些功能。
BlazeDS主要用于将Flex和Java后端结合起来。它不仅提供使用AMF序列化的远程服务(类似于RubyAMF),还提供消息传递和协作功能——你可以查看这个链接了解更多信息(http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=lcoverview_3.html)。而且我觉得它的支持服务比RubyAMF和pyAMF要好。
如果你的后端是JAVA,并且你只想使用免费的产品,你还可以选择GraniteDS或WebORB(它们是BlazeDS的竞争对手)。
这里提到的LCDS的数据管理功能确实是有效的,但我觉得它并不能让你更快地开发解决方案。开发者仍然需要编写所有的数据访问代码、查询执行代码,以及从数据读取器中提取数据到值对象的代码。这些问题其实已经被很多代码生成器解决过很多次了。举个例子,WebORB在Java中的数据管理方法(和WebORB在.NET和PHP中的方法类似)是基于代码生成的,它可以为客户端和服务器端都生成代码。你可以通过代码生成器获得所有的ActionScript API,来实现完整的增删改查功能。
另外,WebORB还提供视频流和实时消息功能,远远超过了BlazeDS和LCDS的组合,尤其是考虑到这个产品是免费的。你只需要在网上搜索一下就能找到更多信息。
除了NIO (RTMP) 通道,LCDS还包括“数据管理”功能。
使用这个功能,你基本上是在一个ActionScript类中实现一个类似CRUD的接口,这个接口是LCDS定义的,你可以得到:
- 自动逐步加载列表(大列表或数据网格在滚动时会自动加载)
- 自动管理CRUD(你可以在Flash中本地获取对象,修改它,然后发送回去,数据库会自动更新)
- 解决冲突的功能(如果多个用户同时尝试更新同一条记录)
- 如果我没记错的话,还有与LiveCycle ES工作流引擎的更好集成
在我看来,这种方式开发起来非常快,但前提是你的需求比较简单,架构也简单(别想什么服务导向架构,虽然它和Flex配合得很好)。我对BlazeDS也很满意。