8

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

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

但是,似乎 AMFPHP 不再真正维护了。那么人们建议用什么来代替它呢?到目前为止,我发现的是:

  1. Zend_AMF(对我们来说看起来太复杂了,否则我们没有使用 Zend 框架)
  2. AMFPHP(有一些支持 Flex 的更新,看起来相当稳定,但不确定是否长期支持)
  3. XML(AS3 有很好的 XML 处理例程,但它在 PHP 方面更痛苦)
  4. WebORB(我没有这方面的经验)
  5. 使用 JSON 或其他一些数据到文本的序列化系统(php 的 serialize()、XML 等)自行滚动

大多数情况下,我倾向于 AMFPHP,即使是因为它的缺点,因为那是我习惯的。有什么理由我应该考虑改用其他东西吗?

4

12 回答 12

8

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

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

如您所知, AMFPHP的一些开发人员转而从事 ZendAMF 工作。所以从某种意义上说,ZendAMF 是 AMFPHP 的延续。

于 2009-03-19T15:22:09.677 回答
2

ZendAMF 不错的短读 - http://theflashblog.com/?p=441

对我来说,这不是明智之举。Zend 框架是目前最好的 php 框架之一,现在您可以与 Flash 客户端对话。最重要的是 Adob​​e 支持,这在我的书中已经完成。

备择方案 :

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

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

于 2009-03-19T07:02:23.130 回答
1

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

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

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

因此,我的应用程序的通信层是一个简单的 Zend Framework 支持的 REST 资源集,其 URI 如下

user/10
review/15
location/8/reviews

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

于 2009-03-16T21:05:10.640 回答
1

如果您不使用 Zend 之类的框架,那么常规的 ol AMFPHP 仍然很棒,如果没有其他原因,它很简单。我想如果你觉得舒服,为什么不去呢?这些 AMF 接口的作用在于,它们真的不需要做太多事情,而 AMFPHP 在类映射、记录集解析成 ArrayCollection、出色的性能方面确实有什么……它甚至可以很好地处理 XML,因为它被压缩了。与 Charles 结合的服务浏览器也覆盖了我。

我无法理解 ZendAMF 工作与原始 AMFPHP 之间的关系。虽然我可以挖掘,但我只是说在关注 Nabble 上的 AMFPHP 邮件列表,阅读 Wade Arnold 的博客时......这并不完全清楚。

于 2009-03-20T04:32:00.853 回答
1

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

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

于 2009-03-23T06:44:12.243 回答
1

此链接是一个截屏视频,展示了如何使用 WebORB for PHP WDMF(WebORB Data Management for Flex)。

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

于 2010-03-18T14:37:46.050 回答
0

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

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

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

如果您想要 100% 的未来“支持”,那么我会推荐根本不需要任何支持的东西:XML。

于 2009-03-16T21:02:54.047 回答
0

使用SimpleXML可以使 PHP 上的 XML 简单得多。

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

于 2009-03-20T20:06:13.043 回答
0

我肯定会选择 WebORB。我在以前的工作中将它与 .NET 一起使用,使用它进行编码是一种乐趣。它的易用性和经过深思熟虑的管理控制台使其学习速度非常快,并且它的文档非常完整;我知道留在 AMF 是很诱人的,因为它是您已经知道的,但我相信尝试 WebORB 是值得的。

看看这个使用 PHP 生成 Actionscript 的截屏视频,它非常漂亮。

干杯。

于 2009-03-23T13:25:01.563 回答
0

PHP 有一个相当不错的serialize()功能,所以对于我最近做的一个项目(游戏的高分),我使用了 Sephiroth 的Serializer。它使 Flash 方面的序列化几乎与 PHP 中的序列化一样容易。序列化器还处理 AMF 之类的数据类型(与 json/xml 不同)。

缺点——它不如 AMF 紧凑,但这不是 gzip 压缩无法处理的。

于 2009-03-25T15:42:07.113 回答
0

AMF 具有相当的情境优势。如果您要传输大型复杂对象,请务必使用 AMF。但人们对 AMF 在传输小物体时所带来的开销知之甚少。如果您只传输具有 3 个属性的对象,则使用 AMF 可以使您的有效负载大小增加三倍。

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

于 2011-03-30T01:22:17.210 回答
-2

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

如果您想要快速、高效和通用的通信,请使用 json。然后,您的 Web 服务将可用于 flash、ajax 或常规 http 请求。

于 2009-03-19T18:08:53.347 回答