在我的Flex应用程序中获取数据的最佳方法是哪种?

Ami*_*mit 0 java apache-flex flash coldfusion blazeds

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

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

根据你的哪一个是最好的选择,即ColdFusion,BlazeDS或Java,考虑到大多数时候我将在数据库中存储大量二进制数据即音频/视频文件等这一事实?

RIA*_*tar 7

既然你是一个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");
Run Code Online (Sandbox Code Playgroud)

像这样做:

var instance = structNew();
instance["__type__"] = "path.to.MyClass";
Run Code Online (Sandbox Code Playgroud)

和ColdFusion一样快 - 或者甚至稍微快一点 - 然后是Java.

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

在此输入图像描述

然后我将AMF序列化和'typed struct'(如前所述)添加到列表中,结果如下:

在此输入图像描述

某些列名称在图形中丢失,但左侧的第二列是纯Java选项.因此,使用这种方法,CF9实际上似乎比Java更快.