自己对WSO2 ESB 见解
这周没想到要更新什么内容,就把我最近工作接触的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来做前期的调查。
自己对WSO2 ESB 见解的更多相关文章
- WSO2 ESB
什么是WSO2 ESB? WSO2 ESB是一个轻量级的易于使用的企业服务资源总线.WSO2 ESB允许系统管理员和SOA架构师,消息路由,虚拟化,中介,转换,日志记录,任务调度,负载平衡,失败了路由 ...
- WSO2 ESB XML定义语法(1)
1.(基于Apache Synapse的WSO2 ESB实现)参考文件位置: http://synapse.apache.org/userguide/config.html 基于Apache Syna ...
- WSO2 ESB XML定义语法(3)
6.Property Mediator 通过Synapse调解的每条消息都可以具有一组关联的属性.Synapse引擎和底层传输在处理的每条消息上设置了许多属性,用户可以操纵这些属性来修改消息流的运行时 ...
- WSO2 ESB XML定义语法(2)
5.Proxy Service 配置 <proxy>元素用于定义Synapse代理服务. 通过基础Axis2引擎在指定的传输上创建和公开代理服务,根据标准的Axis2约定(即基于服务名称) ...
- 几款开源ESB总线的比较
现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已经是百花争鸣的景象了.现在我就对现有的各种开源ESB总线依据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. CX ...
- ESB 企业服务总线
整理的OSChina 第 38 期高手问答 —— ESB 企业服务总线,嘉宾为@肖俊_David . @肖俊_David 恒拓开源架构师,热衷于JAVA开发,有多年的企业级开发经验.曾参和设计和开发基 ...
- 各种ESB产品比较(转)
介绍了主流商业和开源ESB的发展趋势.可借鉴的地方和其缺点: 主要介绍: Oracle Service Bus WebSphere Message Broker ...
- 几款开源ESB总线的比较(转)
现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已经是百花争鸣的景象了.现在我就对现有的各种开源ESB总线依据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. CX ...
- ESB简介及选型(转) http://www.cnblogs.com/skyme/archive/2012/08/06/2623414.html
什么是ESB 企业服务总线(Enterprise Service Bus,ESB)的概念是从面向服务体系架构(Service Oriented Architecture, SOA)发展而来的.SOA描 ...
随机推荐
- Opencv 函数
1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗口: 3.cvShowImage:在一个已创建好的窗口中显示图像: 4.cvWaitKey:使程序 ...
- Java如何获取当前的jar包路径以及如何读取jar包中的资源
写作业的时候要输出一个record.dat文件到jar包的同级目录,但是不知道怎么定位jar包的路径.百度到的方法不很靠谱,所以在这里记录一下. 一:使用类路径 String path = this. ...
- DBA 思想天空笔记
/*+leading(t1) use_nl(t2*/这个HINT的含义,其中use_nl表示强制用嵌套循环连接方式.Leading(t1)表示强制先访问t1表,也就是t1表作为驱动表,增加HINT的目 ...
- DJANGO用户名认证一例
现在实例了用户登陆,就自带的功能.. urls.py ~~~~~~~~~~ (r'^login/$', login), (r'^logout/$',logout,{'next_page':'/logi ...
- HDU 4035 Maze(树形概率DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4035 题意:一棵树,从结点1出发,在每个结点 i 都有3种可能:(1)回到结点1 , 概率 Ki:(2 ...
- Windows 8.1 Update1 6610 32位/64位下载、安装和新增功能简评
今天,微软已经确认完成Windows 8.1 2014 Update RTM正式版的开发工作,累计修复99%的已知bug.随后,微软会将Win8.1首个春季更新正式版,即Win8.1 2014 Upd ...
- 2013第50周二eclipse工具尝试
今天更深入的认识了eclipse开发工具,出现了各种问题在网络的帮助下最终都解决了,感觉似乎明白了很多道理需要总结一下,现在发现晚了,那就先记录下我印象深的几个问题吧: 1.eclipse编辑器设置. ...
- Linux权限机制
权限是操作系统用来限制用户.组.进程对操作系统资源(文件.设备等)的访问的机制 权限分为:读.写.执行,一般表示为 r.w.x http://itercast.com/lecture/22 每个文件或 ...
- 【HDU1166】敌兵布阵(树状数组或线段树)
是一道树状数组的裸题,也可以说是线段树的对于单点维护的裸题.多做这种题目可以提高自己对基础知识的理解程度,很经典. #include <iostream> #include <cst ...
- jquery插件-省市联动
由于项目需要需要实现一个省市联动,由于业务有一些特殊的需求,使用现有的插件略有不便,就自己实现了一个. 首先需要保存地区数据的JS数据文件,我这里命名为areaData.js,内容如下 ...