据我所知,SOA(面向服务的架构)基于离散软件模块的集合,称为服务。这些服务可以与网络范围内的任何其他服务交换信息,而无需人工交互。SOA 使用 SOAP 或 REST 协议在各种服务之间传输 XML 或 JSON 文档。
但我对 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 中,您通常会发现 SOAP over HTTP、SOAP over JMS 等。
但是有一天,您可能会遇到一个 RESTfull Web 服务,它出于某种奇怪的原因使用 SOAP(也许开发人员需要出于某种模糊的原因将消息嵌入到 SOAP 信封中)。我想你不会在现实生活中找到这个例子,只是为了向你展示 SOA 或 ROA 并不意味着要使用的协议,在本例中是 SOAP。
希望这可以帮助。
根据我的经验,我的理解如下:
ROA 是数据模型上的 API 包装器,SOA 是功能模块上的 API。
ROA 用于提供 CRUD 操作。SOA 用于在运行时链接模块。
ROA 将 API 使用者与数据模型的更改隔离开来。SOA 允许替换模块,简化部署和定制。
两种主要类型的分布式系统是:
您应该能够从这里区分 SOA 和 ROA 之间的差异。
ROA(面向资源的架构)只是使用 REST 服务 的SOA (基于服务的架构)的花哨名称。
为了进一步