据我所知,SOA(面向服务的体系结构)基于离散软件模块的集合,称为服务。这些服务可以与网络范围内的任何其他服务交换信息,而无需人工干预。 SOA使用SOAP或REST协议在各种服务之间传输XML或JSON文档。
但是我对ROA(资源导向架构)以及这两种架构之间的区别感到困惑。
任何帮助将不胜感激,如果我错了,请纠正我。
答案 0 :(得分:18)
这些术语暗示面向服务的体系结构面向服务,而面向资源的体系结构面向资源。通常,通过定义A和B的本质,可以最好地解释A和B两个事物之间的差异。因此,它归结为问题,什么是“服务”,什么是“资源”?
我将这主要留给读者,因为大多数开发人员可能已经知道其中的任何一个。虽然它实际上并不那么容易,但有一点可以看作服务和资源(类似于经典的Wave-Particle duality of light in physics)。例如,Flickr是一种为您提供照片的服务,但也可以将其视为照片资源。但基本上资源是更静态的数据(如照片)和服务更多的处理(例如发送照片,或调整照片大小以便他们可以显示一个缩略图。)
通过查看应用程序实现其“功能”的方式,我了解最佳区别:
答案 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)
分布式系统的两种主要类型是:
您应该能够从这里区分 SOA 和 ROA 之间的差异。
答案 4 :(得分:-4)
ROA (面向资源的体系结构)只是使用REST服务的 SOA (基于服务的体系结构)的一个奇特名称。