Apache flex 让Flex Web服务共享一个公共wsdl

Apache flex 让Flex Web服务共享一个公共wsdl,apache-flex,wsdl,Apache Flex,Wsdl,我有一个flex应用程序,它在运行时加载WSDL,并在我定义的几个不同web服务之间共享WSDL。不幸的是,对loadWSDL的每次调用都会产生一个网络请求,虽然缓存并不是真正的问题,但生成所有这些请求仍然很烦人和浪费。有没有一种更简单的方法来解决这个问题,并且只发出一个网络请求 我的代码目前类似于: var services:Array = ['service1', 'service2', ...] for each (var name:String in services) { var

我有一个flex应用程序,它在运行时加载WSDL,并在我定义的几个不同web服务之间共享WSDL。不幸的是,对loadWSDL的每次调用都会产生一个网络请求,虽然缓存并不是真正的问题,但生成所有这些请求仍然很烦人和浪费。有没有一种更简单的方法来解决这个问题,并且只发出一个网络请求

我的代码目前类似于:

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();
}

任何帮助都将不胜感激。

如果加载的每个WSDL的接口彼此不同,即它们具有不同的web操作,则您别无选择,只能单独加载每个接口/WSDL。它们需要缓存在客户端,以便应用程序能够键入表示Web服务的属性和函数


如果加载wsdl和客户端代码甚至没有对其调用任何东西,那么您实际上是在为自己执行dis服务。

首先,不要使用cairngorm2。这是一个可怕的框架。其次,如果每个调用都有完全相同的WSDL,为什么需要为每个调用创建新的“服务”?您只需要加载一次WSDL,服务不是在请求时自动加载吗?。看起来你是在强迫它手动操作…@J_A_X是的,我同意cairngorm很烂,但在我入侵了一堆广义类之后,它就在那里,对我有效。我没有创建新服务,只是为我定义的每个服务加载wsdl。但是,由于wsdl在运行时之前是未知的,因此您必须手动执行loadWSDL调用,因为如果您必须在actionscript中定义wsdl位置,则loadWSDL调用本身不会执行。我认为这是一个愚蠢的特性。不过我还是不明白这个问题。如果所有服务都使用相同的WSDL,为什么会有这么多服务?为什么不为相同的WSDL使用相同的Web服务,并使用命令/委托更改正在调用的操作?@J_A_X不同的Web服务有不同的方法/操作。。。将所有方法都放到一个Web服务中是糟糕的设计。。。自动生成的WSDL包含我使用的所有Web服务的数据。或者,您是否建议动态更改“服务”参数?这可能行得通,但我仍然需要一个包含所有内容的大型基本服务,我觉得当它尝试验证每个op属于指定服务时,无论如何都会引发异常。同样,如果webservice WSDL完全相同,为什么不使用命令/委托来抽象服务并调用不同的方法呢。你现在做的是糟糕的设计。