我使用 Flex 已经有一段时间了,到目前为止还没有使用过远程处理。目前,我的应用程序使用生成用于数据绑定的 xml 的 web 服务。
在这个用例中,通过 xml web 服务使用远程处理有什么好处?当我应该选择远程处理而不是 Web 服务时,是否有一般准则?
为什么我要使用远程处理?
我已经下载了http://www.fluorinefx.com/,但还没有做任何真正的修补......
谢谢。
我使用 Flex 已经有一段时间了,到目前为止还没有使用过远程处理。目前,我的应用程序使用生成用于数据绑定的 xml 的 web 服务。
在这个用例中,通过 xml web 服务使用远程处理有什么好处?当我应该选择远程处理而不是 Web 服务时,是否有一般准则?
为什么我要使用远程处理?
我已经下载了http://www.fluorinefx.com/,但还没有做任何真正的修补......
谢谢。
如果您只在客户端和主机之间使用简单的数据传输,那么 Web 服务非常有用。您形成 XML 消息,将其发送到服务器并返回一个简单的 XML 消息。然后你反序列化它并相应地对数据采取行动。AS3 对 XML 的支持非常出色,您可以使用它与任何数据服务进行通信,并且您可以完全控制客户端。
当来回传递的数据结构变得过于复杂,或者来回传递的不同数据结构的数量变得太大时,Web 服务就会崩溃。Remoting 通过提供一个为您处理序列化的重量级框架克服了这些问题。定义您的 .NET/PHP/Java 或任何类,框架应提供生成等效 AS 类的工具。这样您就可以来回发送复杂的对象结构,而无需知道数据是如何被序列化的。因为你不需要知道,它可以压缩结构使其几乎不可读,甚至可以使用二进制数据来提高速度。
远程处理不适合小规模或各种服务器协议的东西。您必须在服务器和客户端之间同步类结构;您只能与兼容的远程服务器进行通信,并且该框架会增加客户端大小和复杂性的开销。
关于何时使用哪个,没有正确的答案。两者都有优点和缺点。不过,根据经验,对简单的东西使用 Web 服务,对复杂的东西使用远程处理(这是非常模糊的建议;)
就个人而言,我使用远程处理是因为我更喜欢 AMF 而不是 SOAP/XML,原因很简单,因为速度和数据包大小。
Ted 在此处对 XML 与 AMF 的相对优点进行了很好的讨论
需要考虑的是您在服务器上已有的内容以及您认为客户的未来所在的位置。您是否预计更换或扩展您的客户?如果是,那么 Web 服务是一个很好的架构选择。如果您在短期/中期承诺使用 Flex,那么您可能能够从使用 AMF3 的远程处理与您的 Web 服务中获得更好的性能。
PS 我曾经有一个链接到一个非常好的站点,它测量了 AMF 和 SOAP 的相对性能 - 我会看看我是否能找到它并发布一个链接。
PPS在这里,但目前似乎不起作用。
远程处理旨在使数据从远程服务传输到 Flash 或 Flex 应用程序更容易和更快。使用远程处理时,无需解析或反序列化从服务接收到的数据。这是因为数据是以本机字节码发送到应用程序的。
我使用远程处理的主要原因之一是它比 XML 服务更轻量级。这是因为 XML 在内存方面是一种糟糕的格式,尤其是对于大型数据集。XML 作为一种交换格式非常棒,但是一旦进入您的应用程序,由于冗长的标签和可能的空白,很可能会比以本机字节码表示的值消耗更多的内存。
这是一个非常好的实时基准测试,将 AMF 远程处理与 Web 服务和 HTTP 服务进行比较。您甚至可以下载源代码以在您自己的环境中运行此测试。
我也同意之前的一些帖子,即当您运行大型数据集时,AMF 远程处理确实会大放异彩。对于较小的数据集,您可能不会看到显着差异。
另外值得注意的是,一旦您开始进入这个领域,一个好的有线协议分析器是无价的。专门为闪存协议编写的两个是Charles和Service Capture。我刚刚购买了 Service Capture,并且对它非常满意。它还有一个很棒的“带宽模拟”工具,有助于查看我的预加载器在较低带宽连接上的外观。
马库斯
如果您打算在其他应用程序上使用数据(意味着您的只是几个前端之一),您可以使用 XML,否则您将通过使用远程处理节省一些时间。