应用集成课程设计.docx
《应用集成课程设计.docx》由会员分享,可在线阅读,更多相关《应用集成课程设计.docx(15页珍藏版)》请在冰豆网上搜索。
![应用集成课程设计.docx](https://file1.bdocx.com/fileroot1/2022-12/31/5d52ba0f-2b08-4c70-9e77-24b0d3910b75/5d52ba0f-2b08-4c70-9e77-24b0d3910b751.gif)
应用集成课程设计
四川理工学院
课程设计书
学院计算机学院
专业计科
班级09级4班
题目基于WebServices的集成技术研究
教师雷文
学生匡维天魏刚邓璞
摘 要随着企业信息化的发展,传统的系统集成方法不再能够满足企业应用集成的需要。
WebServices由于具有开放性、跨平台和协议简单等特性,成为实现企业应用集成的一种新方法。
本文通过分析WebServices技术中的规范和标准以及WebServices的运作模式,对基于WebServices的企业应用集成中的数据集成和业务流程集成的实现方法进行了说明。
关键词:
企业应用集成;WebServices;
引言
EAI(Enterpriseapplicationintegration)即企业应用集成,EAI通过将一系列的方法、技术和工具组织在一起实现对不同应用的合并与协调,从而实现企业信息系统的集成。
目前,由于现代企业信息自动化要求的提高,各个系统之间的互动和相互通讯更为重要。
保护原有投资,重用遗留系统、集成新的应用系统是当前很多中大型企业的重要任务。
由于遗留系统的运行平台是异构环境,要横跨多种硬件平台、操作系统、软件技术、数据管理系统以及各种业务应用,不仅要进行复杂的跨业务处理,还要解决复杂的横向协调问题,因此EAI(企业应用集成)的代价一般来说是很高的。
传统的企业应用集成方案有:
基于应用编程接口(API)的方案,基于分布式对象技术(如DCOM、CORBA、EJB等)的方案等,当用户群非常庞大时,这种点到点的集成会变得非常困难。
再加上DCOM、CORBA或EJB之间出于厂商利益的技术对抗也阻碍了企业应用集成。
因此探讨新的集成方案是很有必要的。
随着网络技术、网络运行理念的发展,人们提出一种新的利用网络进行企业应用集成的解决方案——Web服务(WebServices)。
目录
引言3
1.WebServices产生的背景5
2.使用WebServices进行EAI的必要性5
3.Webservices技术的介绍6
4.WebServices的体系7
4.1.Webservices组件7
4.2.Webservices操作7
4.3.WebServices的基本元素7
4.4.Web服务的请求-响应循环8
5.使用WebServices技术实现EAI(数据集成和业务流程介绍)8
5.1数据级集成9
5.2业务流程集成9
6.WebServices应用流程的实例(java语言)10
1.创建工程10
2.添加功能类10
3.部署WebService10
4.生成客户端11
5.调用webservice客户端12
7.WebServices的缺点12
8.WebServices的优点13
总结14
参考文献14
1.WebServices产生的背景
随着分布式计算技术的迅速发展,企业的商务活动和政府的政务活动将越来越多地依靠Internet。
传统的分布式对象模型CORBA(CommonObjectRequestBrokerArchitecture,公共对象请求代理体系结构)、DCOM(DistributedComponentObjectModel,分布式组件对象模型)、RMI(RemoteMethodInvocation,远程方法调用)不适用于极端异构的Internet环境。
因为:
(1)它们各自有一套独立的体系结构和私有协议,不同模型的应用系统之间通信十分不便。
(2)客户端与服务端必须紧密耦合,一旦服务端的接口或执行方式发生变化,客户端将无法执行。
(3)客户与服务器之间有较大的网络通信量与交互信息。
WebServices是近两年提出的一种新的面向服务的体系结构,其中定义了一组标准协议,用于接口定义、方法调用、基于Internet的构件注册以及各种应用的实现。
同传统的分布式模型相比,WebServices体系的主要优势在于:
(1)协议的通用性。
WebServices利用标准的Internet协议(如HTTP、SMTP等),解决的是面向Web的分布式计算;而CORBA、DCOM、RMI使用私有的协议,只能解决企业内部的对等实体间的分布式计算。
(2)完全的平台、语言独立性。
WebServices进行了更高程度的抽象,只要遵守WebServices的接口即可进行服务的请求与调用。
而CORBA、DCOM、RMI等模型要求在对等体系结构间才能进行通信。
如CORBA需要每个连接点都使用ORB(ObjectRequestBroker,对象请求代理),DCOM需要每个连接点都使用Windows平台,RMI需要每个连接点都使用Java,否则双方是不能通信的。
在电子商务市场中,要求所有的参与者都采用同一个基于某种语言和平台的模型是不现实的。
而WebServices结合了面向组件方法和Web技术的优势,利用标准网络协议和XML数据格式进行通信,具有良好的普适性和灵活性,在Internet这个巨大的虚拟计算环境中,任何支持这些标准的系统都可以被动态定位以及与网络上的其它WebServices交互,任何客户都可以调用任何服务而无论它们处在何处,突破了传统的分布式计算模型在通信、应用范围等方面的限制,允许企业和个人快速、廉价建立和部署全球性应用。
2.使用WebServices进行EAI的必要性
很多企业的信息系统都由企业资源规划(ERP)、客户关系管理(CRM)、供应链管理(SCM)等多种异构系统所组成,这些系统各自独立。
为了共享资源,人们提出了EAI(EnterpriseApplicationIntegration)集成方案,EAI指的是集成不同应用和数据,使得应用程序不需要作太大的变化就可以共享数据和集成应用程序之间的商务活动的过程。
主要有两种类型的EAI[4]:
公司内部的应用集成—内部EAI;B2B集成—外部EAI(或电子商务)。
理想的集成方案必须满足以下条件:
(1)基于工业标准,尽量减少在异构环境之间对私有适配器和连接器的需要。
(2)松散的耦合,即请求不必针对特定应用的API。
(3)异步执行方式。
使得在等待第一个应用的响应时可以执行第二个应用。
(4)可靠性。
保证消息被投递一次且仅仅一次。
(5)安全性。
必须支持鉴别、授权标准以保护被交换信息的完整性。
传统的EAI解决方案是私有的和复杂的,因而不能实现必要的灵活性和适应性。
而WebServices技术由于使用标准的Web协议(HTTP、SMTP等)和一系列标准协议(XML、SOAP、WSDL、UDDI等)而满足了上述所有条件,为EAI提供了一种崭新的方法。
当把WebServices应用到EAI中时,整个企业的所有系统都成了一个松散结构中的组件,系统接口、应用通信、数据转换和目录信息都是建立在开放的、被广为接受的标准之上,用户能迅速地访问到他们所需要的信息。
3.Webservices技术的介绍
WebServices是部署在网络上的对象(或组件)集合。
它采用对象/组件技术、使用标准的Internet协议、将功能展示在互联网和企业网内部。
它的基石是以XML为主的、开放的Web规范技术,因此具有比任何现有的对象技术更好的开放性。
构筑WebServices的关键技术有:
XML、SOAP、WSDL、UDDI。
其中,简单对象访问协议(SOAP)提供了标准的RPC方法来调用WebServices;WebServices描述语言(WSDL)用于描述WebServices(该web服务的元数据信息:
服务的名字、提供者、服务的具体访问地址等)及其函数、参数和返回值;统一描述、发现与集成(UDDI)规范定义了这样的注册中心:
WebServices的提供者可以在其中发布相应的WSDL文档,WebServices的消费者则可以在其中找到自己需要的服务,并通过WSDL文档获得如何调用相应WebServices的方法。
SOAP、WSDL、UDDI都是基于XML的协议,正是因为使用XML,使企业应用集成在数据层上达成了一致,解决了不同平台或系统、不同数据结构或模式之间的差异,使得原本复杂的数据层的集成变得简单起来。
4.WebServices的体系
4.1.Webservices组件
(1)服务提供者:
提供服务,进行注册以使服务课用;
(2)服务请求者:
向服务代理请求服务,调用服务创建应用程序。
(3)服务代理:
服务交换所,服务提供者和服务请求者之间的媒体。
4.2.Webservices操作
(1)发布/不发布:
提供者向代理发布(注册)服务或不发布(移去)服务;
(2)发现:
由服务请求者向服务代理执行发现操作,服务请求者描述要找的服务,服务代理分发匹配结果;
(3)绑定:
在服务请求者和服务提供者之间绑定,这两部分协商以请求者可以访问和调用提供者的服务。
4.3.WebServices的基本元素
(1)UDDI:
通用发现、描述和整合。
这是一个WebServices的信息注册规范,基于UDDI的WebServices注册可以被发现UDDI的发现方法是:
在Web上有一种分布的注册服务,商务和服务以一种通用的XML格式描述,XML中的结构化数据易于发现、分析和操作
(2)WSDl:
Web:
服务描述语言。
Web服务描述言语(WSDL)是一种XML语法,为服务提供者提供了描述构建在不同协议或编码方式之上的WebServices请求基本格式的方法。
WSDL用来描述一个WebServices能做什么,它的位置在哪里,如何调用它等。
在假定以SOAP/HTTP/MIME作为远程对象调用机制的情况下,WSDL会发挥最大作用。
UDDI注册描述了WebServices绝大多数方面,包括服务的绑定细节。
WSDL可以看作是UDDI服务描述的子集。
WSDL 描述了Web服务的三个基本属性:
a.服务所提供的操作
b.如何访问服务
c.服务位于何处
(3)SOAP:
即SimpleObjectAccessProtocol也就是简单对象访问协议。
是一种用于访问Web服务的协议,基于XML和HTTP。
通过SOAP可以很方便的解决互联网中消息互联互通的需求。
而且SOAP的一个重要特点就是他独立于底层传输机制,Web服务应用程序可以根据需要选择自己的数据传输协议,可以在发生消息时来确定相应的传输机制。
4.4.Web服务的请求-响应循环
(1)Web服务提供者将本Web服务的元数据信息、实现的功能和接口描述在WSDL文档中,并发布到Web服务注册中心上,其信息被写入UDDI注册表中;Web服务注册中心对Web服务进行分类,并提供Web搜索服务。
(2)Web服务客户机根据Web服务注册中心提供的规范接口向Web服务注册中心发送Web服务查询请求。
(3)Web服务客户机通过分析从Web服务注册中心得到的Web服务绑定信息(WSDL),包括服务的访问路径、服务调用的参数、返回值、传输协议、安全要求等,对自己的系统进行配置。
并远程调用请求的Web服务。
(4)被请求Web服务处理该远程调用,并调用自己的相应操作,这个操作可能需要如EJB和JDBC数据源等J2EE组件的服务以及其他Web服务。
(5)完成以上
(2)-(4)的操作后,被请求Web服务返回给最初的用户一个SOAP消息,得到所需要的结果。
5.使用WebServices技术实现EAI(数据集成和业务流程介绍)
EAI能够将业务流程、应用软件、硬件和各种标准联合起来,在机构内部或机构之间实现应用系统的无缝集成,使它们象一个整体一样进行业务处理和信息共享。
它包括数据传输、接口集成、数据转换、工作流和系统监控5大关键技术。
集成层面包括:
数据级集成、用户界面级集成、应用级集成、业务流程级集成。
本文讨论的重点放在数据级集成和业务流程级集成。
5.1数据级集成
数据级集成是集成其他应用所使用的后端数据,包括:
数据共享、数据迁移、数据复制。
有两种方式实现:
推和拉。
基于“推”的集成是将一个应用中的数据“推入”另外一个应用的数据库中,比如数据迁移就可以采用推的方式;而“拉”的方式是利用触发器以及轮询(Polling)的机制,获取数据的更改,并把通知信息写入一个接口表中,然后相关的系统可以轮询这个接口了解是否有数据变动,比如数据共享可以采用拉的方式。
下面举例说明WebServices实现数据共享的方式:
(1)当服务提供者的数据发生改动时,就激活数据监控触发器,数据监控触发器将其更改数据的通知消息写入接口表中,更新Web服务中心的接口表。
(2)服务请求者采取轮询的方式每隔一段时间向Web服务中心发出“查询是否数据更改”的SOAP消息。
(3)Web服务中心根据接口表的更新情况向服务请求者返回查询结果:
如果数据发生变化,则返回带有数据更新的时间和数据更新内容描述信息的WSDL文档,请求者在得到Web服务中心发回的WSDL文档后,确定数据更新的内容是否是自己需要的数据内容,如果是自己需要的数据内容,则生成SOAP请求消息,绑定服务提供者以获取最新数据;如果数据没有发生变化,则Web服务中心返回“否”的结果即可。
5.2业务流程集成
业务流程集成是以业务流程为核心的企业集成问题。
业务流程表现为参与者对文档、信息或任务按照规程采取行动,并令其在参与者之间传递。
业务流程可以通过过程集成模型决定如何进行交互和业务的处理,并对企业业务过程的状态和性能进行实时监控,通过过程可视化工具,对企业业务流程进行配置和管理。
在业务流程中工作流占据着重要地位。
工作流是业务流程的计算机化或自动化,通过计算机软件对工作流过程进行定义、执行并监控。
下图展示了使用WebServices技术实现企业内部业务流程集成的一个示例。
企业门户应用程序运行过程中,执行业务流程时,工作流引擎作为服务
求者要调用发布为web服务的应用时,它首先向Web服务注册中心发送查询请求,查询到满足要求的web服务后,得到其地址,并将相应的WSDL文件下载到工作流服务器上,当工作流引擎需要相应服务时,就根据获得的地址发起连接,然后通过SOAP协议和Web服务中的远程对象绑定,进行请求的发送和应答的接收。
发送和接收的都是符合SOAP规范的SOAP消息。
在SOAP的headers和body中即可传送工作流相关数据,实现Web服务的调用,从而实现应用程序的集成。
6.WebServices应用流程的实例(java语言)
1.创建工程
ProjectName:
TestWebService
Targetruntime:
ApacheTomcatV6.0
其他的默认
2.添加Axis的Jar包
在axis的jar包目录lib子目录中的所有jar文件添加到工程中。
3.配置web.xml
在axis的webapps子目录中有一个axisWeb应用,我们直接使用它的web.xml文件内容。
2.添加功能类
Java代码
packagecom.enfang;
publicclassTestLiu
{
publicStringgetInfo(Stringaa)
{
return"webservice:
"+aa;
}
}
packagecom.enfang;
publicclassTestLiu
{
publicStringgetInfo(Stringaa){
return"webservice:
"+aa;
}
}
3.部署WebService
我们可以将需要公开的类文件复制到WEB应用目录下,并修改文件后缀名为jws。
把类文件更名并放到WEB目录下?
这样做并不好,它被暴露了。
所以在这里我们使用一个常量的部署方法,在工程中(根目录)添加一个deploy.wsdd文件:
Xml代码
//xml.apache.org/axis/wsdd/"xmlns:
java=
"http:
//xml.apache.org/axis/wsdd/providers/java">
RPC">
--request,session,orapplication-->
//xml.apache.org/axis/wsdd/"xmlns:
java=
"http:
//xml.apache.org/axis/wsdd/providers/java">
RPC">
--request,session,orapplication-->
首先将工程部署到Tomcat服务器上,并启动Tomcat服务器。
然后在工程上右键-->RunAs...-->RunConfigurations...,新建一个JavaApplication。
在main页面中,project指定为我们的TestWebService,MainClass指定为org.apache.axis.client.AdminClient。
在Arguments页面下设置Programarguments为-lhttp:
//localhost:
8080/TestWebService/servlet/AxisServletdeploy.wsdd。
点击Run按钮。
完成上面的操作后,AdminClient会为我们部署在Tomcat的TestWebService的WEB-INF目录下生成一个server-config.wsdd文件,它是提供给Axis使用的配置文件。
4.生成客户端
在根目录下建一个bat文件例如:
WSDL2Java.bat,代码如下
Ruby代码
setAxis_Lib=.\WebRoot\WEB-INF\lib
setJava_Cmd=java-Djava.ext.dirs=%Axis_Lib%
setOutput_Path=.\src
setPackage=client.webservice
setwsdl_path=http:
//localhost:
8080/TestWebService/services/TestLiu?
wsdl
%Java_Cmd%org.apache.axis.wsdl.WSDL2Java-o%Output_Path%-p%Package%%wsdl_path%
pause
setAxis_Lib=.\WebRoot\WEB-INF\lib
setJava_Cmd=java-Djava.ext.dirs=%Axis_Lib%
setOutput_Path=.\src
setPackage=client.webservice
setwsdl_path=http:
//localhost:
8080/TestWebService/services/TestLiu?
wsdl
%Java_Cmd%org.apache.axis.wsdl.WSDL2Java-o%Output_Path%-p%Package%%wsdl_path%
pause
然后执行这个文件生成客户端,客户端目录在src/client/webservice.
5.调用webservice客户端
Java代码
packagecn.anycall.test;
importjava.rmi.RemoteException;
importjavax.xml.rpc.ServiceException;
importclient.webservice.*;
publicclassTest{
/**
*@paramargs
*@throwsServiceException
*@throwsRemoteException
*/
publicstaticvoidmain(String[]args)throwsServiceException,RemoteException{
//TODOAuto-generatedmethodstub
TestLiuServiceservice=newTestLiuServiceLocator();
TestLiu_PortTypeclient=service.getTestLiu();
Stringaa=client.getInfo();
System.out.println(aa);
}
}
7.WebServices的缺点
上述所说明的基于WebServices的EAI更适合于Web服务请求者对Web服务的名称和内容非常清楚、安全性要求不太高的企业内部异构系统间的集成。
但是如果在不同企业间进行企业集成,或包含不同的Web应用服务器时,则可能存在如下问题:
(1)Web服务发现和使用问题。
不同企业开发自己的Web服务,他们在Web服务命名、Web服务表现形式、Web服务组织上会因使用的Web应用服务器软件不同、Web服务程序设计者的设计理念、技术等方面的不同而给Web服务的发现和使用带来困难。
如何使Web服务请求者能够进行语义层次上的模糊查询并实现一定的智能化是一个需要进一步深入研究和设计的内容。
(2)保证Web服务协调工作的正确性。
在业务流程级的企业集成中,通常需要多个Web服务和组件按照一定的业务逻辑进行动态的组合来完成任务。
但是如果将业务流程分割的Web服务粒度不合适,则可能会影响Web服务之间的动态调用,产生错误的执行结果,通过正确的系统需求分析和流程设计,采用合适的过程可视化工具能够在一定程度上保证程序设计的正确性。
(3)安全性问题。
现有的WebServices安全技术如验证与授权、角色、定义用户和用户组、访问控制、身份认证、信息加密等并不能完全保证WebServices的安全