Flex到PHP通信的最佳方法?

时间:2009-03-16 20:57:53

标签: php xml flex amfphp weborb

Flex和PHP之间进行通信的最佳方法是什么?

过去,我们将AMFPHP与AS2一起使用,并且它在大多数情况下都很有用(AMFPHP的优势在于它还具有JSON模式,可以让您使用Javascript或Actionscript前端无缝地使用相同的远程PHP)

然而,似乎AMFPHP似乎不再被重新维护。那么人们建议更换它呢?到目前为止,我发现的是:

  1. Zend_AMF (对我们来说太复杂了,否则我们不会使用Zend框架)
  2. AMFPHP (有一些更新是为了支持Flex,它似乎相当稳定,但对长期支持不确定)
  3. XML (AS3有很好的XML处理例程,但它在PHP方面更加困难)
  4. WebORB (我对此没有经验)
  5. 使用JSON或其他一些数据到文本的序列化系统(php的序列化(),XML等)自行滚动
  6. 大多数情况下,我倾向于AMFPHP,即使是因为缺点,因为这是我习惯的。我应该考虑转换到其他什么原因吗?

12 个答案:

答案 0 :(得分:8)

如果您想进行快速有效的沟通,我强烈建议坚持使用AMF protocol而不是REST或JSON自定义格式。

ZendAMF实际上并不是很混乱。观看GotoAndLearn上的介绍教程,这很简单。

你知道,AMFPHP的some of the developers开始研究ZendAMF。所以从某种意义上说,ZendAMF是AMFPHP的延续。

答案 1 :(得分:2)

ZendAMF 好短读 - http://theflashblog.com/?p=441

对我而言,这不是一件容易的事。 Zend框架是最好的php框架之一,现在你可以和Flash客户端交谈了。最好用Adobe支持,这在我的书中完成了。

替代方案:

WebORB for php http://www.themidnightcoders.com/products/weborb-for-php

AMFPHP http://www.amfphp.com 如果您阅读上面的网址,您可能会知道为什么这不再是我的关注。

答案 2 :(得分:1)

我不能告诉你什么是最好的(因为这可能有点主观),但我能做的就是告诉你我最近的一个项目。

由于这是一个非常丰富的Web应用程序,并且对服务器的数据请求频繁,我想确保请求的大小尽可能小。这意味着选择JSON作为格式。

接下来,由于应用程序的性质以及我的flash / flex开发人员距离1000英里的事实,我需要一个简单且无状态的API。这最终导致我们进入HTTP + REST。

因此,我的应用程序的通信层是一个简单的Zend Framework驱动的REST资源集,其中包含URI,如

user/10
review/15
location/8/reviews

他们都返回JSON。所有错误都有一个通用的JSON格式(异常被捕获并转换为JSON对象),以便flash客户端可以轻松处理故障。

答案 3 :(得分:1)

如果你没有使用像Zend这样的框架,那么常规的AMFPHP仍然很棒,如果没有其他原因那么简单。我想如果你对它感到满意,为什么不去寻找呢?关于这些AMF接口的作用是它们真的不需要做太多,AMFPHP在类映射,记录集解析到ArrayCollection中具有什么,性能很好......它甚至可以很好地处理XML,因为它被压缩了。与Charles结合的服务浏览器也覆盖了我。

我无法理解ZendAMF的努力与原始AMFPHP的关系。虽然我可以挖掘,但我只是在跟随Nabble的AMFPHP邮件列表,阅读Wade Arnold的博客......这还不完全清楚。

答案 4 :(得分:1)

您应该考虑使用Zend AMF。 Zend框架旨在成为一个挑选框架,因此为您的应用程序选择单个组件(在本例中为Zend AMF)是完全可以的。

Zend AMF非常易于使用。您所要做的就是指定要公开的函数/类,并指定到操作脚本类的类映射。其他一切都非常透明。

答案 5 :(得分:1)

此链接是一个截屏视频,展示了如何将WebORB用于PHP WDMF(FlexOR的WebORB数据管理)。

http://www.themidnightcoders.com/products/weborb-for-php/developer-den/screencasts/weborb-data-management-for-flex-and-php.html

答案 6 :(得分:0)

在涉及Flash和PHP后端的所有项目中,我使用过AMFPHP或XML请求。

AMFPHP确实简化了了解应用程序的未来维护,尽管它将整个事情与特定技术联系起来,并在服务器端增加了一些额外开销 - 创建所有需要的类。

根据XML,你在这里获得的是标准的REST Web服务,它不依赖于Flash(例如,你也可以从桌面应用程序中提取数据,而使用JSON或依赖于浏览器的任何其他技术)不允许这样做。)

如果你想要100%的未来“支持”,那么我建议根本不需要任何支持:XML。

答案 7 :(得分:0)

使用SimpleXML

,PHP上的XML可以简单得多

我只是使用JSON作为针对PHP api的简单调用的返回。

答案 8 :(得分:0)

我肯定会去WebORB。我在以前的工作中使用过.NET,并且编写代码很开心。它的易用性和精心设计的管理控制台使其学习起来非常快,而且其文档非常完整;我知道继续使用AMF是很诱人的,因为这是你已经知道的,但我相信值得尝试一下WebORB。

使用PHP查看这个用screencast生成的Actionscript,这非常有趣。

干杯。

答案 9 :(得分:0)

PHP有一个非常好的serialize()函数,所以对于我最近的一个项目(游戏的高分),我使用了Sephiroth的Serializer。它使Flash端的序列化几乎和PHP一样简单。 Serializer还处理数据类型(与json / xml不同),如AMF。

下行 - 它不像AMF那么紧凑,但这并不是gzip压缩无法处理的。

答案 10 :(得分:0)

AMF具有非常优势。如果您想要传输大型复杂的Object,请务必使用AMF。但是,当你转移小物体时,人们很少知道AMF带来的开销。如果您只传输具有3个属性的对象,则使用AMF可以使有效负载大小增加三倍。

另一方面,我是RESTful架构的大力倡导者。由于JSON和AMF都只是表示,因此您可以构建一个接受这两者的R​​EST服务,并在运行时与客户端协商实际表示。

答案 11 :(得分:-2)

“如果您想进行快速有效的沟通,我强烈建议您坚持使用AMF协议”

如果你想要一个快速,高效,通用的沟通,请选择json。然后,您的Web服务将可用于flash,ajax或常规http请求。