SOA和ROA之间有什么区别

时间:2013-06-10 18:43:01

标签: web-services rest soap

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

但是我对ROA(资源导向架构)以及这两种架构之间的区别感到困惑。

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

5 个答案:

答案 0 :(得分:18)

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

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

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

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

答案 1 :(得分: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服务现在通常只使用JSON over HTTP或XML over HTTP实现。

SOA无处不在。在SOA中,您通常可以找到SOAP over HTTP,SOAP over JMS等。

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

希望这会有所帮助。

答案 2 :(得分:6)

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

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

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

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

答案 3 :(得分:0)

分布式系统的两种主要类型是:

  • 请求/响应类型系统
    • REST - 面向资源
      • 与 HTTP 资源通信
      • 通过 HTTP GET、PUT、POST 等方式涉及资源生命周期的操作
      • 可以缓存资源数据
    • SOAP - 面向服务
      • 涉及与特定应用服务的通信
      • 不涉及服务生命周期管理的生命周期操作
      • 所有消息都发送到服务端点
      • 端点决定如何处理请求
    • EJB - 面向对象
      • 与对象通信
      • 涉及对象的编组和解组
      • 有状态
  • 消息传递类型系统 - 消息队列

您应该能够从这里区分 SOA 和 ROA 之间的差异。

答案 4 :(得分:-4)

ROA (面向资源的体系结构)只是使用REST服务的 SOA (基于服务的体系结构)的一个奇特名称。

  • SOA优于ROA的主要优点是更成熟的工具支持,XML请求的类型安全性。
  • ROA的主要优点是易于实施,设计灵活,以及轻量级方法。

Further