转 ESB 与SOA之区别

他们之间的区别是什么呢,虽然曾经参与构建过所谓之ESB,却没有对概念进行过研究。

        SOA:面向服务的体系结构(Service Oriented Architecture,SOA)

        ESB:企业服务总线(Enterprise Service Bus,ESB)

        SOA是一种方式或架构,用于具有自服务功能的应用程序,应用程序随后通过用户接口(UI)或经过工作流将其聚合成用户需要的功能。服务不仅是可复用代码的组件,更是运行程序的一部分,客户端可以不必合并它自己的代码直接调用该程序。服务是与业务相关的一个定义。

        ESB是用于调节 SOA 中的调用者及服务提供者的机制。它使得调用者在不知道提供者或提供者使用的地址的情况下调用该服务。ESB 可在多个提供者、提供者的负载平衡及停止使用提供者(当失效时)之间进行选择,并且基于调用者的需求在提供者之间进行选择,这些提供者提供了各种质量级别的服务。ESB 能够调节同步或异步服务,事实上对于同一服务可以提供同步及异步的访问。

        因此 SOA 和 ESB 是相对应的。具备 SOA 的应用程序应当使用 ESB 来调用它的服务。SOA 和 ESB 不必用 Web 服务实现。然而,经常需要 ESB 来调用服务,该服务提供自我描述及发现的能力,这由 Web 服务帮助完成。在 SOA 中经常需要由一种技术实现的调用者,它们用于调用由其它技术实现的服务,这也由 Web 服务帮助完成。所以 SOA、ESB 和 Web 服务都集中于创建这样的领域:一个应用程序中的功能在其它应用程序中也是可用的,本质是复用性。



SOA和传统开发的最大区别:

        传统的B/S或者C/S的开发是横向的,表现层,业务层,数据层是彼此独立,分开来开发,并且各自部署在各自的服务器上的。在这种横向架构中,一个项目不管有多少客户,必须由一个公司,或多个公司遵守相同的组件规则来完成开发。

        而SOA提出的概念是纵向概念。每一个服务都是一个独立部署的单元,可以完全由独立单位开发。部署在独立服务器上,不管底层如何实现,只要最后使用预定义的接口(由WebService 实现时,调用WSDL的接口),调用它们就行了。例如银行系统的一笔交易或转账服务,和鉴权服务,可以是完全独立的服务。由不同的团队开发,并且在任何程序中可以公用。

        从用户的角度来说,SOA更容易理解,它是面向业务的。ESB实际上更像是企业服务流程,比如先鉴权,然后转账等。它是面向开发者的。对用户来说是透明的,用户关注的是一个完整的功能,及其某一服务。

你可能感兴趣的:(Web,webservice,SOA,ESB)