使用 PowerDesigner 9.5 创建 Web 服务

web|创建

使用 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 显示了 Web 方法 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。进行反向工程之后,会在组件图中创建一个组件,同时在类图中创建一个类。所创建的类将仅包含该 Web 服务的操作信号,若想实现该 Web 服务,还需要定义这些操作的实现代码。

 
在 UDDI 注册服务中搜索 WSDL
如果希望搜索在 UDDI 注册服务中注册的 WSDL,请打开“导入 WSDL”窗口,然后单击“浏览 UDDI”按钮。通过“浏览 UDDI”窗口(见图 5),您可以选择 UDDI 运营商、搜索条件和搜索类型,并可以按实体名称、服务名称或 WSDL 名称进行搜索。此外,您还可以预览找到的WSDL。

 

图 5 “浏览 UDDI”窗口

 
生成 .NET 类型的 Web 服务
对于 .NET 服务器端代码,PowerDesigner 会生成一个 .asmx 文件。这种 Web 服务的实现类可以在上述的 .asmx 文件中生成,也可以在外部生成。此实现类所使用的语言可以是 C# 或者 VB .NET。在类属性页的“预览”选项卡中,可以预览 .asmx 文件和相应的实现类代码。图 6 显示了 C# 语言的 .asmx 文件示例。

 

图 6 C# 语言的.asmx 文件示例

 

PowerDesigner 还可以生成客户端代理类来简化 Web 服务的调用。为生成客户端代理类,PowerDesigner 使用了 Visual Studio .NET 附带的 wsdl.exe 程序。

 

若要生成 WSDL、服务器端代码和/或客户端代理,请选择“语言>生成 C# 代码”或“语言>生成 VB .NET 代码”命令。如果要生成客户端代理,可以在“任务”选项卡中选择“生成 Web 服务客户端代理”选项。图 7 显示了可用的生成任务。如果这个类不是在 .asmx 文件内部生成的,您将可以对这些 C# 代码或 VB .NET 代码进行编译。不过,在编译 C# 或 VB .NET 文件时,您必须定义 CSC 或 VBC 变量来指示 csc.exe 或 vbc.exe 命令的位置。

 

在部署 Web 服务时,只需要将IIS 目录下的 .asmx 文件和相应的类文件进行复制:C:\Inetpub\wwwroot\<程序组名>。其中,<程序组名> 是程序组的名称。要测试此 Web 服务,可以在浏览器中输入以下 URL: http://<主机名>/<程序组名>/<服务名>.asmx

 

图 7 Web 服务的生成任务

 
生成 Java 类型的 Web 服务
如果 Web 服务的实现类型为“标准”,PowerDesigner 将使用 JAX-RPC 来实现。如果实现类型为“服务程序”,PowerDesigner 将使用 JAXM 来实现。如果实现类型为“无状态会话 Bean,则 PowerDesigner 将使用 J2EE (JSR109) Web 服务规范来实现。JSR109 尚未正式颁布。

 

JAX-RPC 定义了 RPC 类型的 Web 服务调用。虽然它易于开发和使用,但为了避免复杂的对象/XML 映射,它只能局限于简单的消息格式。而基于 JAXM 的 Web 服务组件显然更具优越性,它允许您灵活地处理复杂的消息结构。

 

若要使用 JAX-RPC 或 JAXM,您需要安装 Java Web Services Developer Pack (JWSDP)。此程序包可从 Sun 公司的网站下载。在部署 JAX-RPC 或 JAXM 类型的 Web 服务组件时,需要有支持 JAX-RPC 或 JAXM 的服务器。支持 JAX-RPC 或 JAXM 的 Apache Tomcat 附带提供了 JWSDP。

 

至于基于 JAX-RPC 的 Web 服务组件,您只需实现其 Web 方法的代码。若要生成 WSDL、服务器端代码和/或客户端代理,可选择“语言>生成 Java 代码”,然后选择“使用 XRPCC 工具生成 WSDL(服务器端)”和/或“使用 XRPCC 工具生成 Web 服务的代理代码”命令(见图 8)。XRPCC 命令是 JWSDP 的一个工具。它可以生成 JAX-RPC 类型的服务器端代码或客户端代理。在部署生成的 Web 服务时,需要创建一个包含所有生成文件的 .WAR 文件,并将此 .WAR 文件部署在支持 JAX-RPC 的服务器上,比如说 Apache Tomcat。

 

图 8 JAX-RPC 生成任务

 

对基于 JAXM 的 Web 服务组件而言,您需要实现其 onMessage 操作。onMessage 操作将按照在 WSDL 中的指示,接收并处理输入的 SOAP 消息并构建返回消息,以及将此消息返回。要生成 WSDL 和 JAXM 类型的 Web 服务,请选择“语言>生成 Java 代码”命令,然后选择“构建 Web 组件,创建 Web 应用程序 WAR”命令(见图 9)。该命令会对 JAXM 服务程序代码进行编译并创建 WAR 文件。要部署此 JAXM 服务程序,您可以将上述 WAR 文件部署在支持 JAXM 的服务器上,比如说 Apache Tomcat。

 

图 9 JAXM 生成任务

 

