Flex2.0中有三種機(jī)制與服務(wù)器交互數(shù)據(jù):RPC(Remote precedure call), Data Service, publish-subscribe messaging
后面兩種需要Flex Enterprise Service的支持.
RPC: 發(fā)送異步請(qǐng)求到遠(yuǎn)程服務(wù),并將結(jié)果直接返回給Flex應(yīng)用.
RPC服務(wù)可以是HTTP URL, SOAP兼容的Web service, Java Web應(yīng)用的Java對(duì)象. 客戶端的RPC服務(wù)組件是HTTPService, WebService和Remoting Object.
HTTPService和WebService的使用不需要Flex Enterprise service的支持. Remoting Object必須有Flex Enterprise service的支持.
缺省情況下,Flash Player不允許跨域訪問(wèn).因此,RPC服務(wù)必須在同一個(gè)域中,或者在crossdomain.xml文件中定義.
RemoteObject組件使得可以使用服務(wù)端對(duì)象的方法, 而不需要將其配置成WebService. 你需要將服務(wù)端對(duì)象配置成遠(yuǎn)程服務(wù)目標(biāo).
WebService組件使得可以與Web Services交互. Web Services需要在WSDL文件中配置
HTTPService組件可以接收和發(fā)送HTTP GET, POST請(qǐng)求. HTTPServie在不能將接口定義為WebSerice和RemotingObject的時(shí)候,是一個(gè)非常好的選擇.
比如: JSP, Servlet, Asp等等.
Flex應(yīng)用將會(huì)被編譯成二進(jìn)制的SWF文件,送到客戶端. 當(dāng)Flex應(yīng)用與外部服務(wù)交互時(shí), SWF不需要重新編譯,也不需要再次刷新.
可以直接使用Web Services或者HTTP Services, 而不需要在服務(wù)器的文件中進(jìn)行配置. 方法如下:
在HTTPService組件中在url屬性中直接引用wsdl值, 而不使用destination屬性, 并且將useProxy屬性設(shè)置為false
<mx:HTTPService
id="yahoo_web_search"
url="
<mx:WebService
id="macr_news"
wsdl="
或者在Action Script中這樣使用:
// Import required packages.
import mx.rpc.http.HTTPService;
import mx.rpc.soap.WebService;
// Declare an HTTPService component.
private var yahoo_web_search:mx.rpc.http.HTTPService = new HTTPService();
yahoo_web_search.url =
"empoyeeHTTP.useProxy = false;
// Declare a WebService component.
private var macr_news:mx.rpc.soap.WebService = new WebService();
macr_news.wsdl = "macr_news.useProxy = false;
RPC Service組件的destination屬性引用一個(gè)Flex Enterprise Services定義的一個(gè)目標(biāo).