当前位置 : 主页 > 大数据 > 区块链 >

可以使用REST设计SOA吗?

来源:互联网 收集:自由互联 发布时间:2021-06-22
我最近一直在阅读很多关于SOA的内容,但大多数内容都是与SOAP相关的,并且有很多属于C#/ Java系统的“官僚”内容。老实说,我认为这种官僚主义,特别是SOAP,是屁股的痛苦。所以,我
我最近一直在阅读很多关于SOA的内容,但大多数内容都是与SOAP相关的,并且有很多属于C#/ Java系统的“官僚”内容。老实说,我认为这种官僚主义,特别是SOAP,是屁股的痛苦。所以,我很好奇,SOA可以用REST设计吗?

现在由Ruby应用程序,我使我的所有控制器RESTful。我的Web界面(表单等)使GET / POST / PUT / DELETE请求到核心,这是一个REST Web服务。使用核心的所有其他系统都会向其发出RESTful请求。这是SOA吗?

在高层面,答案是肯定的,但不完全。

SOA需要考虑系统

>服务(定义明确的业务功能)
>组件(代码和/或数据结构的离散件)
>进程(服务编排,一般使用BPEL)

能够组成新的更高级别的服务或业务流程是良好的SOA的基本特征。 XML,基于SOAP的Web服务和相关标准非常适合实现SOA。

SOA也有一些可接受的原则 – http://en.wikipedia.org/wiki/Service-oriented_architecture#Principles

>标准化服务合同 – 服务遵守由一个或多个服务描述文件集体定义的通信协议。
>服务松散耦合 – 服务保持关系,最小化依赖关系,只需要保持彼此的意识。
>服务抽象 – 除服务合同中的描述之外,服务也隐藏了外界的逻辑。
>服务可重用性 – 逻辑分为服务,旨在促进重用。
>服务自主性 – 服务可以控制他们封装的逻辑。
>服务粒度 – 在服务操作中提供业务功能的最佳范围和正确粒度级别的设计考虑。
>服务无状态 – 通过在必要时延迟管理状态信息来最大限度地减少资源消耗
>服务可发现性 – 服务补充有交际元数据,可以有效地发现和解释。
>服务组合 – 服务是有效的组合参与者,无论组合的大小和复杂程度如何。

基于SOA的架构预计将具有服务定义。由于RESTful Web服务缺乏明确的服务定义(类似于wsdl),因此基于REST的系统很难满足上述大部分原则。

要使用REST实现相同的操作,您需要使用RESTful Web服务编排(可能使用一些轻量级的ESB,如MuleESB或Camel)

也请看这个资源 – From SOA to REST

将此部分添加为以下评论的澄清 –

撰写流程需要编排。这就是SOA的主要优点。

说你有一个操作的订单处理应用程序
  – –

> addItem
> addTax
> calculateTotal
> placeOrder

最初,您创建了一个使用这些操作的流程(使用BPEL)。你有客户使用这个组合的服务。几个月后,一个新的客户来了,谁拥有免税,而不是写新的服务,你可以创建一个新的进程跳过addTax操作。因此,您可以通过重新使用现有服务来实现业务功能的更快实现。实际上有这样的服务。

因此,BPEL或类似(ESB或路由)技术对SOA至关重要。没有商业用途,SOA并不是一个SOA。

Cross发布在我的个人博客 – http://blog.padmarag.com

还要查看这个新资源 – REST based SOA

网友评论