浏览 4488 次
锁定老帖子 主题:简要描述wsdl
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-02
wsdl(Web Service Description Language),描述怎样提供网络服务,包括与什么协议进行绑定、参数类型、校验(schema)、访问入口等等。 wsdl的元素类型如下: type、message、operation porttype(这四个元素是抽象的,只是定义一种描述) service binding port是具体的实现 之间的依赖关系如下(图使用ppt作的,比较丑^_^) [img] http://pippo25.iteye.com/upload/picture/pic/13369/9b057d82-49f9-3a7a-9a19-f346068d1fbe.jpg [/img] 1.types:分为imapleType 和 complesType两种,如: <element name="add"> <complexType> <sequence> <element name="x" type="xsd:int"/> <element name="y" type="xsd:int"/> </sequence> </complexType> </element> 2.Message:描述消息,使用types类型定义的参数组成消息 如: <wsdl:message name="addRequest"> <wsdl:part element="impl:add" name="parameters"/> </wsdl:message> 3.Operation:描述操作。使用message描述的参数。定义了一个访问入口的 请求/响应消息对。 如: <wsdl:operation name="subtract"> <wsdl:input message="impl:subtractRequest" name="subtractRequest"/> <wsdl:output message="impl:subtractResponse" name="subtractResponse"/> </wsdl:operation> 4.porttype:定义了所有操作的集合,由operation组成。 如: <wsdl:portType name="EngineImpl"> <wsdl:operation name="add"> <wsdl:input message="impl:addRequest" name="addRequest"/> <wsdl:output message="impl:addResponse" name="addResponse"/> </wsdl:operation> <wsdl:operation name="subtract"> <wsdl:input message="impl:subtractRequest" name="subtractRequest"/> <wsdl:output message="impl:subtractResponse" name="subtractResponse"/> </wsdl:operation> <wsdl:operation name="divide"> <wsdl:input message="impl:divideRequest" name="divideRequest"/> <wsdl:output message="impl:divideResponse" name="divideResponse"/> </wsdl:operation> <wsdl:operation name="multiply"> <wsdl:input message="impl:multiplyRequest" name="multiplyRequest"/> <wsdl:output message="impl:multiplyResponse" name="multiplyResponse"/> </wsdl:operation> </wsdl:portType> 上面的四个元素只是描述,没有涉及到真正的服务实现方式。 5.Service:相关服务访问点的集合。 6.Binding:结构定义了某个PortType与某一种具体的网络传输协议或消息传输协议相绑定,从这一层次开始,描述的内容就与具体服务的部署相关了。比如可以将PortType与SOAP/HTTP绑定,也可以将PortType与MIME/SMTP相绑定等。 如: <wsdl:binding name="EngineImplSoapBinding" type="impl:EngineImpl"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="add"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="addRequest"> <wsdlsoap:body use="literal"/> </wsdl:input> <wsdl:output name="addResponse"> <wsdlsoap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="subtract"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="subtractRequest"> <wsdlsoap:body use="literal"/> </wsdl:input> <wsdl:output name="subtractResponse"> <wsdlsoap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="divide"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="divideRequest"> <wsdlsoap:body use="literal"/> </wsdl:input> <wsdl:output name="divideResponse"> <wsdlsoap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="multiply"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="multiplyRequest"> <wsdlsoap:body use="literal"/> </wsdl:input> <wsdl:output name="multiplyResponse"> <wsdlsoap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> 7.port:Port描述的是一个服务访问入口的部署细节,包括通过哪个Web地址(URL)来访问,应当使用怎样的消息调用模式来访问等。其中消息调用模式则是使用Binding结构来表示。 如: <wsdl:port binding="impl:EngineImplSoapBinding" name="EngineImpl"> <wsdlsoap:address location="http://localhost:8010/WebService/services/EngineImpl"/> </wsdl:port> 一个WSDL中,definition是整个文档的根元素,一个文档中可能存在多个Service元素,service是服务的入口点。 Service 中可能有多个port,每个port对应一个PortType,PortType可能对应一组operation 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |