[英]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变体的很多细节,但我怀疑您可能会将RemoteObject
与Operation
混淆了。
通常,您为应用程序中的每个端点声明一个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.