什么是SOA架构

SOA架构指面向服务的体系结构,是一个组件模型,一种粗粒度、开放式、松耦合的服务结构,要求软件产品在开发过程中,按照相关的标准或协议,进行分层开发。通过这种分层设计或架构体系可以使软件产品变得更加弹性和灵活,且尽可能的与第三方软件产品互补兼容,以达到快速扩展,满足或响应市场或客户需求的多样化、多变性。

soa架构与中间件的关系 soa架构与中间件的关系图soa架构与中间件的关系 soa架构与中间件的关系图


soa架构与中间件的关系 soa架构与中间件的关系图


soa架构与中间件的关系 soa架构与中间件的关系图


它将应用程序的不同功能单元通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该于实现服务的硬件平台、作系统和编程语言。

SOA体系架构带来的是业务驱动IT,即业务驱动和业务更加紧密地联系在一起。以粗粒度的业务服务作为基础来对公司业务进行建模,这样就可以产生简洁的业务和系统视图;以业务服务为基础来实现的IT系统更灵活、更易于重用、也更快地应对企业业务需求的变化;以业务服务为基础,为业务服务模型和相关IT业务之间提供了更好的"可追溯性"。

中间件有何作用

中间件

中间件

(Middleware)

定义:

中间件是一种的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 的作系统之上,管理计算资源和网络通讯。是连接两个应用程序或系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或 OS 环境。

中间件特点:

满足大量应用的需要 ;

运行于多种硬件和OS平台 ;

支持分布式计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互功能 ;

支持标准的协议 ;

支持标准的接口。

中间件可以应用于以下情形,如连接公司 LAN和早期系统、交换两个邮件系统间的信息、支持 web 客户机与数据库交换信息等。通用中间件类型包括:

·企业服务总线(ESB : Enterprise Serv Bus):ESB 是一种开放的、基于标准的分布式同步或异步信息传递中间件。通过 XML、Web 服务接口以及标准化基于规则的路由选择文档等支持,ESB 为企业应用程序提供安全互用性。

·事务处理(TP:Transaction Processing):为发生在对象间的事务处理提供功能,以确保作成功实现。

·分布式计算环境(DCE:Distributed Computing Environment):指创建运行在不同平台上的分布式应用程序所需的一组技术服务。

·远程过程调用(RPC:Remote Procedure Call):指客户机向发送关于运行某程序的请求时所需的标准。

·对象请求(ORB:Object Request Broker):为用户提供与其他分布式网络环境中对象通信的接口。

·数据库访问中间件(Database Access Middleware):支持用户访问各种作系统或应用程序中的数据库。SQL 是该类中间件的其中一种。

·信息传递(Message Passing):电子邮件系统是该类中间件的其中一种。

·基于 XML 的中间件(XML-Based Middleware):XML 允许开发人员为实现在 Internet 中交换结构化信息而创建文档。

最早具有中间件技术思想及功能的软件是IBM的CICS,但由于CICS不是分布式环境的产物,因此人们一般把Tuxedo作为个严格意义上的中间件产品。Tuxedo是1984年在当时属于AT&&T的贝尔实验室开发完成的,但由于分布式处理当时并没有在商业应用上获得像今天一样的成功,Tuxedo在很长一段时期里只是实验室产品,后来被Novell收购,在经过Novell并不成功的商业推广之后,1995年被现在的BEA公司收购。尽管中间件的概念很早就已经产生,但中间件技术的广泛运用却是在最近10年之中。BEA公司1995年成立后收购Tuxedo才成为一个真正的中间件厂商,IBM的中间件MQSeries也是90年代的产品,其它许多中间件产品也都是最近几年才成熟起来。国内在中间件领域的起步阶段正是整个世界范围内中间件的初创时期。东方通科技早在1992年就开始中间件的研究与开发,1993年推出个产品TongLINK/Q。而中科院软件所、国防科技大学等研究机构也对中间件技术进行了同步研究。可以说,在中间件领域,国内的起步时间并不比国外晚多少。

