这周没想到要更新什么内容,就把我最近工作接触的WSO2 ESB简单介绍下吧。
前提:
一切文档,知识都要与官方文档为准。
WSO2 ESB:
http://wso2.com/products/enterprise-service-bus/
WSO2 ESB 文档:
https://docs.wso2.com/display/ESB481/WSO2+Enterprise+Service+Bus+Documentation
我这篇博客不作具体做一步步的教程,需要学习的可以参考官方文档一步步的入手。
-
那什么是WSO2 ESB?
我也不想去copy什么是ESB。我举一个例子吧。
想想在一个很大的公司,这个公司有2个大的部门。部门A,部门B。
部门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来做前期的调查。