新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     >>W3CHINA.ORG讨论区<<     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> Web服务(Web Services,WS), 语义Web服务(Semantic Web Services, SWS)讨论区: WSDL, SOAP, UDDI, DAML-S, OWL-S, SWSF, SWSL, WSMO, WSML,BPEL, BPEL4WS, WSFL, WS-*,REST, PSL, Pi-calculus(Pi演算), Petri-net,WSRF,
    [返回] W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWLW3CHINA.ORG讨论区 - Web新技术讨论『 Web Services & Semantic Web Services 』 → WSDL Essentials 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 3036 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: WSDL Essentials 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     flanker721 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:23
      积分:189
      门派:XML.ORG.CN
      注册:2006/12/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给flanker721发送一个短消息 把flanker721加入好友 查看flanker721的个人资料 搜索flanker721在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看flanker721的博客楼主
    发贴心情 WSDL Essentials

    WSDL is a specification defining how to describe web services in a common XML
    grammar. WSDL describes four critical pieces of data:
    •Interface information describing all publicly available functions
    •Data type information for all message requests and message responses
    •Binding information about the transport protocol to be used
    •Address information for locating the specified service
    In a nutshell, WSDL represents a contract between the service requestor and the service
    provider, in much the same way that a Java interface represents a contract between client
    code and the actual Java object. The crucial difference is that WSDL is platform- and
    language-independent and is used primarily (although not exclusively) to describe SOAP
    services.
    Using WSDL, a client can locate a web service and invoke any of its publicly available
    functions. With WSDL-aware tools, you can also automate this process, enabling
    applications to easily integrate new services with little or no manual code. WSDL
    therefore represents a cornerstone of the web service architecture, because it provides a
    common language for describing services and a platform for automatically integrating
    those services.
    This chapter covers all aspects of WSDL, including the following topics:
    •An overview of the WSDL specification, complete with detailed explanations of
    the major WSDL elements
    •Two basic WSDL examples to get you started
    •A brief survey of WSDL invocation tools, including the IBM Web Services
    Invocation Framework (WSIF), SOAP::Lite, and The Mind Electric's GLUE
    platform
    •A discussion of how to automatically generate WSDL files from existing SOAP
    services
    •An overview of using XML Schema types within WSDL, including the use of
    arrays and complex types
    6.1 The WSDL Specification
    WSDL is an XML grammar for describing web services. The specification itself is
    divided into six major elements:
    definitions
    The definitions element must be the root element of all WSDL documents. It
    defines the name of the web service, declares multiple namespaces used throughout
    the remainder of the document, and contains all the service elements described here.
    Web Services Essentials
    104
    types
    The types element describes all the data types used between the client and server.
    WSDL is not tied exclusively to a specific typing system, but it uses the W3C XML
    Schema specification as its default choice. If the service uses only XML Schema
    built-in simple types, such as strings and integers, the types element is not required.
    A full discussion of the types element and XML Schema is deferred to the end of the
    chapter.
    message
    The message element describes a one-way message, whether it is a single message
    request or a single message response. It defines the name of the message and
    contains zero or more message part elements, which can refer to message
    parameters or message return values.
    portType
    The portType element combines multiple message elements to form a complete oneway
    or round-trip operation. For example, a portType can combine one request and
    one response message into a single request/response operation, most commonly used
    in SOAP services. Note that a portType can (and frequently does) define multiple
    operations.
    binding
    The binding element describes the concrete specifics of how the service will be
    implemented on the wire. WSDL includes built-in extensions for defining SOAP
    services, and SOAP-specific information therefore goes here.
    service
    The service element defines the address for invoking the specified service. Most
    commonly, this includes a URL for invoking the SOAP service.
    To help you keep the meaning of each element clear, Figure 6-1 offers a concise
    representation of the WSDL specification. As you continue reading the remainder of the
    chapter, you may wish to refer back to this diagram.
    Figure 6-1. The WSDL specification in a nutshell
    Web Services Essentials
    105
    In addition to the six major elements, the WSDL specification also defines the following
    utility elements:
    documentation
    The documentation element is used to provide human-readable documentation and
    can be included inside any other WSDL element.
    import
    The import element is used to import other WSDL documents or XML Schemas.
    This enables more modular WSDL documents. For example, two WSDL documents
    can import the same basic elements and yet include their own service elements to
    make the same service available at two physical addresses. Note, however, that not
    all WSDL tools support the import functionality as of yet.
    WSDL is not an official recommendation of the W3C and, as such,
    has no official status within the W3C. WSDL Version 1.1 was
    submitted to the W3C in March 2001. Original submitters included
    IBM, Microsoft, Ariba, and a half dozen other companies. Most
    probably, WSDL will be placed under the consideration of the new
    W3C Web Services Activity's Web Services Description Working
    Group, which will decide if the specification advances to an official
    recommendation status. The WSDL Version 1.1 specification is
    available online at http://www.w3.org/TR/wsdl.
    6.2 Basic WSDL Example: HelloService.wsdl
    To make the previously described WSDL concepts as concrete as possible, let's examine
    our first sample WSDL file.
    Example 6-1 provides a sample HelloService.wsdl document. The document describes the
    HelloService from Chapter 4.
    As you may recall, the service provides a single publicly available function, called
    sayHello. The function expects a single string parameter, and returns a single string
    greeting. For example, if you pass the parameter world , the service returns the greeting,
    "Hello, world!"
    Example 6-1. HelloService.wsdl
    <?xml version="1.0" encoding="UTF-8"?>
    <definitions name="HelloService"
    targetNamespace="http://www.ecerami.com/wsdl/HelloService.wsdl"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="http://www.ecerami.com/wsdl/HelloService.wsdl"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <message name="SayHelloRequest">
    <part name="firstName" type="xsd:string"/>
    </message>
    Web Services Essentials
    106
    <message name="SayHelloResponse">
    <part name="greeting" type="xsd:string"/>
    </message>
    <portType name="Hello_PortType">
    <operation name="sayHello">
    <input message="tns:SayHelloRequest"/>
    <output message="tns:SayHelloResponse"/>
    </operation>
    </portType>
    <binding name="Hello_Binding" type="tns:Hello_PortType">
    <soap:binding style="rpc"
    transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="sayHello">
    <soap:operation soapAction="sayHello"/>
    <input>
    <soap:body
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    namespace="urn:examples:helloservice"
    use="encoded"/>
    </input>
    <output>
    <soap:body
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    namespace="urn:examples:helloservice"
    use="encoded"/>
    </output>
    </operation>
    </binding>
    <service name="Hello_Service">
    <documentation>WSDL File for HelloService</documentation>
    <port binding="tns:Hello_Binding" name="Hello_Port">
    <soap:address
    location="http://localhost:8080/soap/servlet/rpcrouter"/>
    </port>
    </service>
    </definitions>
    The WSDL elements are discussed in the next section of this chapter. As you examine
    each element in detail, you may want to refer to Figure 6-2 , which summarizes the most
    important aspects of Example 6-1.
    Figure 6-2. A bird's-eye view of HelloService.wsdl
    Web Services Essentials
    107
    6.2.1 definitions
    The definitions element specifies that this document is the HelloService. It also specifies
    numerous namespaces that will be used throughout the remainder of the document:
    <definitions name="HelloService"
    targetNamespace="http://www.ecerami.com/wsdl/HelloService.wsdl"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="http://www.ecerami.com/wsdl/HelloService.wsdl"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    The use of namespaces is important for differentiating elements, and it enables the
    document to reference multiple external specifications, including the WSDL specification,
    the SOAP specification, and the XML Schema specification.
    The definitions element also specifies a targetNamespace attribute. The targetNamespace
    is a convention of XML Schema that enables the WSDL document to refer to itself. In
    Example 6-1, we specified a targetNamespace of http://www.ecerami.com/wsdl/
    HelloService.wsdl. Note, however, that the namespace specification does not require that
    the document actually exist at this location; the important point is that you specify a value
    that is unique, different from all other namespaces that are defined.
    Finally, the definitions element specifies a default namespace:
    xmlns=http://schemas.xmlsoap.org/wsdl/. All elements without a namespace prefix, such
    as message or portType , are therefore assumed to be part of the default WSDL namespace.
    6.2.2 message
    Two message elements are defined. The first represents a request message,
    SayHelloRequest, and the second represents a response message, SayHelloResponse:
    <message name="SayHelloRequest">
    <part name="firstName" type="xsd:string"/>
    </message>
    <message name="SayHelloResponse">
    <part name="greeting" type="xsd:string"/>
    </message>
    Each of these messages contains a single part element. For the request, the part specifies
    the function parameters; in this case, we specify a single firstName parameter. For the
    response, the part specifies the function return values; in this case, we specify a single
    greeting return value.
    The part element's type attribute specifies an XML Schema data type. The value of the
    type attribute must be specified as an XML Schema QName - this means that the value of
    the attribute must be namespace-qualified. For example, the firstName type attribute is set
    to xsd:string ; the xsd prefix references the namespace for XML Schema, defined earlier
    within the definitions element.
    If the function expects multiple arguments or returns multiple values, you can specify
    multiple part elements.
    Web Services Essentials
    108
    6.2.3 portType
    The portType element defines a single operation, called sayHello. The operation itself
    consists of a single input message (SayHelloRequest) and a single output message
    (SayHelloResponse):
    <portType name="Hello_PortType">
    <operation name="sayHello">
    <input message="tns:SayHelloRequest"/>
    <output message="tns:SayHelloResponse"/>
    </operation>
    </portType>
    Much like the type attribute defined earlier, the message attribute must be specified as an
    XML Schema QName. This means that the value of the attribute must be namespacequalified.
    For example, the input element specifies a message attribute of
    tns:SayHelloRequest ; the tns prefix references the targetNamespace defined earlier within
    the definitions element.
    WSDL supports four basic patterns of operation:
    One-way
    The service receives a message. The operation therefore has a single input element.
    Request-response
    The service receives a message and sends a response. The operation therefore has
    one input element, followed by one output element (illustrated previously in
    Example 6-1). To encapsulate errors, an optional fault element can also be
    specified.
    Solicit-response
    The service sends a message and receives a response. The operation therefore has
    one output element, followed by one input element. To encapsulate errors, an
    optional fault element can also be specified.
    Notification
    The service sends a message. The operation therefore has a single output element.
    These patterns of operation are also shown in Figure 6-3. The request-response pattern is
    most commonly used in SOAP services.
    Web Services Essentials
    109
    Figure 6-3. Operation patterns supported by WSDL 1.1
    6.2.4 binding
    The binding element provides specific details on how a portType operation will actually be
    transmitted over the wire. Bindings can be made available via multiple transports,
    including HTTP GET, HTTP POST, or SOAP. In fact, you can specify multiple bindings
    for a single portType.
    The binding element itself specifies name and type attributes:
    <binding name="Hello_Binding" type="tns:Hello_PortType">
    The type attribute references the portType defined earlier in the document. In our case, the
    binding element therefore references tns:Hello_PortType , defined earlier in the
    document. The binding element is therefore saying, "I will provide specific details on how
    the sayHello operation will be transported over the Internet."
    6.2.4.1 SOAP binding
    WSDL 1.1 includes built-in extensions for SOAP 1.1. This enables you to specify SOAPspecific
    details, including SOAP headers, SOAP encoding styles, and the SOAPAction
    HTTP header. The SOAP extension elements include:
    soap:binding
    This element indicates that the binding will be made available via SOAP. The style
    attribute indicates the overall style of the SOAP message format. A style value of
    rpc specifies an RPC format. This means that the body of the SOAP request will
    include a wrapper XML element indicating the function name. Function parameters
    Web Services Essentials
    110
    are then embedded inside the wrapper element. Likewise, the body of the SOAP
    response will include a wrapper XML element that mirrors the function request.
    Return values are then embedded inside the response wrapper element.
    A style value of document specifies an XML document call format. This means that
    the request and response messages will consist simply of XML documents. The
    document style is flatter than the rpc style and does not require the use of wrapper
    elements. (See the upcoming note for additional details.)
    The transport attribute indicates the transport of the SOAP messages. The value
    http://schemas.xmlsoap.org/soap/http indicates the SOAP HTTP transport,
    whereas http://schemas.xmlsoap.org/soap/smtp indicates the SOAP SMTP
    transport.
    soap:operation
    This element indicates the binding of a specific operation to a specific SOAP
    implementation. The soapAction attribute specifies that the SOAPAction HTTP
    header be used for identifying the service. (See Chapter 3 for details on the
    SOAPAction header.)
    soap:body
    This element enables you to specify the details of the input and output messages. In
    the case of HelloWorld, the body element specifies the SOAP encoding style and the
    namespace URN associated with the specified service.
    The choice between the rpc style and the document style is
    controversial. The topic has been hotly debated on the WSDL
    newsgroup (http://groups.yahoo.com/group/wsdl). The debate is
    further complicated because not all WSDL-aware tools even
    differentiate between the two styles. Because the rpc style is more in
    line with the SOAP examples from previous chapters, I have chosen
    to stick with the rpc style for all the examples within this chapter.
    Note, however, that most Microsoft .NET WSDL files use the
    document style.
    6.2.5 service
    The service element specifies the location of the service. Because this is a SOAP service,
    we use the soap:address element, and specify the local host address for the Apache SOAP
    rpcrouter servlet: http://localhost:8080/soap/servlet/rpcrouter.
    Note that the service element includes a documentation element to provide human-readable
    documentation.

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/30 17:16:00
     
     micklegeng 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:19
      积分:136
      门派:XML.ORG.CN
      注册:2006/12/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给micklegeng发送一个短消息 把micklegeng加入好友 查看micklegeng的个人资料 搜索micklegeng在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看micklegeng的博客2
    发贴心情 
    thanks
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/1/5 10:46:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Web Services & Semantic Web Services 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/8/11 6:05:24

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    109.375ms