soa是不是web服务的中间件_soap和webserv区别

用一句话来概括基本的观点就是“SOA不是WebServ,WebServ是目前最适合实现SOA的技术”。之所以SOA和WebServ被混为一谈,最可能的原因了也就在于此吧。WebServ是就现在而言最适合实现SOA的一些技术的,事实上最近SOA的火爆在...

什么是SOA架构,能不能简单通俗点说一下...谢谢

面向服务的体系结构(serv-oriented ,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该于实现服务的硬件平台、作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。

对松耦合的系统的需要来源于业务应用程序需要根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。我们称能够灵活地适应环境变化的业务为按需(On demand)业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要的更改。

虽然面向服务的体系结构不是一个新鲜事物,但它却是更传统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。虽然基于 SOA 的系统并不排除使用面向对象的设计来构建单个服务,但是其整体设计却是面向服务的。由于它考虑到了系统内的对象,所以虽然 SOA 是基于对象的,但是作为一个整体,它却不是面向对象的。不同之处在于接口本身。SOA 系统原型的一个典型例子是通用对象请求体系结构(Common Object Request Broker ,CORBA),它已经出现很长时间了,其定义的概念与 SOA 相似。

然而,现在的 SOA 已经有所不同了,因为它依赖于一些更新的进展,这些进展是以可扩展标记语言(eXtensible Markup Language,XML)为基础的。通过使用基于 XML 的语言(称为 Web 服务描述语言(Web Servs Definition Language,WSDL))来描述接口,服务已经转到更动态且更灵活的接口系统中,非以前 CORBA 中的接口描述语言(Intece Definition Language,IDL)可比了。

Web 服务并不是实现 SOA 的惟一方式。前面刚讲的 CORBA 是另一种方式,这样就有了面向消息的中间件(Message-Oriented Middleware)系统,比如 IBM 的 MQseries。但是为了建立体系结构模型,您所需要的并不只是服务描述。您需要定义整个应用程序如何在服务之间执行其工作流。您尤其需要找到业务的作和业务中所使用的软件的作之间的转换点。因此,SOA 应该能够将业务的商业流程与它们的技术流程联系起来,并且映射这两者之间的关系。例如,给供应商付款的作是商业流程,而更新您的零件数据库,以包括进新供应的货物却是技术流程。因而,工作流还可以在 SOA 的设计中扮演重要的角色。

此外,动态业务的工作流不仅可以包括部门之间的作,甚至还可以包括与不为您控制的外部合作伙伴进行的作。因此,为了提高效率,您需要定义应该如何得知服务之间的关系的策略,这种策略常常采用服务级协定和作策略的形式。

,所有这些都必须处于一个信任和可靠的环境之中,以同预期的一样根据约定的条款来执行流程。因此,安全、信任和可靠的消息传递应该在任何 SOA 中都起着重要的作用。

我可以用面向服务的体系结构做什么?

对 SOA 的需要来源于需要使业务 IT 系统变得更加灵活,以适应业务中的改变。通过允许强定义的关系和依然灵活的特定实现,IT 系统既可以利用现有系统的功能,又可以准备在以后做一些改变来满足它们之间交互的需要。

下面举一个具体的例子。一个服装零售组织拥有 500 家连锁店,它们常常需要更改设计来赶上时尚的潮流。这可能意味着不仅需要更改样式和颜色,甚至还可能需要更换布料、制造商和可交付的产品。如果零售商和制造商之间的系统不兼容,那么从一个供应商到另一个供应商的更换可能就是一个非常复杂的软件流程。通过利用 WSDL 接口在作方面的灵活性,每个公司都可以将它们的现有系统保持现状,而仅仅匹配 WSDL 接口并制订新的服务级协定,这样就不必完全重构它们的软件系统了。这是业务的水平改变,也就是说,它们改变的是合作伙伴,而所有的业务作基本上都保持不变。这里,业务接口可以作少许改变,而内部作却不需要改变,之所以这样做,仅仅是为了能够与外部合作伙伴一起工作。

另一种形式是内部改变,在这种改变中,零售组织现在决定它还将把连锁零售商店内的一些地方出租给专卖流行衣服的小商店,这可以看作是采用店中店(store-in-store)的业务模型。这里,虽然公司的大多数业务作都保持不变,但是它们现在需要新的内部软件来处理这样的出租安排。尽管在内部软件系统可以承受全面的检修,但是它们需要在这样做的同时不会对与现有的供应商系统的交互产生大的影响。在这种情况下,SOA 模型保持原封不动,而内部实现却发生了变化。虽然可以将新的方面添加到 SOA 模型中来加入新的出租安排的职责,但是正常的零售管理系统继续如往常一样。

为了延续内部改变的观念,IT 可能会发现,软件的新配置还可以以另外的一种方式加以使用,比如出租粘贴海报的地方以供广告之用。这里,新的业务提议是通过在新的设计中重用灵活的 SOA 模型得出的。这是来自 SOA 模型的新成果,并且还是一个新的机会,而这样的新机会在以前可能是不会有的。

垂直改变也是可能的,在这种改变中,零售商从销售他们自己的服装完全转变到专门通过店中店模型出租地方。如果垂直改变完全从层开始的话,就会带来 SOA 模型结构的显著改变,与之一起改变的还可能有新的系统、软件、流程以及关系。在这种情况下,SOA 模型的好处是它从业务作和流程的角度考虑问题而不是从应用程序和程序的角度考虑问题,这使得业务管理可以根据业务的作清楚地确定什么需要添加、修改或删除。然后可以将软件系统构造为适合业务处理的方式,而不是在许多现有的软件平台上常常看到的其他方式。

正如您可以看到的,在这里,改变和 SOA 系统适应改变的能力是最重要的部分。对于开发人员来说,这样的改变无论是在他们工作的范围之内还是在他们工作的范围之外都有可能发生,这取决于是否有改变需要知道接口是如何定义的以及它们相互之间如何进行交互。与开发人员不同的是,架构师的作用就是引起对 SOA 模型大的改变。这种分工,就是让开发人员集中精力于创建作为服务定义的功能单元,而让架构师和建模人员集中精力于如何将这些单元适当地组织在一起,它已经有十多年的历史了,通常用统一建模语言(Universal Modeling Language,UML),并且描述成模型驱动的体系结构(Model-Driven ,MDA)。

SOA 架构

4.2.3.1 SOA 的概念

SOA 是一种架构模型,它将应用程序的不同功能单元(即服务)通过服务之间定义良好的接口和契约联系起来。接口采用中立的方式进行定义,它于实现服务的硬件平台、作系统和编程语言。

不同的厂商和个人对 SOA 有如下不同的定义 将 SOA 定义为: “本质上是服务的。服务间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务间需要某些方法进行连接。所谓服务就是定义、封装完善、于其他服务所处环境和状态的函数。” 将 SOA 定义为: “按需连接资源的系统。在 SOA 中,资源被作为可通过标准方式访问的服务,提供给网络中的其他成员。与传统的系统结构相比,SOA 规定了资源间更为灵活的松散耦合关系。”

(3)Gartner 则将 SOA 描述为: “客户端/的软件设计方法,一项应用由软件服务和软件服务使用者组成……SOA 与大多数通用的客户端/模型的不同之处,在于它着重强调软件组件的松散耦合,并使用的标准接口。”

虽然不同厂商或个人对 SOA 有着不同的理解,但是从以上定义可以看出 SOA 的几个关键特性: 一种粗粒度、松散耦合服务架构,服务之间通过简单、定义接口进行通讯,不涉及底层编程接口和通讯模型。

SOA 并不是一种现成的技术,而是一种架构和组织 IT 基础结构及业务功能的方法。SOA 是一种在计算环境中设计、开发、部署和管理离散逻辑单元(服务)的模型。SOA要求开发人员将应用设计为服务的,以及跳出应用本身进行思考,考虑现有服务的重用,或思索他们的服务如何能够被其他项目重用。“单独的”、“的”、“封装完善的”服务所具有的一个关键的好处是,可以采用多种不同方法将它们组合成较大型的服务,由此来实现重用。

4.2.3.2 构成 SOA 的技术

SOA 本身是 “如何将软件组织在一起” 的抽象概念。它依赖于用 XML 和 Web 服务实现并以软件的形式存在的更加具体的观念和技术。此外,它还需要安全性、策略管理、可靠消息传递以及会计系统的支持,从而有效地工作。还可以通过分布式事务处理和分布式软件状态管理来进一步地改善它。

SOA 服务和 Web 服务之间的区别在于设计。SOA 概念并没有确切地定义服务具体如何交互,而仅仅定义了服务如何相互理解以及如何交互。其中的区别也就是定义如何执行流程的战略与如何执行流程的战术之间的区别。而另一方面,Web 服务在需要交互的服务之间如何传递消息有具体的指导原则; 从战术上实现 SOA 模型最常见的方式是通过HTTP 传递的 SOAP 消息。因而,从本质上讲,Web 服务是实现 SOA 的具体方式之一。

虽然 Web 服务是实现 SOA 的方式,但是 SOA 并不局限于 Web 服务。其他使用WSDL 直接实现服务接口并且通过 XML 消息进行通信的协议也可以包括在 SOA 之中。例如 CORBA 和 IBM 的 MQ 系统通过使用能够处理 WSDL 的新特征也可以参与到 SOA 中来。如果两个服务需要交换数据,那么它们还会需要使用相同的消息传递协议,但是数据接口允许相同的信息交换。

4.2.3.3 SOA 的基本特征

SOA 是一种粗粒度、松散耦合的软件架构,其服务之间通过简单、定义的接口进行通讯,不涉及底层编程接口和通讯模型。这种模型具有下面几个特征( 1.html)[U1]。

(1)松散耦合。服务请求者到服务提供者的绑定与服务之间是松耦合的。松散耦合旨在将服务使用者和服务提供者在服务实现和客户如何使用服务方面隔离开来。服务接口作为与服务实现分离的实体而存在,服务请求者不知道提供者实现的技术细节,比如程序设计语言、部署平台等等。服务请求者往往通过消息调用作请求消息和响应而不是通过使用文件格式。服务实现的修改完全不会影响到服务的使用者。

(2)粗粒度服务。服务粒度指的是服务所公开功能的范围,一般分为,细粒度和粗粒度。其中,细粒度服务是那些能够提供少量业务流程可用性的服务。粗粒度服务是那些能够提供高层业务逻辑的可用。粗粒度服务可以灵活组合稳定性强、重用性高的细粒度服务,而快速形成新的业务逻辑。虽然细粒度的接口为请求者应用程序提供了更多的灵活性,它同样也意味着交互的模式可能随着不同的服务请求者而不同。这可能使对于服务提供者的支持更加困难。粗粒度接口保证服务请求者将以一致的方式使用服务。面向服务的体系结构不要求使用粗粒度接口,但是使用它们作为外部集成的实践。服务编排可以用来创建运行由细粒度作组成的业务流程的粗粒度接口。

(3)标准化的接口。服务描述的重点在于与几部分交互所用的作服务、调用作的消息、构造这种消息的细节和关于向何处发送用于构造这种消息的处理细节的消息。通过服务接口的标准化描述,从而使得该服务可以提供给在任何异构平台和任何用户接口使用。该接口隐藏了实现服务的细节,允许于实现服务基于的硬件或软件平台和编写服务所用的编程语言使用服务。

(4)无状态服务。服务应该是的、自包含的请求,在实现时它不需要从一个请求到另一个请求的信息或状态。服务不应该依赖于其他服务的上下文和状态。当需要依赖时,它们定义成通用业务流程、函数和数据模型,而不是实现构件比如会话密钥。当然,请求者应用程序需要服务调用之间的持久状态,但是这不应该与服务提供者分开。