有人有评估 BlazeDS 和 GraniteDS 的经验吗?我很好奇哪个更适合与 Spring/Hibernate 集成。
2 回答
如果您只是在寻找简单的 RPC 和消息传递,我会选择 Blaze。这些实现更成熟,得到了更好的证明,尤其是在消息传递方面。Granite 中的消息传递基于 Comet,并且在我记忆中仍然很新。更多详情如下...
Blaze DS 基本上是一个堆栈,其中包括 RPC 和一些基于 HTTP 的简单消息传递服务。使用 FlexFactory 的 SpringFactory 实现可以轻松实现与 Spring 的集成:只需 google 类名,您就会找到代码。它不为与 Hibernate 相关的事情提供任何额外的支持。
Granite DS 在功能方面发展迅速。与 Blaze DS 相比,它与 LCDS 的竞争更大。它包括解析 Hibernate 对象图和以干净的方式处理惰性代理的能力。他们还有一个名为“Tide”的工具,可以在 Flex 客户端中创建一个 Session 的模拟,以确保实体的唯一性。它们还明确支持通过 Spring、EJB3 和 Seam 公开的服务。Granite 还有一个实用程序,用于从您的 Java 类生成 AS3 类(尽管如果您愿意,自己编写这并不难)。
大约一年前,我与 Granite 一起工作,但在正确解析对象图时遇到了一些问题;Flash Player 会抛出一些令人讨厌的低级异常。我的猜测是文档和实现已经成熟,因此这些不再是问题。但是,我仍然有点犹豫是否推荐它,因为我遇到了问题并且切换到 Blaze 立即解决了这些问题,一点问题都没有。
关于 Cliff 评论的一些旁注:
- GraniteDS 创建于 2006 年底,大约比 BlazeDS 早一年。它广泛用于要求苛刻的生产环境,至少可以认为比 BlazeDS 成熟和成熟。
- GraniteDS 消息传递是在 1.0 版本中引入的(2007 年末,在第一个 BlazeDS 版本发布几周后),它现在非常成熟,并且在要求苛刻的生产环境中也得到了证明。
- Cliff 遇到的 Flash 播放器异常通常是由于未能在 SWF 中编译所有生成的 AS3 类引起的。只需使用 Flex 编译器选项来强制包含这些缺失的类,它们是数据图模型的一部分,在反序列化时需要,但未在 MXML/AS3 代码中显式使用。
- 大多数 GraniteDS 用户来自 BlazeDS/LCDS,因为这两个框架不能正确处理复杂的数据模型(没有或错误的延迟加载支持、糟糕的事务隔离等)
因此,恕我直言,除非您正在开发具有相当琐碎数据模型的小型应用程序,否则您应该使用 GraniteDS。