2011-10-17 74 views
0

我對flex中的遠程處理非常陌生。我正在使用flex 4.5,並與使用AMF的團隊中的其他人構建的Web應用程序交談。他們使用Zend_AMF來序列化和反序列化數據。Flex 4.5遠程對象

我目前面臨的主要問題之一是我需要與很多服務(約60左右)交談。

從上遠程處理的例子,我在網上看到和Adobe的,看來我需要定義各種服務的遠程對象:

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

有了這麼多的服務,我想我可能要定義有關其中60個,我認爲這不是很優雅。

與此同時,我一直在與Pinta一起玩AMF端點測試。平塔似乎能夠允許人們定義任意數量的服務,方法和參數,而沒有任何這些限制。通過挖掘源代碼,我發現他們實際上深入到遠程處理中,並且處理了很多低級別的東西。

所以,問題是,有沒有辦法解決這個問題,而不必定義負載或遠程對象,並且不必下得太深,並開始必須自己處理低級遠程事件?

乾杯

+0

「我想我可能不得不定義其中的60個,我認爲這不是很優雅。」如果情況並非如此,您使用哪些技術?在某些時候,你將不得不告訴代碼你想訪問的每個服務的細節。我不清楚你的文字如何平塔這種情況;也沒有定義Pinta解決服務的限制。 – JeffryHouser

回答

1

對於需要許多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上的一個目標,這暴露了很多方法。這種方法通常被稱爲API Facade,如果在API上有一個可靠的依賴注入規則支持,那麼它可能非常有用。

另一種常見方法是按邏輯業務領域(例如AccountService,ShoppingCartService等)分隔您的API方法。這具有能夠在服務之間混合使用&匹配協議的好處(例如,AccountService可以通過HTTPS )。

如何選擇拆分這些RemoteObjects取決於您。但是,單個應用程序中的60個對我來說聽起來有點嫌疑。