2011-08-03 21 views
0

我有一個flex應用程序,它在運行時加載一個WSDL,並在我定義的幾個不同的web服務之間共享它。不幸的是,每個撥打loadWSDL()的電話都會發出網絡請求,雖然由於緩存而不是真正的問題,但仍然會產生所有這些請求,令人討厭和浪費。有沒有更簡單的方法來解決這個問題,只有一個網絡請求?讓Flex WebServices共享一個共同的wsdl

我的代碼是目前這樣的:

var services:Array = ['service1', 'service2', ...] 
for each (var name:String in services) { 
    var s:WebService = ServiceLocator.getInstance().getService(name) as WebService; 
    s.wsdl = wsdl; 
    s.loadWSDL(); 
} 

任何幫助將不勝感激。

+0

首先,*不要使用cairngorm2 *。這是一個可怕的框架。其次,如果每個調用的WSDL完全相同,爲什麼還需要爲每個調用創建一個新的「服務」?您只需要加載一次WSDL(服務沒有在請求中自動執行該操作?)。好像你迫使它手動完成它... –

+0

@J_A_X是的,我同意cairngorm爛,但它是那裏,併爲我工作後,我砍了一堆廣義的類。我沒有創建新的服務,只是爲我定義的每個服務加載wsdl。但是由於直到運行時才知道wsdl,所以必須手動執行loadWSDL()調用,因爲如果必須在actionscript中定義wsdl位置,它本身不會執行此操作。我認爲愚蠢的特徵。 – Kevin

+0

我仍然沒有得到這個問題。爲什麼你有這麼多的服務,如果他們都使用相同的WSDL?爲什麼不爲相同的WSDL擁有相同的WebService,並改變使用命令/委託調用的操作? –

回答

0

如果加載的每個WSDL的接口彼此不同(即它們具有不同的Web操作),那麼除了單獨加載每個接口/ WSDL之外別無選擇。它們需要緩存在客戶端,這樣你的應用程序纔有辦法輸入代表Web服務的屬性和函數。

如果你加載了一個wsdl,而你的客戶端代碼甚至沒有調用任何東西,那麼你真的會對自己做一個解除服務。