使用<s:remoteobject>和<s:webservice>调用ColdFusion Web服务会有不同的性能吗?</s:webservice> </s:remoteobject>

时间:2011-01-22 21:39:25

标签: flex web-services coldfusion

假设调用相同的ColdFusion Web服务且所有其他因素相同,使用以下两个标记之间的性能/速度是否存在差异?

 <s:RemoteObject id="MyService" destination="ColdFusion" source="MyWSFolder.MyService"/>

<s:WebService id="MyService" wsdl="http://www.myDomain.com/MyWSFolder/MyService.cfc?wsdl"/>

提前致谢,

2 个答案:

答案 0 :(得分:1)

您如何量化表现?

WebService标记用于调用SOAP WebService。 SOAP请求非常冗长,导致大量数据来回传递,而不是使用AMF。如果使用WebService,您还必须在Flex客户端中编写解析代码以使数据有用。

RemoteObject标记用于通过Flash Remoting网关进行AMF调用。 AMF是一个二进制文件,并且已经证明可以为服务器和Flash之间的数据传输提供更小的文件大小。 AMF还提供了一些内置的服务器端数据类型(CFC)到客户端数据类型(AS3对象)的转换。

您应该查看James Ward's census application以进行一些性能比较。

如果您使用ColdFusion作为后端,那么在Flex前端使用WebService而不是RemoteObject是愚蠢的。我需要使用您的服务支持SOAP客户端,可以使用相同的CF代码将SOAP Web服务公开为RemoteObject接口,而无需更改任何代码。

答案 1 :(得分:0)

如果我没记错的话(并且你想确认这一点,因为我可能错了),WebService专门设计用于在SOAP上使用HTTP。它就像一个严格类型的HTTPRequest。

但是,RemoteObject使用AMF进行​​传输 - 这意味着你不是来回发送标题,你实际上是在创建一个二进制流,无论你传输什么。如果我没记错的话,这应该会快得多。我倾向于随时使用RemoteObject而不是WebService,因为那时我不需要乱用SOAP。另外,使用RemoteObject,您可以进行类映射,例如,您有从PHP返回的强类型值对象,您的应用程序可以准确知道数据符合的时间。