Web services SOA和ROA之间的区别是什么

Web services SOA和ROA之间的区别是什么,web-services,rest,soap,Web Services,Rest,Soap,据我所知,SOA(面向服务的体系结构)基于离散软件模块的集合,称为服务。这些服务可以与网络范围内的任何其他服务交换信息,而无需人工交互。 SOA使用SOAP或REST协议在各种服务之间传输XML或JSON文档 但是我对ROA(面向资源的体系结构)以及这两种体系结构之间的区别感到困惑 任何帮助都将不胜感激,如果我错了,请纠正我。我会先纠正:) 为了回答这个问题,让我们说REST是一种组织资源和对资源执行操作的方法 SOA使用SOAP或REST协议在各种服务之间传输XML或JSON文档 绝对不是。R

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

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

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

我会先纠正:)

为了回答这个问题,让我们说REST是一种组织资源和对资源执行操作的方法

SOA使用SOAP或REST协议在各种服务之间传输XML或JSON文档

绝对不是。REST不是协议。SOAP是一种协议,这是真的。它经常用于SOA体系结构中,特别是用于通过HTTP实现SOAP或通过JMS实现SOAP。然而,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(面向资源的体系结构)只是使用REST服务的SOA(基于服务的体系结构)的一个别致的名字

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

对于

,正如术语所暗示的,面向服务的体系结构面向服务,面向资源的体系结构面向资源。一般来说,通过定义A和B的本质,A和B之间的区别通常得到最好的解释。因此,归根结底,什么是“服务”,什么是“资源”

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

通过查看应用程序实现其“功能”的方式,我最能理解这种差异:

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

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

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

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


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

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

    • 请求/响应型系统
      • 面向资源的REST
        • 与HTTP资源的通信
        • 涉及通过HTTP GET、PUT、POST等对资源生命周期的操作
        • 可以缓存资源数据
      • 面向服务的SOAP
        • 涉及与特定应用程序服务的通信
        • 不涉及服务生命周期管理的生命周期操作
        • 所有消息都被发送到服务端点
        • 端点决定如何处理请求
      • EJBs-面向对象
        • 与对象的通信
        • 涉及对象的编组和解编组
        • 有状态
    • 消息传递类型系统-消息队列
    您应该能够从这里区分SOA和ROA之间的差异。

    请参阅Leonard Richardson、Sam Ruby的书。他们做了详细的比较。蒂切德罗马@Thanx,但我有g