【问题标题】:Which is the best way to get Data in my Flex Application?在我的 Flex 应用程序中获取数据的最佳方式是什么?
【发布时间】:2012-01-09 19:35:03
【问题描述】:

我是 Flex 开发的新手,在创建一个新的移动项目时,它会询问我是否要将其连接到某些服务器,并给了我四个选项 `ColdFusion、PHP、Java 和 blazeDS)。

我一直在 java 中工作,而不是 PHP 研究员,我会简单地选择 Java 并忽略所有其他人。但是由于效率是我当前项目中的一个重要问题,我不想冒险。

根据您的意见考虑到大部分时间我将在数据库中存储大量二进制数据(即音频/视频文件等),哪个是最佳选择,即 ColdFusion、BlazeDS 或 Java?

【问题讨论】:

  • 你的效率还是代码的执行效率?
  • 就我的效率而言,显然我会在 Java 中工作得更快,因为我知道这门语言。我对应用程序的效率很感兴趣。

标签: java flash apache-flex coldfusion blazeds


【解决方案1】:

由于您是 Java 人,您可以立即放弃 PHP 选项:它的 AMF 远程处理选项比其他 3 个要慢,而且您不想学习一门新语言。

这给我们留下了 Java、CF 和 BlazeDS,它们基本上都是 Java 的风格,并且在性能方面它们可以非常相似(如果使用正确:请参阅下文):

  • Java:最基本的选项;我认为这是 AMF 远程处理的最快选择;再加上你懂语言
  • BlazeDS:这实际上是一个 Java 服务器应用程序,允许您将消息推送到客户端;所以你也可以用Java编写;但如果您不需要添加的功能,请不要打扰
  • ColdFusion:Java 之上的“生产力层”:您是否喜欢该语言由您决定(我个人不是一个狂热的粉丝)。您必须设置一个 ColdFusion 服务器。虽然 CF 服务器的开发者版是免费的,但商业版非常昂贵(除非您使用 Railo 或 BlueDragon)。

但是你需要知道一件事。 CF 中的实例化非常昂贵——我的意思是比 Java 慢 500 倍——所以如果你有很大的列表,它绝对是一个 nono。除非您使用我几个月前遇到的技巧:您必须创建一个“结构”并为其赋予一个“__type__”属性,而不是实例化一个对象。

示例,而不是:

var instance = new path.to.MyClass();
//or
var instance = createObject("component", "path.to.MyClass");

这样做:

var instance = structNew();
instance["__type__"] = "path.to.MyClass";

ColdFusion 将与 Java 一样快 - 甚至可能稍快一些。

我有一些基准来支持这一点。此图比较了在某些语言中创建 50000 个实例所需的时间。 (我实际上是想告诉我的老板 CF 到底有多糟糕。)而 CF8(不在图表中)甚至慢了 100 倍。

然后我将 AMF 序列化和“类型化结构”(如前所述)添加到列表中,结果如下:

图形中丢失了一些列名,但左起第二列是纯 Java 选项。因此,使用这种方法,CF9 似乎实际上比 Java 更快。

【讨论】:

  • CF8 之前的 __type__ 技巧是最糟糕的。还有一些其他的 CF-AMF 实现“陷阱”。空值通常作为空字符串返回...特别是日期,这会导致 Flex 实例化一个我宁愿为空的空白日期。有时,布尔值作为字符串“false”返回,在 Flex 中其计算结果为 true。 Javacast("null",0) 解决了这两个问题,但仍然很痛苦。
  • 哇!你要么有一个很好的来源,要么有很多时间在你手上:P 干得好:D
  • @PranavHosangadi 我刚才没有做基准测试你知道的。实际上,一旦需要修复,我就有一个巨大的性能问题,所以我必须确定哪个是最快的选择。
  • 即便如此,很好的答案,如果我能更多地投票,我会:)
  • 感谢您提供如此出色的选择..我认为 Java 将是最佳选择..我还将使用 BlazeDS 的一些功能....
【解决方案2】:

我从事 Flex -> ColdFusion 已有好几年了,虽然我有时对 ColdFusion 编码感到沮丧,但它对于处理 Flex 应用程序的后端非常有用。也就是说,我还使用带有 ColdFusion 和 Flex 的 BlazeDS 来支持(推送)几个客户端中的消息传递。

最终,我认为 ColdFusion(尤其是使用开源 CFML 服务器 Railo)是 Flex 应用程序的出色后端(即数据提供者)。

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 2013-08-25
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多