使用Macromedia Flex开发Web服务客户端2011-04-10 IBM Julio Ruano引言开放式标准被企业用作降低高整合及维护费用的主要手段。现实中的各种异构软件系统使 得我们必须使用一些涉及开放式标准的策略,而 Web 服务很快就成为了解决这个难题的方法 的一个重要部分。直到现在,要构造一个界面友好的 GUI 客户端来与这些系统进行交互还是 非常的单调乏味。这个问题的一个部分就是 Web 服务描述语言(Web Services Description Language ,WSDL)正趋向于成为服务端点的唯一描述语言,这有时使得遵守起来变得非常困 难,尤其是对组织中的设计人员和用户接口开发人员。Flex 是 Macromedia 开发的一个 Rich Internet Application 平台,它在用户接口设计人员和更多传统服务器端开发人员之 间搭了一座桥。传统的后台程序员可以利用大量的吸引人的可视控制、效能、布局、及现有 的 Flash 组件,加上他们对服务端点的深厚知识,从而装配出一个诱人的客户端应用程序。 在任何时候不管有什么类型的资源在您的项目中可用,最后的结果都是可以容易地创建一个 高交互及诱人的应用程序,它在 Web 服务中整合了您的投资。理解 WSDL为了在不同的 SOAP 服务端点间交换消息(在 Flex 中,SOAP 消息被限制成只能使用 HTTP 协议传输机制),Flex 通过引用 WSDL 文档的 URL 来使用现有的 WSDL 定义。下表列 举了经常会在 WSDL 文档中出现的元素:表 1. 常见的 WSDL 元素
元素名 | 描述 |
types | 定义了 Web 服务消息可以使用的数据类型。 |
message | 定义了 Web 服务操作中要传输的数据格式。 |
portType | 定义了一个 Web 服务要提供的一个或多个操作。 |
operation | 定义了输入、输出及错误消息的组合。 |
input | 指出了 Web 服务客户端要(例如 Flex 应用程序)发生给 Web 服务的消 息。 |
output | 指出了 Web 服务要发送给客户端(例如 Flex 应用程序)的消息。 |
fault | 指出了处理消息出错时返回来的错误值。 |
binding | 指出了与 Web 服务进行通信时使用的网络协议。现有 SOAP 绑定包括 HTTP GET、HTTP POST、以及 MIME 协议。Flex 现在只指出 SOAP 绑定。 |
service | 定义端口集。每一个 service 元素对应一个 portType 元素,从而指定了 访问定义在 portType 元素中的操作的不同方法。 |
port | Web 服务端点,指出了绑定和网络地址间的关联。 |
这些可以帮助我们对这些元素怎样在 WSDL 文档共同定义不同的 Web 服务有一个统一的 理解。 然而,Flex 设法隐藏了开发人员对 Web 服务定义的复杂性,而且对大多数人来说, 能大概知道服务要提供哪些功能就已经非常足够了。还有一点非常重要,WSDL 提供了两种截然不同的方式来描述服务操作:远程过程调用 (Remote Procedure Call,RPC)及面向文档(document-oriented)的方式。对于一个 RPC 服务操作的 Flex 调用,它会发送一个 SOAP 消息来指出要调用的操作及操作所需要的参数 。而对于一个面向文档式操作的 Flex 调用,它会发送一个封装成 XML 文档的 SOAP 消息。 Flex 对这两种方式都提供了,但是由于它们使用了专门的标记,这暗示了这两种方式之间有 细微的差别。在文章的后面,作者会通过各种实例来详细地解释这两种方式的使用。理解 WSDL为了在不同的 SOAP 服务端点间交换消息(在 Flex 中,SOAP 消息被限制成只能使用 HTTP 协议传输机制),Flex 通过引用 WSDL 文档的 URL 来使用现有的 WSDL 定义。下表列 举了经常会在 WSDL 文档中出现的元素:表 1. 常见的 WSDL 元素
元素名 | 描述 |
types | 定义了 Web 服务消息可以使用的数据类型。 |
message | 定义了 Web 服务操作中要传输的数据格式。 |
portType | 定义了一个 Web 服务要提供的一个或多个操作。 |
operation | 定义了输入、输出及错误消息的组合。 |
input | 指出了 Web 服务客户端要(例如 Flex 应用程序)发生给 Web 服务的消 息。 |
output | 指出了 Web 服务要发送给客户端(例如 Flex 应用程序)的消息。 |
fault | 指出了处理消息出错时返回来的错误值。 |
binding | 指出了与 Web 服务进行通信时使用的网络协议。现有 SOAP 绑定包括 HTTP GET、HTTP POST、以及 MIME 协议。Flex 现在只指出 SOAP 绑定。 |
service | 定义端口集。每一个 service 元素对应一个 portType 元素,从而指定了 访问定义在 portType 元素中的操作的不同方法。 |
port | Web 服务端点,指出了绑定和网络地址间的关联。 |
这些可以帮助我们对这些元素怎样在 WSDL 文档共同定义不同的 Web 服务有一个统一的 理解。 然而,Flex 设法隐藏了开发人员对 Web 服务定义的复杂性,而且对大多数人来说, 能大概知道服务要提供哪些功能就已经非常足够了。还有一点非常重要,WSDL 提供了两种截然不同的方式来描述服务操作:远程过程调用 (Remote Procedure Call,RPC)及面向文档(document-oriented)的方式。对于一个 RPC 服务操作的 Flex 调用,它会发送一个 SOAP 消息来指出要调用的操作及操作所需要的参数 。而对于一个面向文档式操作的 Flex 调用,它会发送一个封装成 XML 文档的 SOAP 消息。 Flex 对这两种方式都提供了,但是由于它们使用了专门的标记,这暗示了这两种方式之间有 细微的差别。在文章的后面,作者会通过各种实例来详细地解释这两种方式的使用。