自己对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描 ...
随机推荐
- isKindOfClass、isMemberOfClass的区别
两者都能检测一个对象是否是某个类的成员,两者的区别是:isKindOfClass 不但可以用来确定一个对象是否是一个类的成员,也可以用来确定一个对象是否是派生自该类的类的成员.isMemberOfCl ...
- C#this的五种用法
this的五种用法: 1.使用被掩盖的成员变量: class AA { int a; public void set1(int a) { this.a = a;//right } public voi ...
- 交叉编译安装ARM平台上的Qt
一.宿主机环境搭建: 编译需要x11库的支持,在Ubuntu下安装命令: sudo apt-get install libx11-dev libxext-dev libxtst-dev 二.下载源码包 ...
- 使用MSSM管理工具登录LOCALDB
调试程序没有安装 sql server时,可以使用localdb.这是一个简易的sql server数据库,用于本地测试是很方便,省去安装SQL SERVER的工作 电脑上安装了VS2013 VS20 ...
- C语言之利用递归将十进制转换为二进制
#include<stdio.h>#include<stdlib.h>void change2(int num){ if (num != 0) { change2(n ...
- UVA 10791 Minimum Sum LCM
唯一分解定理 把n分解为 n=a1^p1*a2^p2*...的形式,易得每个ai^pi作为一个单独的整数最优. 坑: n==1 ans=2: n因子种数只有一个 ans++: 注意溢出 ...
- 163k地方门户网站系统js小Bug
163k地方门户网站系统后台在Firefox下无法通过选择区域来获取相对应的地段,IE浏览器下无些问题. Firebug提示错误为: ReferenceError: requestdataquyu i ...
- BZOJ 1497 最大获利(最大权闭合子图)
http://www.lydsy.com/JudgeOnline/problem.php?id=1497 思路:由题意可以得知,每个顾客都依赖2个中转站,那么让中转站连有向边到汇点,流量为它的建设费用 ...
- 《Programming WPF》翻译 第9章 5.默认可视化
原文:<Programming WPF>翻译 第9章 5.默认可视化 虽然为控件提供一个自定义外观的能力是有用的,开发者应该能够使用一个控件而不用必须提供自定义可视化.这个控件应该正好工作 ...
- Linux——oracle数据库实例启动关闭(转)
-->Oracle 数据库实例启动关闭过程 --================================ [root@robinson ~]# su - oracle --查看未启动实例 ...