面向服务的架构标准SOA
- 格式:doc
- 大小:55.50 KB
- 文档页数:18
什么是SOA架构,它的目的是什么,现实意义何在?姓名:郭志坚一.什么是SOA架构?SOA是英文Service-Oriented Architecture 三个首字母单词的缩写,中文译为:面向服务架构(SOA)二.SOA架构的由来或产生的历史原因传统企业(数据库)应用软件产品,如MRP、ERP、OA系统等,在设计或架构上都是紧偶合、封闭式、自成体系,属于一次性投入一次性完结的产品。
这样的产品很难适应或快速响应市场或客户灵活多变的需求,以及后续的扩展。
在这样的市场、及客户需求下,从而催生了软件产品一种新的设计或架构的理念:面向服务架构(SOA架构)三.SOA架构的定义或特性SOA架构,是一种粗粒度、开放式、松耦合的服务结构,要求软件产品在开发过程中,按照相关的标准或协议,进行分层开发。
通过这种分层设计或架构体系可以使软件产品变得更加弹性和灵活,且尽可能的与第三方软件产品互补兼容,以达到快速扩展,满足或响应市场或客户需求的多样化、多变性。
四.SOA架构的组件分层BEA WorkShop for Weblogic Platform (或简称:Weblogic WorkShop) 软件开发工具,是目前行业唯一认可的SOA架构软件产品开发工具。
用户在其下进行SOA架构的软件产品开发,可以不必关注有关SOA架构的标准要求或协议要求,只需埋头实现业务需求的组件编写工作。
组件编写要求分四层:持久层、逻辑层、执行层、用户接口层。
如软件系统为分布式系统,则需要编写第五层:Web Services(服务层,注意不是:Web Server 服务器)五.SOA架构的目的是什么,有何现实意义?软件产品设计成SOA架构及目的或者现实的意义如下:1.保全或保护企业原来遗留下来的软件系统(数据),实现软件数据的无缝接轨,避免企业原有投资打水漂、数据需重复录入。
2.由此,可以缩短软件产品的实施推广期。
3.可以在实施推广期间,快速调整以最大程度的满足客户的需求。
介绍一下SOA和SOA的基本特征
什么是SOASOA:面向服务的体系结构(Service-Oriented Architecture,SOA,也叫面向服务架构), SOA是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构。
SOA 是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。
这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。
SOA与传统服务的区别传统的Web(HTML/HTTP)技术有效的解决了人与信息系统的交互和沟通问题,极大的促进了B2C模式的发展。
WEB 服务(XML/SOAP /WSDL)技术则是要有效的解决信息系统之间的交互和沟通问题,促进B2B/EAI/CB2C的发展。
SOA则是采用面向服务的商业建模技术和WEB服务技术,实现系统之间的松耦合,实现系统之间的整合与协同。
WEB服务和SOA的本质思路在于使得信息系统个体在能够沟通的基础上形成协同工作。
1。
面向服务架构的主要技术和标准面向服务架构的主要技术和标准包括以下几个方面:1. SOAP(Simple Object Access Protocol):SOAP是一种基于XML的通信协议,用于在网络上进行结构化信息交换。
它定义了一套标准的消息格式和通信方式,使得不同平台和语言之间的服务可以相互通信。
2. REST(Representational State Transfer):REST是一种使用简单的HTTP协议进行通信的架构风格。
它是基于资源的概念,通过HTTP的GET、POST、PUT、DELETE等方法对资源进行操作,实现了松耦合、可扩展和可伸缩的服务调用。
3. WSDL(Web Services Description Language):WSDL是一种用于描述Web服务的XML语言。
它定义了Web服务的接口和消息格式,使得客户端可以根据WSDL文件生成与服务进行通信的代理类。
4. UDDI(Universal Description, Discovery and Integration):UDDI是一种用于描述、发现和集成Web服务的标准。
它提供了一种在分布式环境中注册和查找Web服务的方式,使得客户端可以方便地发现并调用所需的服务。
5. XML(eXtensible Markup Language):XML是一种用于描述结构化数据的标记语言。
它被广泛应用于面向服务架构中的消息交换和数据传输,通过定义可扩展的元素和属性,实现了不同系统之间的数据交互。
6. JSON(JavaScript Object Notation):JSON是一种轻量级的数据交换格式。
它以简洁的方式表示结构化数据,并支持多种编程语言。
在面向服务架构中,JSON常用于替代XML作为数据的交换格式。
7. SOA(Service-Oriented Architecture):SOA是一种面向服务的架构风格。
它通过将系统拆分成独立的服务,实现了松耦合、可复用和可组合的系统设计。
面向服务的架构(SOA)与微服务架构的比较与应用引言:面向服务的架构(Service-Oriented Architecture,简称SOA)和微服务架构是当前软件开发领域中非常热门的两种架构风格。
本文将比较这两种架构,并探讨它们在实际应用中的优缺点和适用范围。
一、面向服务的架构(SOA)的概念与特点1.1 定义SOA是一种设计原则,用于构建松耦合、可重用和可组合的分布式软件系统。
它将一个应用划分为多个服务,并通过服务之间的通信实现应用功能。
1.2 特点1) 服务:SOA将应用划分为多个独立的服务,每个服务负责特定的功能。
这种服务的划分可以基于业务领域划分,也可以根据技术实现划分。
2) 松耦合:SOA通过服务之间的松耦合实现组件的独立开发和部署,一个服务的变化不会对其他服务产生影响。
3) 可重用性:SOA鼓励开发人员将通用功能封装为复用的服务,提高开发效率和系统的灵活性。
4) 可组合性:不同的服务可以通过组合实现复杂的业务逻辑,提高系统的可扩展性和灵活性。
二、微服务架构的概念与特点2.1 定义微服务架构是一种构建应用的方式,它将一个应用拆分为多个小型服务,每个服务都有自己的业务逻辑和数据库。
2.2 特点1) 小型化:每个微服务关注于特定的业务功能,代码量较少,易于理解和维护。
2) 独立部署:每个微服务可以独立部署,因此一个服务的变化不会对其他服务产生影响。
3) 弹性伸缩:由于每个服务都独立部署,可以根据需要对某些服务进行水平扩展,提高系统的性能和容错能力。
4) 多语言支持:微服务架构允许使用不同的编程语言和技术栈开发各个微服务,提供更大的灵活性。
三、SOA与微服务架构的比较3.1 比较角度一:规模和复杂性SOA适用于大型企业级系统,它将系统划分为多个较大的服务,要求统一的数据模型和通信协议,适用于复杂的企业环境。
微服务架构适用于较小规模的系统,将系统拆分为多个小型的服务,每个服务都相对独立,无需统一的数据模型和通信协议,适用于灵活的开发环境。
ICS备案号:Q/CSG 中国南方电网责任有限公司企业标准面向服务的信息技术架构(SOA)框架规范中国南方电网责任有限公司发布目次前言 (III)1 范围 (1)2 规范性引用文件 (1)3 术语与定义 (1)3.1 面向服务的体系结构 (1)3.2 服务 (1)3.3 企业服务总线 (1)3.4 企业资源规划 (1)3.5 企业应用集成 (1)3.6 企业信息门户 (1)3.7 SOA项目 (1)4 总则 (1)4.1 持续发展原则 (1)4.2 先进性原则 (1)4.3 实用性原则 (2)4.4 操作性原则 (2)5 SOA架构模型 (2)5.1 服务体系 (2)5.1.1 服务体系设计依据 (2)5.1.2 服务体系图 (2)5.1.3 服务体系各层定义 (3)5.2 应用体系 (3)5.3 服务部署体系 (4)5.4 技术标准规范体系 (5)5.4.1 技术标准规范体系图 (6)5.4.2 服务开发技术标准规范 (8)5.4.3 服务集成技术标准规范 (12)5.5 SOA架构模型特征 (13)6 SOA服务设计与开发 (13)6.1 服务识别 (13)6.2 服务定义 (13)6.3 服务设计 (15)6.3.1 总体设计原则 (15)6.3.2 访问服务 (15)6.3.3 数据服务 (15)6.3.4 业务服务 (16)6.3.5 流程服务 (16)6.3.6 综合服务 (16)6.3.7 展现服务 (16)6.4 服务实现 (16)6.4.1 服务封装原则 (16)6.4.2 服务封装方式 (17)7 SOA服务集成 (17)7.1 企业服务总线 (17)7.2 服务描述 (17)7.3 服务注册/发布 (18)7.4 服务发现/调用 (18)7.5 服务编排 (18)7.6 服务管理 (18)7.6.1 管理内容 (18)7.6.2 参考流程 (19)8 SOA项目管理 (21)8.1 项目实施方法 (21)8.2 项目实施策略 (22)8.3 项目实施路线 (22)8.4 项目实施步骤 (23)8.4.1 项目准备 (23)8.4.2 项目需求分析 (24)8.4.3 项目设计与实现 (24)8.5 项目验收 (25)8.5.1 总体要求 (25)8.5.2 验收文档规范 (25)前言随着中国南方电网有限责任公司(以下简称为南方电网公司)企业信息化应用的不断发展和信息资源的不断积累,公司在探讨与实践企业信息技术架构时认识到:多元化的信息技术架构不利于企业信息化应用的发展和企业信息资源的积累与共享。
SOA架构简介⼀、什么是SOA 架构SOA是⼀种架构模型,它可以根据需求通过⽹络对松散耦合的粗粒度应⽤组件进⾏分布式部署、组合和使⽤。
服务层是SOA的基础,可以直接被应⽤调⽤,从⽽有效控制系统中与软件代理交互的⼈为依赖性。
SOA的关键是“服务”的概念。
它是作为⼀种⾯向服务的架构,是⼀种软件架构设计的模型和⽅法论。
从业务⾓度来看,⼀切以最⼤化“服务”的价值为出发点,SOA利⽤企业现有的各种软件体系,重新整合并构建起⼀套新的软件架构。
这套软件架构能够随着业务的变化,随时灵活地结合现有服务,组成新软件,共同服务于整个企业的业务体系。
简单的理解,我们可以把SOA看作是模块化的组件,每个模块都可以实现独⽴功能,⽽不同模块之间的结合则可以提供不同的服务,模块之间的接⼝遵循统⼀标准,可以实现低成本的重构和重组。
在SOA的技术框架下,可以把杂乱⽆章的庞⼤系统整合成⼀个全⾯有序的系统,从⽽增加企业在业务发展过程中应⽤系统的灵活性,实现最⼤的IT资产利⽤率。
虽然,⽬前不同⼚商或个⼈对SOA有着不同的理解,但是对于 SOA的⼏个关键特性的认识却是⼀致的:⼀种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接⼝进⾏通讯,不涉及底层编程接⼝和通讯模型。
需着重注意的是,SOA并不是新⽣事物。
⼤型IT组织成功构建和部署SOA应⽤已有多年的历史。
但 SOA并不是⼀种现成的技术,⽽是⼀种架构和组织IT基础结构及业务功能的⽅法。
SOA 这种开发⽅法,具有较好的管理上的优点。
⼆、 SOA 架构的基本特征SOA的实施具有⼏个鲜明的基本特征。
实施SOA的关键⽬标是实现企业IT资产的最⼤化重⽤。
要实现这⼀⽬标,就要在实施SOA的过程中牢记以下特征:①可从企业外部访问和时可⽤业务伙伴采⽤先进的B2B协议(ebXML或RosettaNet )相互合。
当业务伙伴基于业务⽬的交换业务信息时,他们通过 B2B协议创建会话来完成。
⽽外部⽤户则通过web服务⽅式提供企业服务。
面向服务的软件体系架构设计与实现面向服务的软件体系架构(Service-Oriented Architecture, SOA)是一种基于服务的软件开发和构建方式,就像Web Services一样,SOA将应用系统划分为一个个松散耦合的服务,这些服务能够相互调用,形成一个可扩展的应用系统。
随着云计算、物联网、大数据等相关技术的普及,SOA也成为了一个相当流行的软件架构设计方式。
本文将从以下几个方面介绍面向服务的软件体系架构设计与实现:SOA核心概念、SOA的优势和劣势、SOA的设计原则、SOA的实现技术、SOA的开发工具以及SOA的应用案例。
一、SOA核心概念面向服务的软件体系架构(SOA)是一种基于服务的软件开发和构建方式,其核心概念包括以下三点:1.服务:SOA中的服务是一个独立的逻辑单元,它封装了某种特定的功能,并可以通过网络进行访问和调用。
SOA中的服务通常包括Web Services、RESTful Services、消息队列等。
2.业务流程:SOA中的业务流程是一系列的服务的有序调用,应用在需要对多个服务进行协调、合作的场景中。
3.服务注册与发现:为了方便调用和管理服务,SOA中引入了服务注册与发现机制。
服务提供者将服务信息注册到服务仓库中,服务调用方可以根据服务描述信息在服务仓库中找到需要的服务。
二、SOA的优势和劣势SOA有以下几个优势:1.松散耦合:面向服务的软件体系架构的服务是松耦合的,即每个服务最好只与其依赖的服务或资源相关。
这种松散耦合的优点在于当某个服务需要更新或替换时,对其他服务的影响相对要小,这样大幅度减少了整体系统部分维护和升级所需的时间和成本。
2.可扩展性:SOA的另一个优点是可扩展性,这意味着可以在系统中动态添加或替换单独的服务,而不会影响整个系统。
这也使得系统更加灵活和可适应变化。
3.平台无关性:SOA 架构实际上是一个独立于平台(如操作系统和编程语言)的技术,可以让系统根据需要进行选择,因此可以将系统部署在不同的平台上。
通俗地理解⾯向服务的架构(SOA)以及微服务之间的关系SOA是⼀种软件的应⽤架构⽅法,它基于⾯向对象,但⼜不是⾯向对象,整体上是⾯向服务的架构。
SOA由精确的服务定义、松散的构件服务组成,以及业务流程调⽤等多个⽅⾯形成的⼀整套架构⽅法。
这话是不是听起来,让⼈觉得有点晕,我们就细细品读⼀下。
SOA的架构思想(⼀)SOA架构是⾯向服务的,只不过是基于⾯向对象SOA继承了很多⾯向对象的特点,⽐如说⾯向对象的封装,经常代表很多类封装成⼀个模块,为其他对象调⽤者提供接⼝调⽤,良好的⾯向对象设计就是暴露接⼝,隐藏实现,类⽐到SOA的设计,SOA也需要精准明确地定义好服务接⼝,具体服务内部的逻辑实现都是隐藏在背后的,只不过有两个很⼤的区别:(1)⾯向对象的实现都是基于同⼀个编程语⾔或平台(同构),但SOA服务彻底隐藏了实现上⽤何种语⾔平台的具体细节(异构)(2)⾯向对象的实现其实⼤部分都是本地⽅法之间的调⽤,当然也具备分布式远程⽅法调⽤,但SOA是纯粹提供了独⽴的服务,⾯向分布式的远程服务调⽤。
(⼆)SOA的服务定义是精确的这个怎么理解呢?因为SOA的服务⼀旦发布出来,那么就会有很多其他的异构平台服务进⾏调⽤,这时候的服务接⼝修改就不像⼀个⼈或者⼀个⼩团队之间协作那么容易了,可能涉及到⼀个⼤型企业多部门的信息协作,或者对构件已经形成依赖的⽣态链条。
因此这就牵扯出了SOA另外⼀个特征,那就是服务接⼝的粒度⼀般要设置得⽐较粗。
若提供过多的服务接⼝,服务⼜定义得很细粒度,那么频繁修改是在所难免的。
这⼀点上就注定了SOA架构适合在较重量的环境下存在。
那什么是较重量的环境呢?(1)体系健全、制度稳定的重管理型企业,(2)业务逻辑复杂,服务的独⽴性,开放性需求⼜⼤,服务的稳定性也是刚需。
例如:医院信息化系统架构。
(三)SOA是由松散的构件服务组成为什么是松散的呢?由上述我们可以了解到SOA的服务接⼝是粗粒度的,⽽且组成服务的构件都是独⽴部署并具有独⽴的上下⽂环境,这种形态就是为了降低与其他构件之间的强依赖性。
面向服务的体系结构(service-oriented architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。
这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。
这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。
松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。
而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。
对松耦合的系统的需要来源于业务应用程序需要根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。
我们称能够灵活地适应环境变化的业务为按需(On demand)业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要的更改。
虽然面向服务的体系结构不是一个新鲜事物,但它却是更传统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。
虽然基于SOA的系统并不排除使用面向对象的设计来构建单个服务,但是其整体设计却是面向服务的。
由于它考虑到了系统内的对象,所以虽然SOA是基于对象的,但是作为一个整体,它却不是面向对象的。
不同之处在于接口本身。
SOA系统原型的一个典型例子是通用对象请求代理体系结构(Common Object Request Broker Architecture,CORBA),它已经出现很长时间了,其定义的概念与SOA 相似。
然而,现在的SOA已经有所不同了,因为它依赖于一些更新的进展,这些进展是以可扩展标记语言(eXtensible Markup Language,XML)为基础的。
⾯向服务的架构设计⼀.什么是SOA SOA 是⼀种在计算环境中设计、开发、部署和管理离散逻辑单元(服务)模型的⽅法。
SOA 并不是⼀个新鲜事物,⽽只是⾯向对象模型的⼀种替代。
虽然基于 SOA 的系统并不排除使⽤ OOD 来构建单个服务,但是其整体设计却是⾯向服务的。
由于 SOA 考虑到了系统内的对象,所以虽然SOA 是基于对象的,但是作为⼀个整体,它却不是⾯向对象的。
SOA 系统原型的⼀个典型例⼦是 CORBA,它已经出现很长时间,其定义的概念与 SOA 相似。
SOA 建⽴在 XML 等新技术的基础上,通过使⽤基于 XML 的语⾔来描述接⼝,服务已经转到更动态且更灵活的接⼝系统中,CORBA 中的 IDL ⽆法与之相⽐。
⼆.基本结构 服务模型的表⽰层从逻辑层分离出来,中间增加了服务对外的接⼝层。
通过服务接⼝的标准化描述,使得服务可以提供给在任何异构平台和任何⽤户接⼝使⽤。
这允许并⽀持基于服务的系统成为松散耦合、⾯向构件和跨技术实现,服务请求者很可能根本不知道服务在哪⾥运⾏、是由哪种语⾔编写的,以及消息的传输路径,⽽是只需要提出服务请求,然后就会得到答案。
三.SOA设计原理 在 SOA 架构中,继承了来⾃对象和构件设计的各种原则,例如,封装和⾃我包含等。
那些保证服务的灵活性、松散耦合和复⽤能⼒的设计原则,对 SOA 架构来说同样是⾮常重要的。
关于服务,⼀些常见的设计原则如下:(1)明确定义的接⼝。
服务请求者依赖于服务规约来调⽤服务,因此,服务定义必须长时间稳定,⼀旦公布,不能随意更改;服务的定义应尽可能明确,减少请求者的不适当使⽤;不要让请求者看到服务内部的私有数据。
(2)⾃包含和模块化。
服务封装了那些在业务上稳定、重复出现的活动和构件,实现服务的功能实体是完全独⽴⾃主的,独⽴进⾏部署、版本控制、⾃我管理和恢复。
(3)粗粒度。
服务数量不应该太多,依靠消息交互⽽不是远程过程调⽤,通常消息量⽐较⼤,但是服务之间的交互频度较低。
面向服务的架构(SOA)与微服务对比在当今的软件开发领域,面向服务的架构(Service-Oriented Architecture, SOA)和微服务架构是两种广泛采用的设计模式。
它们都旨在通过将应用程序分解为一组相互通信的服务来提高软件系统的可维护性、可扩展性和敏捷性。
尽管这两种架构有共通之处,但在设计哲学、实施方式和适用场景上存在显著差异。
SOA是一种传统的分布式系统设计方法,它强调重用性和标准化。
在SOA中,每个服务通常被设计得尽可能通用,以便于它们可以被多个客户端应用程序共享。
这些服务通过企业服务总线(Enterprise Service Bus, ESB)进行通信,ESB负责服务的路由、消息转换和处理协议转换。
因此,SOA倾向于构建粗粒度、松散耦合的服务,这些服务独立于特定的技术实现,并使用标准化的接口和协议(如WSDL和SOAP)进行交互。
相比之下,微服务架构则是一种更现代、更灵活的设计理念。
它将应用程序划分为一系列小型、独立的服务,每个服务执行单一的业务功能,并可以独立部署、伸缩和升级。
微服务之间通过轻量级的通信协议(如HTTP REST或gRPC)直接相互调用,而不需要通过中央化的ESB。
这种细粒度的服务划分使得微服务架构能够更快地响应市场变化,更容易地进行技术栈的更新和替换。
从组织的角度来看,SOA的实施往往需要一个集中的团队来管理服务库和ESB,这可能导致决策瓶颈和延迟。
而在微服务架构中,每个服务通常由一个小团队负责,这个团队拥有从开发到部署的全权,从而促进了快速迭代和自治。
在技术选型上,SOA通常与较为重量级的中间件平台相关联,比如使用JavaEE应用服务器。
微服务则更倾向于使用轻量级的容器技术,如Docker和Kubernetes,这些技术可以提供快速的服务部署和自动化管理。
性能方面,微服务由于其轻量级的特性和直接通信的方式,通常能够提供更低的延迟和更高的吞吐量。
而SOA中的ESB可能成为性能瓶颈,特别是在处理大量请求时。
面向服务的架构标准领先技术不意味厂商锁定XML和Web服务正在作为面向服务的架构(SOA)的平台来出现,它既可用于企业内部通信,也可用于企业间通信。
作为第一个既支持SOA编写,也支持SOA 利用的Java集成开发环境(IDE),WebLogic Workshop天生就带上了专有创新的印记。
从那时起,BEA通过多种机制,从开放标准到开放源代码,已经实现了对这些创新进行投资保护的承诺,使得开发人员可以充分利用BEA的尖端生产率和集成特性,而不必担心锁定在某一厂商。
下面,让我们一起来看看在Workshop中基于SOA的关键创新,以及在每种情况下是如何保护投资的。
什么是SOA?XML和Web服务是当今的热门技术,因为它们在实现面向服务的架构(SOA)上担当了重要的角色。
目前独立的、而且通常是相互孤立的应用程序,制约了业务服务的共享,SOA则正在解决这一问题。
通过给单个业务操作进行定义或在表层加上“服务访问点”,IT组织能够:•使IT资源与其业务功能更密切地结合在一起•通过以下方法的最佳组合和匹配,建立更加动态、更有效地利用成本的系统•购买和自建•自制和外包•更迅速地发布“组合”应用程序(想想“Web流(Web flows)”和“工作流(work flows)”),提供统一的、面向任务的跨业务视图•通过更加细致的增量管理需求和变化,在应用程序生命周期上获得更高的灵活性•用提供“业务透明性”的基础架构替换不透明的、“黑盒子”系统更容易—这种基础架构根据流经应用程序的总体信息,提供实时的业务智能。
对象和组件已经成功地在应用内提供了重用性(应用程序的定义是:以单元形式开发和部署的代码)。
但是,SOA依赖的是在应用程序之间实现重用。
用SOA把不同的应用程序互连起来,这根本不是什么新东西—想想以前定义分布式的、应用间通信架构的一些努力(不用费力想什么新的首字母缩略词):•同步的(面向RPC):CICS分布式程序链接(DPL)、分布式计算环境(DCE)、分布式组件对象模型(DCOM)、公共对象请求代理体系结构(CORBA)IIOP、Java 远程方法调用(RMI)、关系数据库管理系统(RDBMS)存储过程,等等。
•异步的(面向消息的):CICS临时数据队列(TDQ)、Tuxedo ATM、IBM MQSeries、Tibco Rendezvous、Microsoft消息队列(MSMQ)、Java消息服务(JMS),等等。
是什么使得应用的集成如何困难呢(而且,由此推出,为什么我们作为一个行业,还必须要实现一个统一的SOA)?这是因为,应用程序是由不同的人们,在不同的地点建立的,而且根据不同的计划部署的。
任何方法,只要它依赖于多个应用程序共享一个公共的对象/数据模型(至少在某种程度上如先前所提及的),就都要面对这个事实。
XML和Web服务的角色抽象和松散耦合,是多个独立应用程序成功共享基础架构的关键。
请考虑二个成功典型:SQL和HTML。
利用SQL和HTML,应用程序开发人员必须把内部的对象模型按照数据如何存储、如何搜索以及如何在屏幕上显示分别地拆解。
如果我们只是考虑单个应用的需求,那么这种选择通常不是优化的选择。
但是,如果跨业务应用程序之间的总体需求增加了,那么能够实现更高级别抽象的松散耦合就会证明它的价值。
XML是松散耦合应用程序间数据共享的理想方案,XML具有以下特性:•自解释的•独立于硬件、编程语言、容器等等•可以适应独立的变化/版本变化(对于扩展和应用程序变化,不是很脆弱)•是“最小公分母”(啰嗦点说,是CPU密集的,等等,就像HTML)XML是针对HTML的,就像Web服务栈是针对HTTP/S的。
WS-*(具有最广泛行业支持的Web服务规范集合)定义了在应用程序之间移动XML的“企业服务质量”。
尽管由于篇幅有限,无法在这里介绍每一个WS-*技术,但是还是能够介绍:•以前在分布式计算中所有的服务质量标准,或者已经存在于WS-*栈里,或者已经在近期的发布计划当中(以及标准化当中)。
•WS-*在一个单一的、统一的框架里,为同步操作(通常用于查询)和异步操作(通常用于业务事务处理)提供了通信基础架构。
•WS-*协议族是第一个可扩展以满足企业内部企业应用集成(EAI)需求,甚至企业间B2B集成需求的系统。
以前的技术,从未如此接近地实现过“密切合作”(指的是,可以使用企业自己的所有业务系统,合作伙伴的业务系统,甚至合作伙伴的合作伙伴的系统,等等)所要求的大量关键需求。
•WS-*协议族允许IT组织利用可移植的和可互操作的行业标准来降低成本,并避免锁定在某一厂商。
WebLogic Workshop在2002年WebLogic首次发布时,WebLogic Workshop 成为通过XML和Web服务关注编写SOA的第一个Java IDE。
随着BEA WebLogic 8.1在2003年的发布,我们已经把WebLogic Workshop从1.0版的Web服务工具转变成了一个独一无二的包罗万象的开发环境,可以编写、利用以及编排基于SOA 的应用程序。
使用Workshop,就可以建立任何一种面向SOA的代码,其中包括纯粹的Web应用程序、J2EE程序、门户、业务流程自动化、XML聚合/转换、消息代理等等。
在发布第一个用于SOA的IDE(在Workshop 8.1之前,集成的技术发展水平就是一堆互不集成的工作大杂烩)的时候,BEA确实引入了多个专有的创新。
毕竟,专有和创新有着与生俱来的联系。
有着大量先例说明,标准的内容由于采用、认可专有创新,而不是自行创新,从而变得更好:TCP/IP、SQL、Web、Java、以及XML/Web服务,都是沿着这条路发展的。
回想 WebLogic的第一版(回到1996年,对于它是否为业界第一台Web应用服务器仍有争议),其中包括了大量用于Web页面呈现、数据库访问、事件处理、服务器端组件等方面的专用创新。
WebLogic优于其他专用技术的同行(著名的例外是 IBM 的 WebSphere)之处在于,WebLogic很早就积极地投入了API的标准化工作委员会(servlets/JavaServer Pages [JSP]、Java数据库连接[JDBC]、JMS、企业级JavaBeans[EJB],等等)。
对于我们为SOA在基于 Workshop创新所做的投资,BEA一直在大力保护。
我们有多种手段确保对投资的保护:协议:•BEA/Microsoft/IBM WS-*协作—WS-*协议族开始主要由这三家厂商制定(在标准化之前)•WS-*的标准化—W3C委员会和OASIS(结构化信息标准推进组织)•WS-*的验证和分析—Web服务互操作性组织(WS-I).编程模型:•BEA和IBM进行的Java协作—在2003年发布,这个协作是在BEA/IBM/Microsoft Web服务协作之上构建的。
它的重点在于推进服务器端Java API的标准化,特别是SOA方面。
•Java社区项目(JCP)•欧洲计算机制造商协会(ECMA)(例如,XScript)•W3C(例如,XQuery)•OASIS(例如,业务流程执行语言[BPEL])•Workshop产品的可移植性—如果Workshop生成了符合J2EE标准的应用程序,那么这个产品可以不加修改地运行在其他任何符合J2EE规范的容器里•开源软件(OSS)—映射到J2EE的开放源代码运行时基础架构,因此支持到WebLogic之外的容器的移植性。
Workshop投资保护的十大措施实际上,对于在WebLogic Workshop 8.1 IDE中的每项创新,BEA都会为客户或合作伙伴提供或发布一项长期的投资保护方法。
下面,我们一起来看看Workshop的10大创新,以及如何保护在用Workshop开发的应用程序中的投资。
(10)元数据和JSR-175:Workshop大量采用JavaDoc注解来获取应用程序的元数据—元数据是指发给容器的声明指令,指令里封装了那些经常使用但是通常很复杂,开发人员不愿意重复编写代码的那部分活动。
像 Workshop 这样的智能工具为编写和更新这类元数据提供了结构化的支持(例如属性表)。
通过把这些元数据以内嵌方式包含在应用程序的代码里,开发人员编程时需要的代码更少。
(XML部署描述符仍然由相应的工具生成)。
至少,部分是因为这个方法的流行,Sun和Java社区的其他成员已经决定直接在Java语言内部采用大量的元数据(JSR-175,它包含在J2SE 1.5版里)。
现有的Workshop产品会用 WebLogic即将发布的版本自动升级为JSR-175语法。
(9)BPEL、BPELJ 和JPD:BPEL规范最初是由BEA、IBM 和 Microsoft制定的—这是一套最好的知识产权组合,包括来自Microsoft的XLANG、IBM的WSFL以及BEA的Process Definition for Java (用于Java的流程定义,JPD)。
从那以后,BPEL已经转变交给OASIS进行标准化。
BPEL是基于XML的编程语言,本身也是用XML编写的,所以它是与平台无关的(它可以运行在Java、.NET等平台上)。
BPEL既可用来定义(编写)Web 服务,也可以编排(编写使用Web服务的工作流)Web服务。
所有在BPEL中的数据操纵工作都是用XML和Web服务完成的。
例如,条件用XPath编写。
消息的发送和接收用WSDL端口类型,等等。
在另一方面,BPELJ(用于Java的BPEL)定义了如何把BPEL和Java混合起来(混合的方式与JSP把HTML和Java混合的方式不同)。
使用BPELJ,条件和数据操纵可以通过Java代码注解的代码段完成。
这样就允许传统的企业计算,例如通过JDBC的数据库访问,能够与基于BPELJ的业务流程无缝地集成在一起。
BPELJ允许Java/J2EE组件,例如JavaBeans,可以用与Web服务编排一样的方式进行编排。
BPELJ的技术白皮书由BEA和IBM在2004年3月联合发布,而且已经通过JSR-207变成Java标准化的主题(BEA是这一规范的领导)。
BEA目前正设法在WebLogic的下一个主要发行版中实现BPELJ,此外还将提供把在Workshop 8.1中定义的工作流(BPELJ的前身—Java的流程定义)自动移植到BPELJ中。
在WebLogic Integration 8.1里,我们独家整合了卓越的业务流程图形化编辑工具,它具备了“get out of jail free card”的能力,可以使标准的Java/J2EE做更困难的编程工作—做这些工作时,完全不用离开Workshop 的统一开发环境。