繁体   English   中英

Flex 4.5远程对象

[英]Flex 4.5 remoting objects

我对于在flex中进行远程处理非常陌生。 我正在使用flex 4.5,并与团队中其他人使用AMF构建的Web应用程序进行通讯。 他们使用Zend_AMF来序列化和反序列化数据。

我目前面临的主要问题之一是,我需要与很多服务(大约60项左右)进行交流。

从网上看到的远程处理示例和Adobe看来,似乎需要为每个服务定义一个远程处理对象:

<mx:RemoteObject id="testservice" fault="testservice_faultHandler(event)" showBusyCursor="true" destination="account"/>

有这么多服务,我想我可能必须定义其中的60个,我认为这不是很优雅。

同时,我一直在与Pinta一起测试AMF端点。 Pinta似乎可以允许定义任意数量的服务,方法和参数,而没有任何这些限制。 深入研究源代码,我发现他们实际上已经深入到了远程处理中,并且正在处理许多底层内容。

因此,问题是,有没有一种方法可以解决此问题而不必定义负载或远程对象,而不必深入研究并自己开始处理低级远程处理事件?

干杯

对于一个应用程序来说,需要那么多RemoteObjects似乎很不寻常。 我已经在超大型应用程序上进行过工作,并且最终通常只用不超过6-10个RemoteObject声明即可。

尽管您没有在文章中提供有关RemoteObjects变体的很多细节,但我怀疑您可能会将RemoteObjectOperation混淆了。

通常,您为应用程序中的每个端点声明一个RemoteObject实例。 但是,该端点可以(并且通常确实)公开许多要调用的方法。 这些服务器端方法中的每一个都在客户端Operation获得结果。

如果愿意,可以显式声明它们,但是,如果不声明它们,RemoteObject会为您构建Operation

 var remoteObject:RemoteObject;
 // creates an operation for the saveAccount RPC call, and invokes it, 
 // returning the AsyncToken
 var token:AsyncToken = remoteObject.saveAccount(account); 
 token.addResponder(this); 
  //... etc

如果您正在与单个服务器层进行交互,则通常可以使用单个RemoteObject来指向API上的单个目标,该方法公开了许多方法。 这种方法通常被称为APIFaçade,如果在API上具有扎实的依赖项注入准则,则该方法非常有用。

另一种常见的方法是按逻辑业务区域(例如AccountService,ShoppingCartService等)分隔API方法。这样做的好处是能够在服务之间混合和匹配协议(例如AccountService可以在HTTPS上运行)。

您如何选择拆分这些RemoteObjects由您决定。 但是,在一个应用程序中有60个听起来让我有些怀疑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM