原创:姚冬婧 2005年7月7日
转自:http://www.frontfree.net/view/article_876.html
摘要:
本文以一个最简单加法器的例子,介绍了一下Flash调用Web Service的技术, 使用的开发工具是Visual Studio 2005 Beta2和Flash MX 2004。
众所周知,Flash的表现力很强,最擅长完成又酷又炫的动画效果,适合完成客户端的前台界面。而前台Flash需要的数据都是由后台服务器端的复杂逻辑。如何让Flash与服务器建立连接,进行有效的数据交互呢?Web Service就是一个很不错的选择。
什么是Web Service呢?这里做一个简单的介绍吧。WebService是建立可互操作的分布式应用程序平台,有点难懂是吧。打个比方,有个电子商务网站提供在线货物清单查询销售的服务,或一家研究所有个DNA的数据库查询服务。现在N多家网站或企业可以通过签订协议使用这个服务。这就是Web Service。而它采用的就是一个国际的标准用于生成和解读交互服务。这个标准其实就是一个标准化的XML,而它就叫做wsdl,用标准统一的XML格式给用户能正确解读使用。所以包括任何一种后台服务端语言都能生成和读取wsdl(几乎所有脚本语言都支持,比发ASP,ASP.NET, PHP, C#, JAVA, CF.....)。
在Flash的最新版本Flash MX 2004中,推出了Flash连接Web Service的组件:WebServiceConnector,用它可以非常方便的实现Flash与Web Service的通讯。废话少说,现在我就来用一个很简单的加法器的例子来演示一下。
1.首先,我们来写服务器端,也就是Web Service的逻辑。在VisualStudio2005中新建一个WebService工程,添加一下代码:
[WebMethod]
public int add(int a,int b)
{
return a+b;
}
运行这个工程,测试一下逻辑是否正确。
2.Web Service准备好了,就可以开始Flash的工作了。我们新建flash一个文件,在flash右面的Components找到WebServiceConnector组件,把它拖到舞台上。
同样,我们还需要拖一些TextInput和Button组件到舞台,用于显示用户的输入和输出结果。
3.接下来,我们给舞台上的每个控件起一个实例名。比如,我先选中WebServiceConnector,然后在它的属性里,在InstanceName里给它起个名字,比如叫:WSConn。然后在WSDLURL中输入Web Service的路径名,如: http://localhost:43980/Demo/Service.asmx?wsdl,记得要在最后加上“?wsdl”。最后在operation中选择需要调用的方法名。
同样的方法,给三个TextInput分别命名为num1, num2, resultNum。
4.绑定数据。我们需要把num1, num2的输入值与WebService中add的方法的两个参数邦定。
选中WebServiceConnector控件,在右面的Component Inspector一栏里做如下操作:
然后,在Bindings里就会看到 param.a, 点 bind to 后面的放大镜,在弹出的窗口中找到num1,点OK。这样,TextInput num1就与参数a绑定了。同样的方法,把num2与参数b绑定。
5.最后,就要在flash中写脚本了。选中舞台上的Button,在Action里添加如下代码:
on (click) {
var res:Function = function (evt:Object) {
//把WebService的返回值显示在相应的TextInput:ResultNum中
_root.resultNum.text = _root.WSConn.results;
};
//添加Listener,在WebService调用成功后,执行res函数
_root.WSConn.addEventListener("result", res);
_root.WSConn.trigger();
}
6.运行一下flash, 就可以看到结果啦!
这只是一个最简单的例子,其实,flash可以接受Web Service返回的简单数据类型,包括int(flash里的Number), string, boolean, array等等。这样一来,Flash便可以在外表绚丽的同时,实现更强大的功能,真正达到RIA(Rich Internet Application)。