** 使用 ** ** ** ** PowerDesigner 9.5 ** ** ** ** 创建 ** ** Web ** ** 服务 ** ** **
_ Sybase _ _ 公司 PowerDesigner _ _ _ _ 总设计师 Xiao Wang _ _ 撰稿 _ _ _
Web 服务允许您以标准格式提供现有的或新增的功能,并且允许用户和应用程序从任何位置访问它们。
PowerDesigner 9.5 同时针对 Microsoft .NET 和 Java 引入了完善的 Web 服务设计和生成机制。使用 PowerDesigner 9.5 ,您可以专注于 Web 服务的设计,而将所有必需的生成、实现构造的任务交给 PowerDesigner 完成。
Web 服务概述
Web 服务是一种接口,它描述了在网络上可通过 SOAP 消息进行访问的操作集合。
Web 服务的接口和部署位置(可选) 由 WSDL 说明。 WSDL 是一种声明数据类型、消息、端口类型和端口(可选)的 XML 文档。通过 WSDL ,用户可以知道应该发送哪种格式的 SOAP 消息来调用 Web 服务以及返回消息的格式为何。
为了能使用户查找到所需的 Web 服务,服务提供者可能会在 UDDI 注册服务中发布 WSDL 文档。这样,用户就可以使用 UDDI 注册服务来搜索 Web 服务。
若要调用 Web 服务,用户可以向部署 Web 服务时所在的访问点 URL 发送 SOAP 消息,或者使用可简化此调用过程的代理类。 SOAP 消息也是 XML 文档。
PowerDesigner 的 Web 服务功能
PowerDesigner 9.5 允许您新建 Web 服务组件、通过对 WSDL 进行反向工程来创建 Web 服务组件、浏览 UDDI 、搜索 WSDL 、从 Web 服务组件的定义生成 WSDL 、生成 .NET ( C# 和 VB .NET )的服务器端代码、生成 .NET 的客户端代理、生成 Java ( JAX-RPC 和 JAXM )的服务器端代码以及生成 Java 的客户端代理。
为了设计 Web 服务组件, PowerDesigner 使用了 UML 类图、组件图和部署图。 Web 服务由组件图的组件表示,而已部署的 Web 服务则由部署图的组件实例来表示。
创建 Web 服务组件
创建 Web 服务组件有五个步骤。首先是要创建面向对象模型 (OOM) 。您可以选用以下语言中的任一种: C# 、 Visual Basic .NET 或 Java 。在此模型上会自动附加用于 WSDL 的扩展模型定义 (XEM) 。 XEM 定义了 WSDL 的生成模板和扩展属性。
第二步是创建类。最好是先创建一个程序组 (Package) ,然后再在此程序组下创建类。
第三步是使用 Web 服务向导将创建的类转换成 Web 服务组件。为此您可以右键单击该类,然后选择“创建 Web 服务组件”命令,或在选中该类后选择“工具 > 创建 Web 服务组件”命令。 图 ** 1 ** 显示了一个 Web 服务向导的示例。 Web 服务类型可以是接口或实现。如果选择“接口”,则表明您只希望定义此 Web 组件并生成相应的 WSDL 。对于 .NET ,此组件类型为“标准”,其 Web 服务将通过 .asmx 文件来实现。对于 Java ,此组件类型可能是“标准”、“服务程序”或“无状态会话 Bean ”。这几种 Java 组件类型的实现方法分别是:“标准”类型使用 JAX-RPC 、“服务程序”类型使用 JAXM ,而“无状态会话 Bean ”类型将使用 J2EE (JSR109) Web 服务规范。当向导结束时会创建一个组件和类。 图 ** 2 ** 显示了组件图中的组件符号示例。

** 图 ** ** 1 ** Web 服务向导

** 图 ** ** 2 ** 组件符号
第四步是添加 Web 方法。您需要新建一个操作 (Operation) 、打开该操作的属性页、单击“ Web 方法”复选框、定义参数和返回类型以及编写该操作的实现代码。 图 ** 3 ** 显示了 W eb 方法 GetStockQuote 的实现示例。

** 图 ** ** 3 ** Web 方法 GetStockQuote 的实现示例
最后一步是对 WSDL 生成进行自定义。可以自定义参数和返回值的 WSDL 数据类型、操作的扩展属性以及组件的属性和扩展属性。若要检验生成的 WSDL ,您可以打开组件属性页的 WSDL 选项卡。生成 WSDL 的任务可以交给 PowerDesigner 完成,也可以由您自行定义(用户定义)。如果 Web 服务组件来源于对 WSDL 的反向工程,原始的 WSDL 将得到保留。 图 ** 4 ** 显示了一个生成的 WSDL 的示例。

** 图 ** ** 4 ** 生成的 WSDL 的 示例 ** **
您可以在类属性页的“预览”选项卡中预览生成的实现代码。
您可以使用部署图、节点和组件实例来仿建已经部署的 Web 服务组件。此外,还可以在“节点”中定义服务器的 URL 以及在“组件实例”中定义服务的 URL 。
对 WSDL 进行反向工程
WSDL 可以仅定义 Web 服务接口,也可以同时定义接口和访问点的 URL 。 Web 服务接口可能被多个服务提供者用来提供相同的服务,当然,这些服务会具有不同的实现和访问点。如果拥有 WSDL 文档的文件路径或 URL ,您就可以通过对它进行反向工程来创建 Web 服务组件,之后可以定义自己的实现方法或将创建的 Web 服务组件保存在库中供以后再次使用。您在查找感兴趣的 WSDL 时,可以使用 UDDI 浏览器在 UDDI 注册服务中进行搜索。
为了对 WSDL 进行反向工程,需要用 C# 、 VB .NET 或 Java 中的任意一种语言创建 OOM 。然后选择“语言 > 导入 WSDL ”命令并输入 WSDL 文件的路径或 URL 。进行反向工程之后,会在组件图中创建一个组件,同时在类图中创建一个类。所创建的类将仅包含该 <SPAN lang=EN-US style="mso-fareast-langua