这周没想到要更新什么内容,就把我最近工做接触的WSO2 ESB简单介绍下吧。 前端
前提: java
一切文档,知识都要与官方文档为准。 node
WSO2 ESB: python
http://wso2.com/products/enterprise-service-bus/ web
WSO2 ESB 文档: apache
https://docs.wso2.com/display/ESB481/WSO2+Enterprise+Service+Bus+Documentation json
我这篇博客不做具体作一步步的教程,须要学习的能够参考官方文档一步步的入手。 后端
我也不想去copy什么是ESB。我举一个例子吧。 安全
想一想在一个很大的公司,这个公司有2个大的部门。部门A,部门B。 ruby
部门A有10个web service,5个是WCF开发的基于SOAP,安全校验是A(好比 SAML Token吧),5个是restful安全校验是B.
部门A有5个web service,3个是JAVA开发的基于SOAP,安全校验是A(好比 SAML Token吧),2个是restful安全校验是C.
而后前段业务须要快速开发移动APP,这须要后端service是restful风格的。因为移动变化快,须要不用的需求,须要更多数据?
后端的web service仅仅提供最为基础的数据,虽然全,可是没有根据前段的业务去优化数据。
有一天,移动APP须要调用部门A的service1(SOAP 风格)和service2(restful)和们部门B的service3(SOAP)去获得相关数据,而后须要调用部门A的service4(SOAP) 去更新数据。
这样有2中方案:
方案1:移动APP就须要处理不少,须要考虑不一样service的协议和安全校验。
方案2:要求后台开发一个service为移动app提供服务。
显然方案1把太多的业务逻辑放在了前端。方案2,适应不了快速的APP开发。
那么ESB就出来了,它是做为一个中间层把移动app和后端的web service分开来。
ESB会提供web sevice与移动app打交道,这样就为前端提供一个新的service,专门知足前端APP
的需求。统一的协议,统一的安全校验。
这样在ESB内部就能够处理调用后端service的逻辑。
仍是上面的那个例子:
有一天,移动APP须要调用部门A的service1(SOAP 风格)和service2(restful)和们部门B的service3(SOAP)去获得相关数据,而后须要调用部门A的service4(SOAP) 去更新数据。
这样移动APP说,我须要一个新的service,那么定义好须要那么获得那些数据,须要更新那些数据,须要什么协议(soap,restful),须要数据的格式是什么(xml,json)。。。。
ESB就新建一个service提供这种服务。
这ESB内部,获得移动app传来的数据,好比是xml把,而后把xml转换成soap或者restful,而后再ESB内部调用后端service,而后把数据在转换好,发给移动APP。
WSO2 ESB提供不少组件,去处理请求。它能够不移动app发过来的任何格式,转换成任何格式,post到后端的service,获得数据后,再把数据转换成符合移动app的格式。
在WSO2 esb能够用脚本语言,JS,python,ruby处理不一样格式之间的转换。也能够用
org.apache.axiom.om (java)。。
这样开发移动app的能够在界面用js来写,在服务端能够node.js来写,在后端的WSO2 ESB能够用js来写web service来获得数据。
这样主要后端提供好基础数据,前端就能够全栈快速的开发知足需求的功能和产品。
这些仅仅是个人简单理解和随笔。工做中,我是在一个后端WCF webservice team的,最新咱们可能准备使用WOS2 ESB来为移动app提供快速的服务,因此有机会使用WSO2 ESB来作前期的调查。