SOA和ROA之间有什么区别

Pra*_*ral 23 rest soap web-services

据我所知,SOA(面向服务的体系结构)基于离散软件模块的集合,称为服务.这些服务可以与网络范围内的任何其他服务交换信息,而无需人工干预.SOA使用SOAP或REST协议在各种服务之间传输XML或JSON文档.

但我对ROA(资源导向架构)以及这两种架构之间的区别有什么困惑.

任何帮助将不胜感激,如果我错了,请纠正我.

Bar*_*art 18

这些术语暗示面向服务的体系结构面向服务,而面向资源的体系结构面向资源.通常,通过定义A和B的本质,可以最好地解释A和B两个事物之间的差异.因此,它归结为问题,什么是"服务",什么是"资源"?

我将这主要留给读者,因为大多数开发人员可能已经知道其中的任何一个.虽然它实际上并不那么容易,但有一点可以看作服务和资源(类似于物理学中光的经典波粒二象性).例如,Flickr是一种为您提供照片的服务,但也可以将其视为照片资源.但基本上资源是更静态的数据(如照片)和服务更多的处理(例如传送照片,或调整照片大小以便他们可以显示一个的缩略图).

通过查看应用程序实现其"功能"的方式,我了解最佳区别:

  • 使用面向服务的体系结构构建的应用程序更像是" Facade ",例如,它基于其在屏幕后面(可能通过网络)使用的服务中的功能来组合或组合其传出功能.例如,它的核心处理包括调用外部服务,为它们提供参数,以及将结果与可能的一些额外处理或算法组合在一起.
  • 使用面向资源的体系结构构建的应用程序在内部执行更多处理(例如,与调用外部组件相反),但使用外部资源作为输入.例如,它的核心处理包括检索静态资源,然后在内部进行更多计算.


小智 15

我先纠正:)

出于这个答案的目的,我们只是说REST是一种组织资源和对它们执行的操作的方法.

SOA使用SOAP或REST协议在各种服务之间传输XML或JSON文档.

绝对不.REST不是协议.SOAP是一种协议,这是真的.它经常用于SOA体系结构,特别是用于实现SOAP over HTTP或SOAP over JMS.但是,SOA并不意味着SOAP.您可以使用任何其他协议.同样适用于XML和JSON.你可以使用任何其他语言或方言.

现在解释.SOA是面向服务的体系结构.因此,整个系统由通常执行某些操作的服务组成.该架构基于此.想象一下服务器云,每个服务器至少拥有一个服务,例如WeatherPredictor,ForexCalculator等.

与此相反,您拥有面向资源的体系结构ROA,系统由资源组成.想象一下服务器云,每个服务器代表一个或多个资源,例如天气,欧元,美元......

ROA通常用于大型开放系统,因为它带来了优势.在ROA体系结构中,您通常会找到RESTfull服务.目前,RESTfull服务通常仅通过HTTP上的JSON或基于HTTP的XML实现.

SOA到处都有用.在SOA中,您通常可以找到SOAP over HTTP,SOAP over JMS等.

但是有一天你可能会遇到一个RESTfull Web服务,由于一些奇怪的原因使用SOAP(可能开发人员需要将消息嵌入SOAP信封中,这是因为某些模糊的原因).我认为你不会在现实生活中找到这个例子,只是为了向你展示SOA或ROA并不意味着使用协议,在本例中是SOAP.

希望这可以帮助.


Kin*_*xit 6

根据我的经验,我的理解如下:

ROA是数据模型的API包装器,SOA是功能模块上的API.

ROA用于提供CRUD操作.SOA用于在运行时链接模块.

ROA将API使用者与数据模型的更改隔离开来.SOA允许删除模块,简化部署和自定义.