2008-10-30 77 views
7

我一直在使用Flex一段时间,并没有使用远程处理。目前,我的应用程序使用生成用于数据绑定的xml的web服务。Flex - Remoting与HTTPService - 什么时候使用?

在这个用例中使用远程处理通过xml webservice会有什么好处?当我选择通过web服务进行远程访问时,是否有一个通用指南?

为什么我要使用远程处理?

我已经下载http://www.fluorinefx.com/,但还没有做任何真正的修修补补......

感谢。

回答

4

亲自说说我使用远程处理,因为我更喜欢AMF到SOAP/XML,这是因为速度和数据包大小的简单原因。

特德在XML中对AMF的相对优点商量好了here

要考虑的事情是你必须已经到位的服务器上,您认为您的客户所在的未来。你是否期望替换或扩展你的客户?如果是,那么Web服务是一个很好的架构选择。如果您在短期/中期内致力于Flex,那么您可以通过AMF3与您的Web服务进行远程处理,从而取得更好的性能。

P.S.我曾经有一个链接到一个非常好的站点,它有对AMF和SOAP的相对性能的衡量 - 我会看看我能否找到并发布链接。

P.P.S. here it is,但目前似乎没有工作。

2

远程处理旨在使数据从远程服务传输到Flash或Flex应用程序变得更加简单快捷。使用远程处理时,不需要解析或反序列化从服务接收的数据。这是因为数据以本机字节码的形式发送到应用程序。

使用远程处理的一个主要原因是它比XML服务更轻量级。这是因为XML在内存方面是不好的格式,特别是对于大型数据集。 XML作为一种交换格式非常棒,但是一旦进入应用程序,由于冗长的标记和可能的空白,很可能会消耗比本地字节码中表示的值更多的内存。

+0

这在各方面都是错误的。 Flash和Java之间的Remoting表示,将Flash对象序列化为XML,并将它们传递给java服务器,然后java服务器将该XML反序列化为Java对象。本地字节码不会进入它。 – 2008-10-30 15:01:08

4

如果您仅使用客户端和主机之间的简单数据传输,则Web服务非常棒。您可以形成XML消息,将其发送到服务器并返回简单的XML消息。然后,您将其反序列化并相应地处理数据。 AS3对XML的支持非常好,您可以使用它与任何数据服务进行通信,并且您可以完全控制客户端。

Web服务崩溃的地方在于数据结构来回传递变得过于复杂,或者来回传递的不同数据结构的数量变得太大。 Remoting通过提供处理序列化的重量级框架来克服这些问题。定义你的.NET/PHP/Java或任何类,框架应该提供工具来生成等效的AS类。这样你就可以来回发送复杂的对象结构,而不需要知道数据如何被序列化。因为你不需要知道,它可以压缩结构以使其几乎不可读,甚至可以使用二进制数据,所以你也可以提高速度。

虽然Remoting不适合小规模或多种服务器协议。您必须在服务器和客户端之间同步类结构;您只能与兼容的远程服务器通信,并且该框架会增加客户端大小和复杂性的开销。

什么时候使用哪个没有正确答案。两者都有优点和缺点。作为一个经验法则,使用简单的东西和远程处理复杂的东西的Web服务(这是非常模糊的建议;)

0

如果您打算使用其他应用程序的数据(这意味着你只是其中一个前端)你可以使用XML,否则你会使用远程存储一些时间。

0

另外值得注意的是,一旦你开始进入这个领域,一个好的有线协议分析仪是无价的。专门为闪存协议编写的两个文件是CharlesService Capture。我刚刚购买了Service Capture,并对此非常满意。它还有一个很棒的“带宽模拟”工具,可以帮助我看到预装载器在低带宽连接上的表现。

马库斯

1

This is a really good live benchmark test相比之下,Web服务和HTTP服务AMF远程处理。您甚至可以下载源代码以在您自己的环境中运行此测试。

我也同意AMF远程处理在运行大型数据集时真正闪耀的一些早期文章。对于较小的数据集,您可能不会看到显着差异。