至于基于无状态会话 Bean 的 Web 服务组件,由于 JSR109 规范尚未正式颁布,因此目前还不能使用。
下一步要增强的功能
J2EE (JSR109) Web 服务规范不久将面世,供人们使用。通过它,您可以将无状态会话 Bean 用作 Web 服务实现的利器。它可以让现有功能以 Web 服务的新面目出现,同时也可以新建 Web 服务。PowerDesigner 9.5 附带提供了基于早期JSR109 规范的版本,该版本尚待进一步的认证。等该规范正式颁布后,我们将提供维护版本以实现对它的完全支持。

 

PowerDesigner 的新版本还将支持 Web 服务的综合标准。

 
结论
PowerDesigner 9.5 简化了 Web 服务的设计和生成过程。只要懂得如何创建类和方法,就能知道如何创建 Web 服务!您可以使用 PowerDesigner 设计、创建 Web 服务,以及对它进行反向工程和为其创建文档。如果希望重复使用这些 Web 组件,您可以创建一个 Web 服务组件库,并使用版本库 (Repository) 来管理不同版本的 Web 组件。

 

时间: 2024-09-10 18:09:05

使用 PowerDesigner 9.5 创建 Web 服务的相关文章

C#创建Web服务(入门图解)

web|web服务|创建       微软在其.Net战略中,对其主推的Web服务做了大肆的宣扬.现在,Web服务正如火如荼地发展着,相关的各项新技术层出不穷.Web服务的发展正构筑着互联网时代美好的明天.在本文中,我将向大家介绍Web服务的一些基本知识以及如何用Visual C#一步一步地创建一个简单的Web服务. 一.Web服务概述: Web服务是一种新的Web应用程序分支,它们是自包含.自描述.模块化的应用,可以发布.定位.通过Web调用.Web服务可以执行从简单的请求到复杂商务处理的任何

一步一步用Visual C#创建Web服务

visual|web|web服务|创建 引言: 微软在其.Net战略中,对其主推的Web服务做了大肆的宣扬.现在,Web服务正如火如荼地发展着,相关的各项新技术层出不穷.Web服务的发展正构筑着互联网时代美好的明天.在本文中,我将向大家介绍Web服务的一些基本知识以及如何用Visual C#一步一步地创建一个简单的Web服务. 一.Web服务概述: Web服务是一种新的Web应用程序分支,它们是自包含.自描述.模块化的应用,可以发布.定位.通过Web调用.Web服务可以执行从简单的请求到复杂商务

使用C#创建Web服务

一.Web服务概述: Web服务是一种新的Web应用程序分支,它们是自包含.自描述.模块化的应用,可以发布.定位.通过Web调用.Web服务可以执行从简单的请求到复杂商务处理的任何功能.一旦部署以后,其他Web服务应用程序可以发现并调用它部署的服务.Web服务可以把业务逻辑划分一个一个的组件,然后在整个因特网的范围上执行其功能.所以,它是构造分布式.模块化应用程序的最新技术发展趋势. 二.为什么需要Web服务? 以前,分布式的应用程序逻辑需要使用分布式的对象模型,通过使用DCOM.CORBA.R

手把手教你在.NET中创建Web服务实现方法

 这篇文章主要介绍了.NET中创建Web服务实现方法,有需要的朋友可以参考一下 最近发现在.NET平台下使用Web服务还是很简单的. 下面举个在.NET平台下创建Web服务的简单例子.首先用Visul Studio .Net创建一个C# 项目Asp.Net Web服务程序,源代码如下: 代码如下: using System; using System.Collections; using System.ComponentModel; using System.Data; using System

vc#中如何创建web服务??

问题描述 在vs2005中,如何创建web服务?一个方法是建一个asp.net web服务(新建网站)另一个是"新建文件"---web服务这两个方法有什么区别?用后一个方法创建的web服务如何调用?? 解决方案 解决方案二:请高手来指教一哈啊.

webservice-无法通过JAXWS:wsimport实现程序创建Web服务客户端

问题描述 无法通过JAXWS:wsimport实现程序创建Web服务客户端 无法通过JAXWS:wsimport实现程序创建Web服务客户端,错误截图如下

ASP.NET创建Web服务管理Web服务状态

ASP.NET创建Web服务管理Web服务状态 XML Web服务在类实现派生于WebService类的XML Web服务时,可以使用和其他ASP.NET应用程序相同的状态管理选项.WebService类包含许多公共ASP.NET对象,包括Session和Application对象. Application对象提供一个储存运行在Web应用程序中的代码可访问的数据的机制,而Session对象允许数据存储在每客户端会话基础上.如果客户端支持cookies,那么可以使用cookie来识别客户端会话.

手把手教你在.NET中创建Web服务实现方法_实用技巧

最近发现在.NET平台下使用Web服务还是很简单的.下面举个在.NET平台下创建Web服务的简单例子.首先用Visul Studio .Net创建一个C# 项目Asp.Net Web服务程序,源代码如下: 复制代码 代码如下: using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.Web;using Syst

ASP.NET创建Web服务之使用事务

asp.net|web|web服务|创建 支持XML Web服务的事务利用公共语言运行期中的支持,其是基于Microsoft Transaction Server ( MTS)和COM+ Services中相同的分布式事务模型.该模型基于明确的判断一个对象是否参与一个事务,而不是编写特定的代码用来处理委托和回调一个事务.对于一个使用ASP.NET创建的XML Web服务,你可以通过设置其应用到一个XML Web服务方法上的WebMethod属性的TransactionOption属性来声明一个X