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