云自无心水自闲

天平山上白云泉,云自无心水自闲。何必奔冲山下去,更添波浪向人间!
posts - 288, comments - 524, trackbacks - 0, articles - 6
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Flex中的RPC Services

Posted on 2006-03-01 01:16 云自无心水自闲 阅读(1681) 评论(0)  编辑  收藏 所属分类: Flex

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, 而不需要在服务器的文件中进行配置. 方法如下:
在HTTPService组件中在url属性中直接引用wsdl值, 而不使用destination属性, 并且将useProxy属性设置为false
<mx:HTTPService
id="yahoo_web_search"
url="http://api.search.yahoo.com/WebSearchService/V1/webSearch"
useProxy="false"/>

<mx:WebService
id="macr_news"
wsdl="http://weblogs.macromedia.com/mxna/webservices/mxna2.cfc?wsdl"
useProxy="false"/>

或者在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 =
"http://api.search.yahoo.com/WebSearchService/V1/webSearch";
empoyeeHTTP.useProxy = false;

// Declare a WebService component.
private var macr_news:mx.rpc.soap.WebService = new WebService();
macr_news.wsdl = "http://weblogs.macromedia.com/mxna/webservices/mxna2.cfc?wsdl";
macr_news.useProxy = false;

RPC Service组件的destination属性引用一个Flex Enterprise Services定义的一个目标.




只有注册用户登录后才能发表评论。


网站导航: