基于服务的企业集成模式轻松入门_第1页
基于服务的企业集成模式轻松入门_第2页
基于服务的企业集成模式轻松入门_第3页
基于服务的企业集成模式轻松入门_第4页
基于服务的企业集成模式轻松入门_第5页
已阅读5页,还剩48页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1百手起驾整理为您基于服务的企业集成模式轻松入门简介本系列文章以便于理解和分步指导的方式解释基于服务的企业集成模式。在本系列文章的第1部分中,您将学习两种最早的集成模式仅共享数据和远程过程调用RPC通过学习这两种模式可以帮助您理解服务提供者和服务使用者、平台独立性和连接性的概念。研究RPC可以帮助您熟悉两个应用程序共享功能所需的基本步骤。本文还将向您概括介绍松散耦合、代码重用、分层和组件化的概念。本系列的第2部分将继续讨论这些早期模式,而第3和第4部分将概括介绍基于面向服务的体系结构SOA的集成模式,其中还包括一些示例。第1部分基本概念的演变引言使一个企业中的所有应用程序以集成方式运行以便提供统一而一致的数据和功能是一项非常艰难的任务。这涉及到各种应用程序,如自主构建的应用程序C、JAVA或JAVA2PLATFORM,ENTERPRISEEDITIONJ2EE)、打包的应用程序(如SAPCRM应用程序)以及遗留应用程序(大型机IBMCICS或IBMINFORMATIONMANAGEMENTSYSTEMIMS)。而且,这些应用程序可能分布在不同的地理位置,并可能运行于各种平台上。这可能需要集成企业之外的应用程序。随着企业的发展,企业集成中涉及的复杂性也随着时间的推移而增加,并涉及了许多集成模式。因此,目前存在着大量的集成模式。这些集成模式各种各样,有的是基于文件在应用程序之间进行简单的数据传输,有的是完全基于SOA的集成模式。本系列的第1部分和第2部分介绍这些模式的演变,目的是为了帮助您理解基于SOA的集成模式中涉及的所有基本概念和功能。涉及的一些概念和功能包括服务的使用者和提供者松散耦合代码重用和分层语言独立性平台独立性服务接口的定义、发布和发现(即注册表概念)企业服务总线ESB从点对点集成发展,涉及连接性、封送处理和中介的概念粗粒度2百手起驾整理为您集成模式发展的这些描述还重点强调了许多以前技术和技术概念大大促进了基于SOA的集成模式的发展。讨论旧模式的另一个原因是,即使在当今世界,仍然存在着旧模式和新模式的共存现象。例如,许多ESB实现都支持集成的文件传输机制。类似地,许多应用服务器(如IBMWEBSPHERE)都具有对象请求代理ORB和异步消息传递功能。需要关注的是,最近IBM提议的标准化服务集成成熟度模型SIMM已得到THEOPENGROUP董事会的认可。在本系列文章的第1和第2部分中对早期集成模式的描述可以大大帮助您确定和明确SIMM中应用程序域的成熟度级别。松散耦合在所有概念中,倾向使用SOA类型集成模式的主要驱动因素是松散耦合思想。促进使用松散耦合的原因是集成的应用程序的数量和类型越来越多。这要求集成模式对一个应用程序的更改使对其他应用程序造成的影响减到最小。需要松散耦合的另一业务原因是企业需要灵活地满足当今不断改变的业务需求。因此集成模式必须能够满足这一变化和具有足够的灵活性。在本文中您将了解到,尽管通向松散耦合和灵活性的道路不是笔直的,但通常情况下,在我们从旧模式移动到SOA时,应用程序和软件组件之间的耦合已变得较弱。最大化代码重用促进开发基于服务的体系结构的第二个重要因素是强调最大化代码的重用。代码重用可以得到更可靠和更有效的代码,这是因为对相同的代码进行了反复测试。要实现代码重用,通常需要使用分层(也称为组件化)。分层或组件化是指作为单独的软件组件提取不同的代码片段,以便多个应用程序在运行时可以使用相同的代码进行到远程应用程序的网络连接。分层还促进了松散耦合,因为可以更改每层的内部工作,而不影响其他层或应用程序。现在我们通过最简单的集成开始讨论集成模式,该集成仅涉及应用程序之间的数据共享。这可以帮助您了解不同应用程序之间连接性的概念。仅共享数据大体上讲,在两个应用程序之间共享数据的方式共有两种文件第一种方式(可能是最常见的方式)是通过文件共享数据。这是因为将数据存储在文件中是在系统中存储数据的通用方法。在此集成模式中,一个应用程序将数据写入文件,另一个应用程序从同一文件中读取数据。但是,使用这种方法在应用程序之间共享数据存在两个主要问题3百手起驾整理为您数据不能实时共享,这是因为在将数据写入文件和从文件中读取数据之间常常存在着延迟(主要依赖于业务周期)。共享数据的两个应用程序之间存在着紧密耦合关系。因此,生成文件的应用程序中的更改(修改文件的格式或内容)必须伴随使用该文件的应用程序中的更改。公共数据库共享数据的第二个模式与第一种模式类似并使用一个公共数据库。在此模式中,一个应用程序将数据写入数据库,另一个应用程序从该数据库中读取数据。这种模式同样不能实时共享数据,这是因为在一个应用程序将数据写入数据库与另一个应用程序从中读取数据之间存在着延迟。这种数据写入和读取之间的延迟是由于执行读取的应用程序不知道执行写入的应用程序何时将数据写入数据库所造成的。而且应用程序之间还存在着紧密耦合关系,由于对数据库的更改有一个连锁反应,因此这使得共享数据库的设计变得非常困难。连接性为避免过时数据的问题,在共享数据的应用程序之间需要实时连接。我们将其称为连接性。在两个应用程序之间建立连接性的最根本的方法是通过套接字进行连接。套接字可让一个应用程序在给定计算机的给定端口上侦听数据,同时另一个应用程序可以使用第一个应用程序的IP地址和端口地址写入同一套接字。执行侦听的应用程序可以在第二个应用程序写入数据时就读取数据。因此数据是实时共享的,消除了数据过时问题。由于与通过套接字进行通信的应用程序相关的开销非常低,因此直接套接字编程可以实现高效的通信。有趣的是,大多数现代通信方法,如面向消息的中间件MOM和封装的消息也依赖于套接字编程。不过,套接字编程方法存在着许多缺点套接字编程的主要问题是仅能直接共享数据,而不能共享功能。套接字编程的API级别相当低,因此很难使用。由于API的级别很低,因此套接字编程不适于处理复杂的数据类型。连接代码隐藏在应用程序中,因此无法被重用。同时,套接字编程还不独立于平台,因为两端的应用程序必须在不同平台(如大型机和UNIX)上明确说明字节排序的差异(小端字节序与大端字节序)。由于套接字连接是点对点连接,因此两个应用程序之间也存在着紧密耦合关系。所以,我们需要一种解决方案,既能让应用程序共享数据和功能,又能避免低级别的网络编程。RPC是可以让应用程序共享功能的首选方法,下面将介绍这种方法。4百手起驾整理为您远程过程调用介绍RPC是一个重要步骤,因为它引入了一些重要概念和功能,并指定了共享功能所需的基本步骤。您还记得,服务实质上就是应用程序之间和组件之间共享功能。因此,详细讨论此集成模式非常有意义。RPC也称为客户端/服务器模式,它在套接字编程的上一级别。该模式省去了网络编程这一需要。简言之,RPC提供了面向功能的接口。开发人员定义一个函数,这与C语言中的函数语言非常类似,并生成代码,使该函数对调用方而言看上去就像一个常规函数。RPC的功能非常强大,足以作为客户端/服务器应用程序的基础。RPC引入的第一个有价值的概念是称为服务器的服务提供者和称为客户端的服务使用者。在RPC中,服务器应用程序提供一个可以由使用者(客户端)应用程序通过常规方式调用的函数。基本顺序是服务器(应用程序)启动,等待客户端发出请求。当服务器从客户端收到请求后,服务器执行本地函数,并将该函数的返回值返回给客户端。图1显示了完整的流程。图1远程过程调用的完整流程图1中引入的一个重要组件是客户端存根(STUB)。对于客户端,客户端存根显示为其调用的实际过程。存根的目的是将参数打包到远程过程中,可能将这些参数放入标准模式中,然后构建一个或多个网络消息。将参数打包称为封送5百手起驾整理为您(MARSHALING)。此封送的一个重要方面是不同平台之间的字节排序差异自动使用名为外部数据表示EXTERNALDATAREPRESENTATION,XDR的标准进行处理,从而使RPC独立于平台。RPC引入的第二个重要组件是远程过程调用运行时库(RPCRUNTIMELIBRARY)。客户端存根使用RPC运行时库提供的函数将系统调用转换为本地内核,并使用一个协议(如传输控制协议TCP)将打包的消息通过网络发送到服务器计算机。换句话说,RPC运行时库封装连接所需的所有系统调用即,通过网络发送打包的参数。因此,程序员不需要知道任何系统编程。在服务器计算机端,当内核中的网络例程接收到网络消息后,它使用RPC运行时将该消息发送到服务器存根。服务器存根解封输入参数,并将请求的本地过程调用到服务器例程。在完成本地过程之后,服务器存根将返回值封送到一个或多个网络消息中,并将打包的返回值通过使用RPC运行时发送到服务器存根。服务器内核使用网络协议(如TCP)将消息发送到客户端计算机。客户端存根通过使用RPC运行时例程从内核中读取网络消息。在转换返回值之后,客户端存根最终返回到客户端函数。此步骤是返回到客户端的常规步骤。RPC还引入了一个通过使用规范文件定义客户端和服务器之间接口的根本方法。可以将RPC规范文件视为当今世界服务接口开发中的第一步。清单1中提供了此类配置文件的一个示例SQUAREX。此文件通过RPCGEN之类的工具为服务器和客户端生成框架代码。注意,该规范是特定于语言的(如C语言),因此要求服务器和客户端使用同一种语言编写。清单1RPC规范文件的一个示例,该文件为计算一个数的平方定义了一个远程过程STRUCTSQUARE_IN/INPUTARGUMENT/LONGARG1STRUCTSQUARE_OUT/OUTPUTRESULT/LONGRESULTPROGRAMSQUARE_PROGVERSIONSQUARE_VERSSQUARE_OUTSQUAREPROCSQUARE_IN12/PROCEDURENUMBER/23/VERSIONNUMBER/0X31231234/PROGRAMNUMBER/为概括说明什么是RPC,需要注意的重要一点是,RPC通过让应用程序共享功能允许第一个实例进行实际分布式计算。在此过程中,引入了一些新概念,其中包括服务提供者(服务器)和服务使用者(客户端)。6百手起驾整理为您平台独立性。接口定义的概念。封送输入和输出参数。在库中封装网络通信所需的系统调用。不过,RPC存在着许多缺点,其中包括主要缺点是几乎没有代码重用空间。这是因为用于封送和解封的代码以及用于网络通信的代码隐藏在客户端和服务器应用程序中。RPC不是独立于语言的,并且客户端和服务器必须采用相同的编程语言。并且应用程序之间也存在非常紧密的耦合。这是因为调用是同步进行的,客户端应用程序必须等待服务器完成该过程才能执行进一步处理。而且,虽然可以通过使用多线程克服此问题;但是,这导致了另一级别的编程复杂性,该方法存在着垃圾收集方面的固有风险。客户端和服务器集成是点对点集成,因此,当需要集成许多应用程序时,这种方法不合适。在涉及大量的远程调用时,也不适合使用RPC。这是因为调用是同步进行的,此特征使客户端只能在服务器完成其工作之后才能进行处理。结束语本文描述了两个最早的集成模式。第一个是套接字编程,该模式适用于实时共享数据,第二个是远程过程调用,该模式适用于共享功能。还学习了连接性、服务提供者和服务使用者以及平台独立性概念。为了改进远程过程调用,共采用了两种方法。第一种方法是使用分布式对象(也称为对象请求代理),第二种方法是使用异步消息传递。分布式对象方法侧重于代码重用和语言独立性,而异步消息传递则解决了应用程序之间紧密耦合的问题。在本系列的第2部分中,您将首先学习分布式对象方法,它与远程过程调用方法的关系更密切。还需要指出的重要一点是,如今大多数应用服务器都基于ORB技术。第2部分进一步介绍基本概念的演变引言本系列文章的第1部分和第2部分主要探索企业集成模式的发展,介绍一些基本概念,并重点介绍基于面向服务的体系结构SOA的集成模式。第1部分介绍了两个早期模式数据共享(SOCKET编程)和RPC,探索了服务提供者和服务使用者、平台独立性和连接性的概念。7百手起驾整理为您为改进RPC的功能,现在我们介绍以下两种方法分布式对象,也称为对象请求代理(OBJECTREQUESTBROKER,ORB)此方法侧重于代码重用和语言独立性。异步消息传递此方法解决了应用程序之间的紧密耦合问题。让我们首先了解一下分布式对象这一方法,因为它与RPC的关系更密切一些。目前,大多数应用服务器都基于ORB技术。分布式对象对象请求代理分布式对象技术的实现有三个主要类型。其中之一就是语言独立性和平台独立性,即所谓的公共对象请求代理体系结构(COMMONOBJECTREQUESTBROKERARCHITECTURE,CORBA)。其他技术则依赖于语言或者依赖于平台和语言。JAVA远程方法调用RMI是依赖于语言技术的示例,而MICROSOFT分布式对象组件模型DCOM和IBM系统对象模型SOM是依赖于平台技术的示例。现在我们将详细介绍CORBA,因为它是最常见(独立于语言和平台)的技术,并且来自不同供应商且基于此技术的产品可以一起使用。例如,基于ORB的IBMWEBSPHEREAPPLICATIONSERVER可以与许多其他供应商的应用服务器通信。除引入面向对象的优点(如继承、多态性和封装)外,CORBA还引入了大量的新功能。最重要的可能要数ORB这一概念,ORB提取了用于封送输入和输出参数的代码和用于从客户端和服务器应用程序到独立软件组件通信的代码。另外,ORB还提供了用于获取远程对象引用的设备,以便调用该远程对象上的方法。此分离允许多个应用程序重用同一代码,并通过从点到点的集成中移去应用程序,使这些应用程序之间能够进行一定程度的分离。从点到点的集成中移去应用程序可能是ESB概念发展的第一步。图1演示了这一情况,该图显示了同一台计算机上的多个应用程序可以使用同一ORB相互通信,并可以与不同计算机上的应用程序进行通信。图1多个应用程序通过ORB相互通信,演示代码重用和通过ESB的间接通8百手起驾整理为您信(ESB方向的第一步)图2显示了ORB的基本工作原理。当应用程序需要使用另一个组件的服务时,它首先获取提供该服务的对象的引用。获取对象引用后,客户端应用程序可以调用该对象上的方法,该对象就好像是本地对象。图2远程对象上使用ORB的方法调用,包括获取远程对象引用CORBA还引入了接口定义的语言独立性概念。这是通过引入接口定义语言IDL(类似于C编程中的头文件)完成的。它只定义接口,但不包括实现。IDL负责确保在不同的语言之间正确地交换数据,从而负责CORBA的语言独立性。这允许使用一种语言(如C)实现客户端,使用另一种语言(如JAVA)实现服务器。清单1显示了一个IDL示例。9百手起驾整理为您清单1IDL接口定义示例,它使用单个远程操作为计算数的平方定义单个接口MODULETESTINTERFACESQUAREATTRIBUTEDOUBLEARG1DOUBLEGETSQUAREINDOUBLEARG1CORBA中提出的另一个重要概念是命名服务,它允许CORBA对象注册,并按名称查找这些对象。此概念包含了SOA中注册概念所需的种子。总的说来,CORBA引入了大量的新功能,并允许重用通信代码,对代码进行封送和解封送处理。远程对象的注册和位置概念、语言独立性接口定义和从点到点集成移除是引入的重要新功能。因此,对于许多集成项目,基于ORB的解决方案可能是合适的选择。不过,使用基于ORB的集成存在一些缺点,因此,在某些情况下,这可能不是最佳选择。其中的一些注意事项包括基于ORB的解决方案无法进行大容量扩展,因此,在希望处理大量的事务时,该解决方案并不合适。缺乏扩展性是由于交互操作的同步特性,该特性使客户端应用程序在收到服务器的响应之前无法继续进行其工作。客户端对象和服务器对象之间的交互粒度太细,在网络中会导致许多问题。因此,无法有效地使用网络带宽,这将进一步限制解决方案的可扩展性。基于ORB的通信是不可靠的,无法保证将消息和返回值发送到既定目标。因此,在某些情况下(如网络连接中的中断),客户端应用程序在其操作过程可能会发生挂起。尽管从理论上讲,CORBA是独立于语言的,但是,使用ORB的大多数商业产品都是特定于语言的,如JAVA或JAVA2PLATFORMENTERPRISEEDITIONJ2EE。这是因为CORBA开放标准已证明由于太难而无法实现最常见的形式。这限制了ORB对使用这些特定语言编写的应用程序的集成能力。异步消息传递为处理这些问题,就出现了并行开发,并行开发基于异步消息传递,并包含开发另一个类型的ESB所需的种子。此类型的ESB提供了比基于ORB的ESB类型更具扩展性的解决方案。在异步消息传递中,客户端或客户端对象将消息发送到目标应用程序,但是不等待响应就继续其工作。这将导致在涉及的应用程序之间发生某种程度的分离。因此,如果期望处理大量事务,可以将异步消息传递用作集成的基础。10百手起驾整理为您在消息传递过程中,应用程序不直接相互通信,它们之间没有建立专用通信链接。相反,它们可以通过队列进行间接通信(如图3所示)。应用程序A将消息发送到队列。应用程序A提交消息后,应用程序B从队列中检索该消息,不过,如果每个接收应用程序都有专用队列,则通信仍属于点到点的通信。在异步消息传递中,存在一个名为发布和订阅的选项,多个应用程序可以从中接收同一消息。但这常常是不够的,因为一个应用程序需要更复杂的消息路由。例如,可能需要基于消息的内容和大小来路由消息。在这种情况下,除消息传递软件外,中间件还必须包括通常称为消息代理的消息路由器。中心消息代理可以从不同的应用程序接收消息,为每种消息类型确定正确的目的地,并将消息路由到适当的目的地应用程序。它允许应用程序相互通信,而无需知道接收应用程序的位置。图4显示了这一流程,还指示消息传递以及消息代理可以形成ESB的框架。图3使用队列进行消息传递图4使用消息传递软件和中心消息代理(路由器)组件的多个应用程序可以相互通信,并可以与通过网络连接的其他计算机上的应用程序进行通信同步消息传递的另一个优点是能够保证消息的提交。通过在连接应用程序的网络两端保留该消息可以做到这一点。这可以确保即使在网络临时中断或者接收11百手起驾整理为您应用程序与发送应用程序未同时运行时也能提交消息。使用RPC或ORB则不能够提供此保证。而使用消息传递中间件(如IBMWEBSPHEREMQ)的另一个优点是可以通过网络交换和传输大量的数据,从而进行粗粒度的数据传输。这将能够更高效地使用网络带宽。尽管从理论上讲异步消息传递是单向通信,但是可以让它调用接收应用程序中的一些功能。接收应用程序中此类功能调用的一个示例是消息驱动的BEANMDB。MDB和类似的软件部分没有返回值。可以使用异步消息传递模拟使用两个队列的同步消息传递。图5显示了此内容,其中一个队列(即请求队列)用于提交请求,而通过另一个队列获取返回值。请求队列是请求应用程序(应用程序A)的输出队列;同时它又充当接收应用程序(应用程序B)的输入队列。类似地,响应队列用作应用程序B的输出队列和应用程序A的返回值的输入队列。图5使用消息传递软件模拟同步消息传递在目前所描述的选项中,当涉及大量事务时,异步消息传递可能是应用程序共享数据和功能的最高效方法。不过,这并不适用于所有情况;必须进行适当的调整,才能得到适合您的情况的解决方案。异步消息传递也存在一些缺点一般来说,异步消息传递软件价格昂贵,ESB的价格依赖于异步消息传递的中间件,有时比基于ORB的中间件ESB的成本要高很多。需要一个与异步消息传递环境相关的学习过程。在模拟两个应用程序之间的同步交互时,涉及一定量的开销和进行一些簿记。12百手起驾整理为您结束语本系列文章的第1部分和第2部分描述了一些最基本的概念,目的是为了便于了解面向服务的集成模式。这些概念包括松散耦合、代码重用和分层、语言和平台独立性、独立于语言的接口、在运行时发现远程对象的思想、远程调用方法以及针对可扩展性的异步消息传递。后续的两篇文章(第3部分和第4部分)将介绍如何使用这些概念,并进一步发展为面向服务的集成模式。例如,定义和发现的思想可发展为SOA注册的概念,而ORB和异步消息传递的概念则形成ESB模式的核心。第3部分WEBSERVICES和注册中心引言在本系列的前两篇文章中,您已经掌握了一些基本概念。现在,您将了解WEBSERVICES,这些服务定义了处理异构问题的标准。此问题是指这样一种事实,在典型的大型企业的IT基础结构中,通常使用不止一种技术来集成应用程序,在此类环境中,一般无法实施企业范围的统一标准。在大型企业中,通常有几种不同类型的技术异构性,其中包括中间件异构性在大型企业中,通常不止使用一种类型的中间件。最常见的两种类型是应用服务器和面向消息的中间件MOM。此外还有品牌异构性,这需要支持不同品牌的应用服务器和MOM。协议异构性此异构性是指用来访问由各种应用程序提供的服务的不同传输协议。有关这些协议的示例包括INTERNETINTERORB协议IIOP、JAVA远程方法协议JRMP、HTTP和HTTPS。同步异构性几乎始终需要同时支持应用程序之间的同步和异步交互。另外,通常还需要回调方法和发布与订阅方法。协议不匹配与通信协议异构性相关的问题是,不同的应用程序需要使用不兼容的协议相互通信。例如,应用程序A可能需要使用HTTP与应用程序B通信。但是,对应用程序B而言,合适的协议可能是IIOP。在此情况下,就需要一个协议转换,以便应用程序A可以与应用程序B通信。数据格式的多样性存在多种数据交换格式。在大多数情况下,数据依赖于所使用的中间件。接口声明的多样性在服务接口的声明方式和用来调用该服务的方式上也存在着很大差异。例如,对于接口的声明方式而言,公共对象请求代理体系结构CORBA和JAVA远程方法调用RMI就不相同。没有公共的服务查找位置缺少公共的查找服务以处理大型企业中的各种服务的位置。13百手起驾整理为您另一个常见问题是,每当软件提供者提供了软件的新版本时,就必须修改使用者的应用程序以适应提供者应用程序中的更改。针对此问题的解决方案是需要找到一些方法来允许扩展这些服务,例如,在不中断以前版本的使用者应用程序的情况下添加更多的参数这种多样性和可扩展性一部分是通过制定标准得到了解决的,而另一部分是通过进一步发展技术得到了解决。本文主要涉及有关标准方面的问题。(第4部分将主要着眼于技术方面的发展和开发。)这些标准集中了由主要市场参与者制定和接受的规范、规则和指南,并且独立于实现细节。这些标准奠定了公用性的基础,并通过互操作性被广泛接受。这些标准的示例包括公共通信语言XML。公共消息交换格式SOAP。通用服务规范格式(WEBSERVICES描述语言,即WSDL)。通用服务查找方法(统一描述、发展和集成,即UDDI)。技术开发示例包括进一步完善企业服务总线ESB思想,以便能够为服务提供者和服务使用者处理不同的协议。进一步完善注册思想,以方便服务的注册和发现。XMLXML已作为进行数据和文档交换的独立于中间件的标准格式而被广泛采用。XML基本上是IT行业认同的最小通用标准。与CORBAIDL或JAVA接口不同,XML不与任何特定的技术或中间件标准绑定,目前经常作为跨不同的大部分不兼容的中间件平台处理数据的临时格式使用。XML可以免费使用,并附带了可以在许多不同平台上使用的大量工具,其中包括不同的开源分析API,如SIMPLEAPIFORXMLSAX和DOCUMENTOBJECTMODELDOM。这些工具支持处理和管理XML文档。XML的另一个优点是,它在数据传输过程中可以保留数据的结构。XML还非常具有灵活性,这使它成为解决中间件和应用程序异构问题的最合适的标准。SOAP虽然采用XML是满足解决异构和可扩展性要求的一个重要步骤,但仅用XML还不足以让双方(服务提供者应用程序和服务使用者应用程序)正确通信。为了高效通信,双方必须能够根据协商一致的格式交换消息。SOAP就是这样一个协议;它为服务提供了通用的消息格式。SOAP是一种基于文本的消息传递格式,使用一种基于XML的数据编码格式。SOAP既独立于编程语言,又独立于操作平台。它在端点不需要任何特定的技术,14百手起驾整理为您因此完全不需要知道所用的供应商、平台和技术。其文本格式还使SOAP成为防火墙友好的协议。虽然SOAP最初在设计上仅与HTTP一起使用,但任何传输协议或消息传递中间件都可用来传送SOAP消息。SOAP消息是一个完整的XML文档,顶级元素是信封元素。信封元素包含一个BODY元素和一个可选的HEADER元素。该BODY元素通常携带接收者所使用的实际消息。该HEADER元素通常用于中间处理器,以提供高级功能。清单1中显示了一个SOAP请求获取股票报价的简单而完整的示例。该清单显示了如何使用XML编码SOAP消息,介绍了一些SOAP元素和属性。清单1显示,SOAP中的顶级元素必须是ENVELOPE元素,该元素包括以下两个命名空间命名空间SOAPENCODINGSTYLE表示SOAP编码,另一个命名空间表示SOAP信封。虽然HEADER元素是可选的,但是,当其出现时,它必须是ENVELOPE元素的第一个直接子元素。如果BODY元素出现,它必须出现在所有SOAP消息中,并且必须跟在HEADER元素之后。该BODY通常包含实际消息的规范。在清单1中,该消息包含该方法的名称GETLASTTRADEPRICE和输入参数值IBM。清单1SOAP消息示例IBMWEBSERVICES描述语言解决上面提到的基于服务的集成模式中异构问题的第二个,XML应用在通过使用WSDL声明的服务接口。由于具有上一段落中概括的XML优势,所以大多数情况下都选择它。此外,还添加了解决企业的异构问题的新功能。这包括指定访问该服务所需的传输协议的规定,声明同步和异步服务的更明确的方法。最后,但也是同样重要的一点是,新方法允许在不停用以前版本的客户端软件的情况下扩展服务。看一个WSDL文档示例会对您很有启发。清单2中显示了部分WSDL文档,这部分文档声明了一项获取天气信息的服务。15百手起驾整理为您清单2WSDL示例16百手起驾整理为您正如清单2所示,完整的WSDL包括一套定义,这些定义以ROOT定义元素开头,后跟六个介绍服务的具体元素定义TYPES、MESSAGE、PORTTYPE、BINDING、PORT和SERVICE。下面让我们更详细地分析一下这些元素TYPES定义作为服务一部分进行交换的消息中包含的数据类型。数据类型可以是简单、复杂、派生或者数组类型。在WSDL文档的消息元素中引用的类型(架构定义或参考)是在该WSDL文档的类型元素中定义的。MESSAGE定义该服务交换的消息。WSDL文档对于每个交换消息有一个消息元素,并且该消息元素包括与消息相关的数据类型。例如,在清单1中,第一个消息包括单个部分,它属于类型字符串。PORTTYPE以抽象方式指定作为该服务一部分的操作和消息。对于它定义的每项服务,WSDL文档都有一个或多个PORTTYPE定义。在清单1中,仅定义了一个端口类型,即WEATHERSERVICE。BINDING将抽象的端口类型与其消息和操作绑定到传输协议和消息格式。在清单1中,定义了一个操作GETWEATHER,它同时具有输入和输出消息。这两则消息都以SOAP正文格式交换。绑定传输协议是HTTP。SERVICE和PORT通过为绑定提供单一地址,定义实际服务的名称并为该服务指定一个端点。一个端口只能有一个地址。该SERVICE元素通过名称属性将相关端口组合在一起,为该服务提供逻辑名称。在清单1中,定义了一个名为WEATHERWEBSERVICE的服务,该服务具有地址为HTTP/MYCOMPANYCOM/WEATHERSERVICE的单一端口(或端点)。注册中心和UDDI除服务接口声明(在此示例中是WSDL)和SOAP消息传递标准外,大型企业还需要一个中心位置,以便服务提供者可以使用WSDL发布其服务,服务使用者可以发现现有服务。这主要是因为,在大型企业中,开发人员资源在地理位置上可能是分散的。此类中心位置被称为注册中心。注册中心就像一个图书馆的卡片目录,用来记录新书和其他媒体的入库情况并查找现有的项目。它还像电话系统的黄页,服务提供者用该页发布服务,服务使用者用该页查找服务。当使用者找到某项服务时,该注册中心在服务提供者与服务使用者之间将不起任何作用。UDDI规范定义注册、注销和查找服务的标准方法。图1显示了UDDI如何对服务启用动态描述、发现和集成。服务提供者首先使用UDDI注册中心注册服务。服务使用者然后在UDDI注册中心中查找所需的服务,当它发现需要的服务时,使用者将直接与提供者绑定来使用该服务。17百手起驾整理为您图1通过使用UDDI的注册中心的基本工作原理在通过使用注册中心发现服务之后,对于特定的服务有三种绑定类别开发时间绑定在此情况下,除服务操作签名和服务(网络)协议外,在开发时就已经知道该服务的实际物理位置。相应地开发客户端逻辑。因此,硬编码该绑定来使用特定的服务,并且绑定是永久性的。部分运行时绑定与前述情况一样,在开发时就已经知道服务操作的签名和网络协议。但是,在代码开发期间不知道特定服务的地址。在此情况下,将启用使用者应用程序,通过使用存储库中的特定名称或属性查找服务以动态地绑定到不同的服务实例。例如,使用者应用程序将依据用户所选的打印机名称,查找具有不同名称的打印服务。另一个示例是根据属性选择打印机服务时的情况,如场所编号和文档类型。运行时绑定在此情况下,在开发时甚至不知道服务规范(操作签名)和协议。客户端仍可以使用属性发现服务(如场所编号和文档类型),但不知道服务接口。在这里,某类反射机制必须在客户端实现,以便客户端能够动态地发现该服务的语义和有效的请求格式。此类服务发现是最复杂和最不常用,一般原因是它需要复杂的客户端逻辑来动态解释未知服务接口的语义。结束语在本系列文章的这一部分中,您学习了构成WEBSERVICES的最常见的几种标准。这些标准包括XML、WSDL、SOAP和UDDI。使用这些标准可以解决大型企业中的许多异构问题。但是,还有其他一些异构问题尚未解决。例如,在服务使用者与服务提供者所使用的传输协议之间可能存在不匹配的问题。此类问题的解决方案需要更进一步的技术开发,这些内容将在本系列的第4部分中讲述。18百手起驾整理为您第4部分企业服务总线简介本系列的前三篇文章介绍了开发基于服务的集成模式所需的基本概念,并解释了各种组件和标准,它们统称为WEB服务。WEB服务旨在处理大型企业中存在的一些异构性。不过,仅使用WEB服务不足以提供解决异构性问题的完整解决方案。在这一部分(即本系列文章的第4部分)中,将了解企业服务总线,其与WEB服务一起构成完整的基于服务的集成模式。引言WEB服务旨在处理大型企业中遇到的一些应用程序异构性问题。不过,WEB服务本身并不能提供解决异构性问题的完整解决方案。特别是,它们不是为了处理服务使用者和服务提供者应用程序使用的传输协议之间不匹配的情形。与此不匹配情况相关的问题是接口不匹配的问题。此类不匹配情况通常是由于合并和收购的结果造成的。一种可能的解决方案是根据新的WEB服务重写这些应用程序,以消除这些不匹配的情况。但往往是没有足够的开发人员资源或者没有足够的时间来执行如此大量的任务。在这种情况下,企业服务总线ESB为解决大型系统中异构性问题提供一个优秀的解决方案。ESB是面向服务的体系架构SOA中不可或缺的一部分。它提供了综合、灵活而且一致的集成方法。在ESB模式中,服务使用者和服务提供者不直接交互;而是通过总线进行通信的。该总线可提供许多功能,其中包括协议转换、数据转换和基于内容和上下文路由的核心功能。您将了解在以下两部分中描述的这些功能和其他常见功能。考虑使用ESB的另一个原因是,有时候出于合同或法律的原因必须保证消息的提交。在这些情况下,需要使用WEB服务之外的服务。此类服务的一个示例是使用消息传递软件(例如IBMWEBSPHEREMQ系列)的异步服务。通过在请求者和服务器端的网络上持久保留消息可以保证消息的提交。核心功能通过阅读本系列第2部分中的对象请求代理ORB和异步消息传递,您可以了解到这两种技术都提供基于内容或上下文的某种形式的基本路由。这种基于内容或上下文的路由构成了ESB的框架。因此,通常使用的ESB类型有两种基于ORB产品的ESB,如IBMWEBSPHEREAPPLICATIONSERVER。通常,这些产品在处理WEB服务、XML和JAVA远程方法调用RMI方面功能非常强大。使用这些产品的成本相当低而且非常易于设置。但是,对于大量事务和处理较为多样化的应用程序方面伸缩性较低。19百手起驾整理为您基于异步消息传递软件的ESB产品,如WEBSPHEREMQ。此类ESB产品的一个示例是IBMWEBSPHEREMESSAGEBROKER。这些ESB产品在事务量和处理较为多样化的应用程序方面具有高度伸缩性。但是这些产品较为昂贵,并且需要的设置时间也较长。这两类产品通常具有互操作性。例如,IBMWEBSPHEREENTERPRISESERVICEBUS可以与基于WEBSPHEREMESSAGEBROKER的ESB进行完全互操作。基于内容的路由本身并不足以解决大型企业中的所有异构性问题。具体来说,通信协议日益增多,包括HTTP、HTTPS、INTERNETORB间协议(INTERNETINTERORBPROTOCOL,IIOP)、JAVA远程方法协议(JAVAREMOTEMETHODPROTOCOL,JRMP)和传输控制协议(TRANSMISSIONCONTROLPROTOCOL,TCP)。因此,您会发现服务使用者可能仅被设置为使用一种协议,但服务提供者更愿意使用不同的协议。如果没有将一种协议转换为另一种协议的工具,则服务使用者很难与给定的服务提供者进行通信。与此需求相关的需求是使用者喜欢的数据格式可能与服务提供者使用的数据格式不同。因此,还需要一种能够提供此数据转换的工具。总的来说,ESB提供的最少功能包括基于上下文或内容的路由。协议转换。数据转换。如果一个组件中包括这些最少功能,则该组件即成为提供虚拟化的服务总线,因此应用程序不需要直接相互通信。图1显示了此间接交互的示意图。图1通过ESB间接交互ESB和包括的这些功能提供了以下虚拟化类型位置和标识虚拟化服务使用者不需要知道服务提供者的位置。另外,服务使用者也不知道服务的提供者是谁。多个服务提供者中的任何一个提供者都可以对某个请求提供服务。这还允许添加或删除服务提供者,且不会中断服务。交互协议服务使用者和服务提供者不需要共享同一协议或交互样式。例如,作为SOAPOVERHTTP传入的请求可以由仅使用RMIOVERIIOP的提供者提供服务。20百手起驾整理为您接口服务使用者和服务提供者不需要就通用接口达成一致。ESB可以通过将请求消息转换为服务提供者所需的形式来协调这些差异。这些方面的虚拟化使得ESB能够为服务提供者提供其实现的透明性,可以同时在开发和部署阶段向服务使用者透明地提供服务。ESB负责向适当的服务提供者提交服务请求,服务提供者响应这些服务请求,而不需要知道这些请求来自何处。此外,ESB本身对使用者和提供者都不可见。应用程序逻辑可以使用或提供某个服务,但不知道连接是直接的还是已由ESB使用。因此,是否使用ESB进行连接的决定是一个在部署时的决定。不需要对应用程序代码进行任何更改。ESB支持应用程序之间的多个交互类型,包括同步(或请求/响应)异步(或单向)发布与订阅ESB还支持参与者的非功能规范的需求,而且ESB可以提供相应服务来实现服务参与者的这些需求。这些非功能需求通常称为服务质量QOS需求,并可能包括性能和可靠性、数据加密、服务请求授权以及服务交互的自动审核。通用功能您通常还可能在ESB模式的特定实现中发现一些可选功能。这些附加功能与核心功能统称为中介模式。ESB中包括的附加功能有数据增强增强来自外部源的消息有效负载,以便与服务提供者的需求相匹配。外部源可能是数据库。分发多个使用者应用程序可以订阅某个特定类型的消息和将这些消息分发到这些应用程序的ESB。相关性相关性提供一种工具,可从多个消息或事件流中获取复杂事件。该工具依赖于模式识别规则和形成复杂输入消息的规则。通常,ESB实现中还包括一些实用功能。这些实用功能包括日志、异常/错误处理和监视功能。ESB的组件要实现ESB的核心功能,您需要多个概念性组件。图2显示了这些最少组件示意图。21百手起驾整理为您图2ESB的组件下面是这些组件及其功能的简要描述适配器适配器特定于每个输入和输出机制。输入或输出机制指定消息类型和传输协议。例如,有一个单独适配器处理涉及SOAPOVERHTTP的WEB服务。类似地,有一个单独的适配器处理通过IIOP的JAVARMI调用。这些适配器允许ESB使用各种输入和输出机制与应用程序交互。您需要使用适配器进行同步交互(如HTTP和WEB服务)和异步调用(如WEBSPHEREMQ输入和输出节点)。分配器分配器组件相当于ESB的集中输入点。它从适配器接收请求,并将该请求传递给任务分配器以便进行路由和消息转换工作。分配器还提供基本的基于内容的路由功能。请求处理程序每个服务都有自己的请求处理程序。请求处理程序向路由引擎提供特定于服务的参数,然后将请求提交到路由引擎执行适当的任务。数据转换器数据转换器是ESB的关键元素。它转换请求中收到的数据以匹配调用服务所需的数据。换句话说,它是连接服务接口之间的桥梁。路由引擎和任务分配器这两个组件负责转换请求并将其路由到服务委托。服务委托委托是提供者的特定于终端的组件,这些组件使用适配器与服务提供者终端通信。委托提供关于与提供者终端通信的语义的较粗粒22百手起驾整理为您度的抽象;因此,它们特定于终端。另一方面,适配器对较细粒度的协议机制进行抽象化以连接到终端。部署现在谈论实际的部署问题,注意,已知共有四种部署ESB的模式。这些模式和应使用每种模式的条件是全局ESB该模式要求单一的ESB,适用于小型企业或单个业务部门(LINEOFBUSINESS,LOB)。在此模式下,向所有参与者提供所有服务。图3全局ESB直接连接的ESB该模式涉及多个直接连接的ESB。此模式使用一个公共注册中心,因此服务在整个企业中可视。例如,可以使用此模式将一组打包的应用程序(如SAP应用程序)连接到企业的其他应用程序。这些打包的应用程序通常使用自己的ESB连接不同的模块,如客户关系管理CRM和企业资源规划ERP。例如,SAP模块由自己的ESB(称为NETWEAVER)连接。例如,NETWEAVER可以连接到WEBSPHEREENTERPRISESERVICEBUS来提供SAP应用程序和其他应用程序(C、JAVA或J2EE)的连接性。图4直接连接的ESB23百手起驾整理为您联合ESB它们类似于由多个ESB连接的直接连接ESB模式。不过,参与ESB的其中之一与其他ESB有主从关系,并控制参与者可以访问哪些内容。企业中希望与其他部门共享其服务的适度自主的部门可以使用第三种模式。图5联合ESB代理ESB在此模式中,使用代理作为连接的ESB之间的中介。每个ESB都有自己的注册中心,并控制除其自身域之外支持哪种类型的交互。开发并部署自己的服务但希望向企业的其他部门有选择地公开一组服务的自主部门可以使用此模式。24百手起驾整理为您图6代理ESB结束语ESB是一种体系架构模式,支持通信各方间的服务交互的虚拟化和管理。它提供服务提供者与请求者之间的连接性,方便他们即使在不精确匹配的情况下也可以进行交互。此模式可以使用各种中间件技术来实现。功能最强大和最具伸缩性的ESB使用基于WEBSPHEREMQ的WEBSPHEREMESSAGEBROKER。不过,如果还需要考虑成本问题和易于设置性,则可以使用基于IBMWEBSPHEREAPPLICATIONSERVER的WEBSPHEREENTERPRISESERVICEBUS。IBM还提供了WEBSPHEREDATAPOWERSOAAPPLIANCES集成设备,它们可以提供附加的即用安全功能和XML处理。25百手起驾整理为您毕业论文写作流程一览表毕业论文是教学科研过程的一个环节,也是学业成绩考核和评定的一种重要方式。毕业论文的目的在于总结学生在校期间的学习成果,培养学生具有综合地创造性地运用所学的全部专业知识和技能解决较为复杂问题的能力并使他们受到科学研究的基本训练。毕业论文的撰写主要包括几个方面的内容1论文的选题2论文写作框架的确定3文献综述4开题报告5论文的撰写。一、论文的选题选题是论文撰写成败的关键。因为,选题是毕业论文撰写的第一步,它实际上就是确定“写什么”的问题,亦即确定科学研究的方向。如果“写什么”不明确,“怎么写”就无从谈起。选题首先要符合专业培养目标,要与所学专业相关其次,选题要有理论和现实意义,使其论文形成后既有理论支撑,同时要对现实有所促进再次选题要注意一些有价值的课题,比如本专业的研究空白、有争议的话题,或者从一个新的角度来研究本专业的老话题、与研究领域有关的当前热点问题、新问题、亲自参与实践调查的课题第四,选题要结合考虑资料的利用。能找到比较充分的资料来源26百手起驾整理为您对于作者写作论文有重要帮助最后,选题宜小不宜大。题目范围太大易导致内容空泛,难于驾驭。一论文的选题的依据1、依据个人兴趣爱好2、依据个人知识结构3、依据当前本专业的研究热点4、依据当前国际国内经济政治局势5、依据管理学权威刊物的近期发表论文6、请教他人。二毕业论文的选题原则和要求1、注重选题的实用价值,选择具有现实意义的题目。1理论联系实际,注重现实意义2要注重选题的理论价值。2、勤于思考,刻意求新。1从观点、题目到材料直至论证方法全是新的2以新的材料论证旧的课题,从而提出新的或部分新的观点、新的看法3以新的角度或新的研究方法重做已有的课题,从而得出全部或部分新观点4对已有的观点、材料、研究方法提出质疑,虽然没有提出自己新的看法,但能够启发人们重新思考问题。以上四个方面并不是对“新意”的全部概括,但只要能做到其中一点,就可以认为文章的选题有了新意。二、论文写作框架的确定论文写作框架起疏通思路、安排材料、形成结构的作用。一般来讲,学术论文框架需要采用递进的逻辑体系,不建议采用并列的逻辑体系,即论文的各个部分应该是层27百手起驾整理为您层递进,有一定的逻辑关系的。如第一部分是相关概念和涵义,第二部分是问题提出,第三部分是分析问题,第四部分是解决问题的办法,第五部分是解决问题需要实现的一些条件和保障措施,第六部分是总结。可以根据具体情况进行删减和添加。论文框架确定后,应交给导师审阅,再与导师仔细探讨行文的思路,听取导师的指导意见,最后确认论文写作内容框架,作为开题报告中的内容部分。三、文献综述一文献综述的介绍文献综述是在确定了选题后,在对选题所涉及的研究领域的文献进行广泛阅读和理解的基础上,对该研究领域的研究现状包括主要学术观点、前人研究成果和研究水平、争论焦点、存在的问题及可能的原因等、新水平、新

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论