现在由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