级别: 初级 孙 晶 (sunjjing@cn.ibm.com), IBM中国开放中心的实习生
2006 年 6 月 05 日 本文将通过介绍在WSCTI中WPS与.NET Web Services系统的连接,说明WPS如何连接各种类型的WPS与.NET Web Services,实现数据通信。
1 引言
软件业会遇到这样的问题:跨多个操作系统、编程语言和硬件平台集成软件应用程序不可能由任何一种专门的环境来解决。在 Web 服务出现之前,在大多数系统上,采用的是固定的接口,但对于环境或需要的改变,这缺乏灵活性或适用性。Web 服务所使用的 XML 可以用真正与平台无关的方式来描述任何(所有)数据,以跨系统交换数据,因此转向了松耦合应用程序。而且,Web 服务可以在较抽象的层面上工作,较抽象层面可以按照需要动态地重新评估、修改或处理数据类型。所以,从技术层面上讲,Web 服务可以更方便地处理数据,并且允许软件更自由地进行通信。
WSCTI项目集成了多个电信业务系统,实现了一系列端到端的业务流程,本系列前面的文章已经介绍了项目的背景、需求、架构、数据模型以及业务流程,并在上一篇文章中介绍了如何集成WPS与数据库系统,本文将通过介绍在WSCTI中WPS与.NET Web Services系统的连接,说明WPS如何连接各种类型的Web Services,实现数据通信。
在WSCTI系统中,客户关系管理系统(Customer Relationship Management, CRM)与资源管理系统(Resource Provisioning System)是两个相对独立的系统。其中客户关系管理系统实现的是EJB应用系统,资源管理系统是一个基于Microsofr.NET技术的应用系统。WPS如何与这两种不同结构的应用系统进行连接呢,这就要用到Web Services。这两个系统都提供了Web Services接口,WPS通过与这些Web Services接口进行连接,实现了与客户关系管理系统这两个系统之间的通信。
2 Web Services介绍
2.1 Web Services技术概述
Web 是使应用程序可以以与平台和编程语言无关的方式进行相互通信的一项技术。Web 服务是一个软件接口,它描述了一组可以在网络上通过标准化的 XML 消息传递访问的操作。它使用基于 XML 语言的协议来描述要执行的操作或者要与另一个 Web 服务交换的数据。一组以这种方式交互的 Web 服务在面向服务的体系结构(Service-Oriented Architecture,SOA)中定义了特殊的 Web 服务应用程序。
Web Services是一个基于因特网的应用程序模块,在遵守由一个协议集组成的特殊的技术格式下进行对象组件之间的远程互连交互。包括数据怎么表示,数据怎么传输,Web服务怎么描述,信息怎样获取。在Web服务中,四个方面组成了整个Web服务架构:XML是数据的格式,SOAP是调用Web Services的协议,WSDL是描述Web服务的格式,UDDI是Web服务登记,查找和利用的组合。
Web Services除了标准化、界面与实现分离、实现中立的优势外,它的一个重要用途就体现在Web Services能很好的解决各个旧有系统之间存在的信息孤岛的问题,基于Web Services的中间件的集成将改变目前的开发模式和应用部署的费用规模,加速电子商务的进程。
2.2 .NET Web Services与J2EE Web Services
目前Web Service受到了广泛的关注,主流的开发工具都为Web Services开发提供了很好的支持。微软的.NET和IBM的WSAD都提供了方便快捷的开发Web Services的服务程序和客户端应用。
通过上面的介绍可以看到,Web Services技术是基于一定的协议的交互方式,不同工具开发的Web Services都会生成或转化成Web Services规范(XML, SOAP, WSDL, UDDI)。在WSCTI项目中分别使用.NET和WSAD两种不同类型的Web Services。
要构建.NET Web 服务,可以使用 .NET Visual Studio 构建 .NET 部件,或者在 .asmx 文件中,简单地编写 C# 代码并将类型类封装在 SupplierBSchema.cs 文件中,此处将在.NET中直接创建Web Services,步骤如下:
- 创建Web服务
- 在Web服务中创建Web Methods
- 编译运行Web服务
- 查看Web服务的SOAP,HTTP POST信息,保存Web服务的WSDL文件
在Web Services中重要的实践之一就是用于XML Schemas和WSDL设计。可以使用WSAD设计XML schema和WSDL。使用这种方式创建Web Service的步骤如下:
- 创建新的Web Services项目
- 创建新的XML
- 创建项目的WSDL文件
- 创建消息和消息部件
- 定义Port Type
- 定义绑定协议
- 实现Web服务
3 在WSCTI中集成WPS与Web Services
3.1 解决方案背景概述
图1展示了WSCTI项目的系统架构。WPS向Web客户端提供服务接口,Web客户端通过SCA API向WPS调用服务发起业务流程,并在Web界面上展示数据。WPS通过两种不同类型的适配器(Adapter)与计费系统和服务开通系统通信,既有传统的WBI WebSphere MQ Adapter,也有符合Java Connector Architecture规范的JDBC Adapter。与CRM和资源管理系统通信,WPS是通过Web Services调用的方式,Web Services屏蔽了业务系统技术实现方式的差异。
图1 WSCTI系统架构
在本项目中,资源管理系统使用.NET技术实现, 客户关系管理系统使用EJB技术实现,它们需要提供一个Web Services接口。WID作为一种整合开发应用的工具,可以很好的识别与集成这些Web Services,从而实现与这两部分系统的交互。
本文将以资源管理系统的.NET Web Services的整合为例,介绍WPS与Web Services的整合方式。
3.2 资源管理系统(.NET Web Services)概述
资源管理系统用于管理系统资源。其中资源分为两种:逻辑资源和物理资源。资源管理系统的主要功能有为不同的服务提供资源,分配资源,检查资源,恢复资源等。将使用WPS建立的业务场景与使用.NET建立的Web Services整合起来,就可以在订单处理的业务流程中,根据不同的订单处理过程和不同的需要,在资源管理系统中为订单中的服务提供和管理资源信息。
资源管理系统是使用C#开发的,运行在Internet信息服务(IIS)服务器之上ASP.net服务的Web Services,后台数据库使用,用IBM的"IBM.Data.DB2"驱动包通过ADO.net技术连接到DB2数据库完成如上功能。
图2是资源管理系统运行时界面:
图2 资源管理系统服务
可以看到,这里显示了资源管理系统中编写的Web Methods函数的名称。点击函数名称,可以查看WebMethod的SOAP和HTTP POST等信息,还可以直接点击Invoke按钮,查看WebMethod返回的结果是否正确。在这里如果参数是简单数据类型,就可以直接通过这个Web页面进行测试。我们可以将这个.NET运行时生成的Web Services保存为一个WSDL文件,这个WSDL文件可以在WebSphere Integration Developer中分析使用,将Web Service与WPS应用连接到一起。
3.3 使用WebSphere Integration Developer集成 Web Services
随着 Web 服务的出现,后端企业应用程序通过使用 WSDL 被公开为可发现并可调用的业务服务。WSDL 为 Web 服务接口定义了服务语义,例如操作、协议绑定和消息类型等。BPEL 层在 WSDL 之上,它指定参与流程流的复合 Web 服务的行为。因此,它使业务分析人员和架构师可以定义业务流程流的逻辑,并可以使用 BPEL 来支持与 J2EE Web 服务和 .NET Web 服务的长期运行的会话。
在资源管理系统中,在Web Services运行时保存了一个这个Web Services的WSDL文件,现在我们使用这个WSDL 文件与WID进行整合。将WSDL文件夹复制到 Business Integration Perspective 的 PeonyResource 项目中,或直接在WID目录中导入这个WSDL文件。
将 WSDL 文件复制或导入到 Business Integration Perspective 中时,WebSphere Integration Developer 会另外创建一个目录(如果尚未创建)。特别是一个 Web Service Port 目录以及相应的 Ports、Interfaces 和 Data Types 构件,如图3所示。它通过分析 WSDL 文件来获取其中的 Ports、Port Types 和 Messages 信息。
图3 WID中生成的目录和构件
可以在WID中查看一下资源管理系统Web Service接口中的方法,见图4:
图4 ResourceProvisionSoap接口
这时这个Web Service已经成为WID项目中的一个组件,并可以与其他SCA组件交互,我们将它在装配图中进行集成,这个Web Services就可以在WID中测试并运行了。如图5,导入的Web Services模块ResourceProvisionSoap通过接口映射(Interface Map)组件ResourceToResourceProvisionSoap进行接口的转换,转换成模块中共用的接口Resource,然后通过SCA Export组件导出,这样其它的模块就可以使用资源管理系统提供的服务。如何使用导出的服务,可以参考本系列的第三部分有关业务流程开发的介绍,参见参考资料。
图5 导入资源管理系统服务的装配图
3.4 部署和测试
在WID环境中测试Web Services之前,首先要将Web Services部署到服务器上,确保Web Services可以正常运行。.NET Web Services和J2EE Web Services正确配置并正常运行之后,我们可以在WID中对这些Web Services进行测试。
当ASP.NET Web Service配置好了之后,就可以在WID中对这个Web Service进行测试:
在WID中,右键单击 Assembly Diagram 中的ResourceProvisionSoap组件并选择 Test Component使用 WebSphere Process Server 进行测试。
选择一个方法(SelectNumber),输入正确的订单服务(Service)数据并调用Web Services:
图 6. 测试ResourceProvisionSoap组件
输出结构如图7:
图 7. 输出结果
这个结构是经过.NET Web Service中的SelectNumber方法处理之后的返回数据。一切运行正常,现在已经成功地将 .NET Web Services与WPS应用进行了集成。
4 结束语
Web Services是一项流行的新技术, 也是未来电子商务的发展趋势,它使用标准方式封装现有业务逻辑或开发新的逻辑,使其成为服务实体并发布到网络上以供其它应用调用, 其它公司或应用软件能够通过Internet来访问并使用这项在线服务。在WSCTI中成功地运用Web Services技术将WPS与两种不同类型的系统进行了集成。本文以WSCTI项目中.NET Web Services为例,介绍了如何在WID中通过Web Services与其他异构系统进行数据的整合。
参考资料
- 基于WPS的电信业务集成场景,第一部分:场景与系统架构是本系列的第一篇文章,介绍了WSCTI项目的背景,需求和系统架构。
- 基于WPS的电信业务集成场景,第二部分:数据建模及其实现是本系列的第二篇文章,介绍了WSCTI项目的数据模型。
- 基于WPS的电信业务集成场景,第三部分:业务流程开发以业务流程的案例介绍WSCTI项目如何开发复杂的业务流程。
- 基于WPS的电信业务集成场景,第四部分:集成WPS与数据库应用介绍如何在WSCTI中使用JCA JDBC Adapter动态提取数据库系统的信息,实现与服务开通系统的数据同步。
- 基于WPS的电信业务集成场景,第六部分:人工任务介绍如何开发人工任务组件,以及如何使定制的客户端访问人工任务。
- IBM developerWorks SOA and Web Services专区
- IBM developerWorks WebSphere文档库
关于作者
对本文的评价
|