繁体   English   中英

SOA和ROA有什么区别

[英]What is the difference between SOA and ROA

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

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

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

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

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

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

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

我先改正:)

出于这个答案的目的,我们只说 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 中,您通常会发现 HTTP 上的 SOAP、JMS 上的 SOAP 等。

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

希望这可以帮助。

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

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

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

ROA 使 API 使用者免受数据模型更改的影响。 SOA 允许直接替换模块,简化部署和定制。

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

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

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

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

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

进一步

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM