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

时间:2011-11-30 15:09:38

标签: java flash flex coldfusion blazeds

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

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

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

2 个答案:

答案 0 :(得分:7)

由于您是Java人员,您可以立即删除PHP选项:其AMF远程处理选项比其他3选项慢,并且您不想学习新语言。

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

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

但是你需要知道一件事。 CF中的实例化是非常昂贵的 - 我的意思是比Java慢500倍 - 所以如果你有大的列表它肯定是nono。除非你使用我几个月前碰到的技巧:不是实例化一个对象,你必须创建一个'struct'并给它一个'__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倍。

enter image description here

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

enter image description here

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

答案 1 :(得分:1)

我一直在做Flex - > ColdFusion好几年了,虽然我有时会对编写ColdFusion感到沮丧,但它对于处理Flex应用程序的后端非常有用。也就是说,我还使用BlazeDS与ColdFusion和Flex在几个客户端中提供(推送)消息。

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