使用Ajax改进Flash与WCF通信

上篇文章讲述Flex与WCF通信时,我们使用了SOAP消息,不爽的是Web Service向导在检视WSDL时会花很长时间。如果一定要使用以数据为中心的方式开发,我们可以使用 WCF HTTP Web 编程模型,通过基本HTTP请求来公开WCF Web服务,Flash客户端通过URLLoader或HttpService来处理。

Web编程模型将WCF扩展到覆盖Web样式方案,其中包括REST服务、AJAX 和JSON服务以及联合 (ATOM/RSS) 源。本文以Ajax为例进行讲解。

在Microsoft Visual Studio中,使用“AJAX-enabled WCF Service”模板添加一个WCF服务,然后公开服务方法并设置使用 WebGetAttribute 属性以确保服务响应HTTP GET请求并被配置为对响应使用Javascript对象表示法 (JSON) 数据格式。查看自动自成的服务配置文件,有<webHttpBinding> 标准绑定和 <enableWebScript> 行为,创建了AJAX 终结点。

通过浏览器http://www.riafan.com/services/WCFXml.svc/getEmployee,测试成功会返回一个XML文本。

Flex端的调用就很简单了。使用HTTP Service向导新增一个服务,为服务中添加三个方法,请求方式为”POST”。具体步骤见:http://www.riafan.com/dcd-flash-builder-4-http-service

注意,如果响应的数据类型是Json,返回的Json字符串整个就是一个键名为”d”的JSON 键/值对。如果属性值有复杂类型数据,会有类型提示:一个键名为“__type”的JSON 键/值对。

附件代码是用Flex写的,但Flash也可以通过URLLoader与HTTP Service通信,因此通过Web编程模型Flash也可以调用WCF HTTP Web服务的 。如果感兴趣,还可以尝试一下其它Web解决方案,比如说使用REST服务来改进Flash与WCF通信。

点击此处查看本实例的效果,点击此处下载本实例的源码。

发表评论