[英]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 允许直接替换模块,简化部署和定制。
分布式系统的两种主要类型是:
您应该能够从这里区分 SOA 和 ROA 之间的差异。
ROA (面向资源的架构)只是使用 REST 服务的SOA (基于服务的架构)的一个奇特名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.