WSDL+ESB Studio学习

之前翻译过wsdl的简介,接下来做个深入的了解。以下内容基本取自w3cschool

wsdl是使用标准化语言描述web service的文件。

wsdl的主要结构是类似这样的:

<definitions>

<types>
   definition of types........
</types>

<message>
   definition of a message....
</message>

<portType>
   definition of a port.......
</portType>

<binding>
   definition of a binding....
</binding>

</definitions>

portType:

<portType>定义了服务的操作,类似于程序中某个模块或者类。是一系列operation的集合。


下面是一个简单的wsdl实例:

<message name="getTermRequest">
   <part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
   <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
  <operation name="getTerm">
        <input message="getTermRequest"/>
        <output message="getTermResponse"/>
  </operation>
</portType>


这个wsdl里面定义了一个端口glossaryTerms,端口有个操作是getTerm,输入信息getTermRequest和输出消息getTermResponse。message标签定义了信息的格式。


binding:

<binding>为端口定义消息格式和协议

<message name="getTermRequest">
   <part name="term" type="xs:string" />
</message>

<message name="getTermResponse">
   <part name="value" type="xs:string" />
</message>

<portType name="glossaryTerms">
  <operation name="getTerm">
      <input message="getTermRequest" />
      <output message="getTermResponse" />
  </operation>
</portType>

<binding type="glossaryTerms" name="b1">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
  <operation>
    <soap:operation
     soapAction="http://example.com/getTerm" />
    <input>
      <soap:body use="literal" />
    </input>
    <output>
      <soap:body use="literal" />
    </output>
  </operation>
</binding>

binding包含两个属性:name 和 type

name是binding的名称,type指定绑定的端口。上例中binding指向的是glossaryTerms端口。

soap:binding中有两个属性:style和transport。

style可能出现的值:rcp或者document。

transport指定使用的协议,这里是http。

soap:operation

wsdl中定义的每个操作,都需要相应的soap定义。

对输入和输出,需要定义编码格式。

service和port的例子:

 <wsdl:service name="HelloWorldImplService">
     <wsdl:port binding="tns:HelloWorldImplServiceSoapBinding" name="HelloWorldImplPort">
        <soap:address location="http://localhost:8080/helloWorld" /> 
    </wsdl:port>
 </wsdl:service>

service:

port的集合。name属性定义了service的名称

port:

指定使用哪个绑定。为endpoint指定访问点。

上例可解释为:在这个叫做HelloWorldImplService的服务中,提供一个访问入口,地址是http://localhost:8080/helloWorld。使用的消息模式是前面binding的HelloWorldImplServiceSoapBinding所定义的。

types:

数据类型的定义。


wsdl基本概念介绍完,再说studio中对service的创建和操作。

studio中的service,基本是围绕一个wsdl文件,建立实现服务的job。studio的一个功能就是create and edit wsdl file graphically。

components的手册上有一句:The Jobs, which are built upon the components under the ESB/Web Services family, act as the implementations of web services。ESB/Web service包下的组件构成的job是service的实现。

具体操作可以看在线教程:http://www.talendforge.org/tutorials/tutorial.php?language=english&idTuto=100

教你怎么用studio建service,还有provider/Consumer Job. 原来我不明白这俩job是干什么的,现在懂了,他俩之间,还有和wsdl的关系如下图所示:


provider job里面”包裹“着对service的调用。这就是为什么只有启动了provider job之后,consumer job才能发起请求。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值