24

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

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

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

4

5 回答 5

19

正如这些术语所暗示的,面向服务的架构面向服务,面向资源的架构面向资源。一般来说,A 和 B 两件事之间的差异通常最好通过定义 A 和 B 的本质来解释。所以归结为一个问题,什么是“服务”,什么是“资源”?

我将把它主要留给读者,因为大多数开发人员可能都知道两者是什么。虽然它实际上并不那么容易,因为一件事既可以被视为一种服务,也可以被视为一种资源(类似于物理学中经典的光波-粒子对偶性)。例如,Flickr 是一项为您提供照片的服务,但也可以被视为照片资源。但基本上,资源更多的是静态数据(如照片),而服务更多的是处理(例如交付照片,或调整照片的大小,以便显示一张照片的缩略图)。

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

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

我先纠正一下:)

出于这个答案的目的,我们只是说 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。

希望这可以帮助。

于 2013-06-24T08:41:12.730 回答
6

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

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

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

ROA 将 API 使用者与数据模型的更改隔离开来。SOA 允许替换模块,简化部署和定制。

于 2015-05-21T10:20:42.647 回答
0

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

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

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

于 2021-02-05T14:10:03.800 回答
-4

ROA(面向资源的架构)只是使用 REST 服务 的SOA (基于服务的架构)的花哨名称。

  • SOA 相对于 ROA 的主要优势是更成熟的工具支持,XML 请求的类型安全。
  • ROA 的主要优点是易于实施、设计的敏捷性和轻量级的处理方法。

为了进一步

于 2013-06-27T08:41:02.003 回答