首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

传智播客-web service(二)-ESB、SOAP和WSDL

2012-11-10 
传智播客-web service(2)-ESB、SOAP和WSDLESBESB,Enterprise Service Bus,企业服务总线。这个概念哪来的呢?

传智播客-web service(2)-ESB、SOAP和WSDL

ESB
ESB,Enterprise Service Bus,企业服务总线。这个概念哪来的呢?得先从web service讲起,话说。。。(balabala~~~)

?

web service,可以认为是“跨平台(OS)、跨语言(java、C等)系统间的一种整合方案,以实现各系统间的协同作业”。举例来说,某个公司由小发展到大,可能有很多部门,有很多系统,但系统开发语言并不一致(可能有自己开发的,也有买来的):例如OA是用VB开发的,ERP是Java开发的,而CRM是Delphi开发的,现在又有一个C#开发的进销存系统,而且还想把这些系统整合到一起,不仅仅是在局域网内,在internet的时候也可以达到各系统间的无障碍通信。咋办呢?web service就是最佳的解决方案之一。

?

所谓上述系统间的通信,其实也就是数据的交互,那什么样的数据是跨语言的呢?--文本。这是最简洁的数据类型,也是各开发语言都支持的。但是,每个系统对外开发的信息都自有一套,你不可能为每个系统开发针对其他三个系统的信息接口,这样的话,要实现上述系统间的整合,你得再开发3*4套信息接收程序,工作量巨大而且难以维护。web service的构想就是将各个系统间的交互数据视为文本类型,再以一种既定的规范封装各系统open的数据,然后再分发到各系统。简单的理解,可以视为将各个系统挂接到一个统一的介质上,然后再由这个介质中转数据,看上去点像MOM,不过不是,因为这个介质不是真实存在的。请参见下列示意图(NND,禁止传图,害得俺只能一个字符一个字符地敲,泪。。俺容易么。。)
|----------|?????????? |
| OA(VB)? |------->|
|----------|?????????? |?????????? ?|-----------|

?????????????????????????? |<-------| ERP(Java) |
??? ?????????????????????? |??????????? |-----------|
|----------|????????? |?
| CRM(VB) |------>|
|----------|????????? |?????????? |------------|
??? ?????????????????????? |<------| 进销存(C#) |
???????????????????????????|????????? ?|------------|
????????????????????????? ?|
??? ?????????????????????? |--->这根线即可视为ESB

中间的这根线就是上面所说的介质,但是并没有类似MOM这样的实体存在(当然,实际应用中,你也可以把MOM放在这个位置),只是为了方便理解而设计的,只是一种逻辑概念。而这根线就是ESB。

?

SOAP
web service是一种(1)实现跨平台跨语言系统协同的一种方案,而且(2)能够保证在internet上也能够访问。技术上要做到(1),就是要保证各语言都能识别传送和接收的数据类型,前文说的是文本类型,不过这里说的文本不是指text,而是xml;而要做到(2),支持http协议就是最佳选择。

?

SOAP,Simple Object Access Protocal,简单对象访问协议,其实可以看作是上述二者的结合,即XML+HTTP,所以,SOAP其实本质上还是HTTP协议,不过是一种加了限制的HTTP协议,限制的内容即,传输的数据要求是XML类型,而且必须用“SOAP信封”封装。

?

不过维基给出的定义更广泛:
SOAP:一个基于XML的可扩展消息信封格式,需同时绑定一个传输用协议。这个协议通常是HTTP或HTTPS,但也可能是SMTP或XMPP。

?

WSDL
WSDL,Web Service Description Language,web service描述语言。上文所说的web service“以一种既定的规范封装各系统open的数据”,这个“规范”就是WSDL。

?

WSDL规定了诸如方法名,传入参数,返回值以及在哪个地址(例如某网址)上公开服务等信息。简单地说,一个系统对外公开其服务,其实就是公开其WSDL文档。而一个系统要访问另一个系统,就必须先查找到这个系统公开的WSDL文档。

?

热点排行