WebsService学习之一

WebsService学习之一
  
一 . WebService 概念
       WebSerivce 是通过一系列标准和协议来保证程序之间动态连接,即分布式服务组件。本质上就是要以标准话的形式实现企业内外部各个不同服务系统之间的互调或集成。其中最 基本的协议包裹:SOAP(WebService之间的基本通信协   议),WSDL(WebService描述语言,它定义了WebSerivce 是做什么的,怎么做和查询的信息),UDDI(用于集中存放和查找WSDL描述文件,起着目录服务器的作用)。

      1. SOAP. Simple Object Access Protocol

          SOAP是消息传递的协议,它规定了Web Serivces之间是怎样传递消息的。简单的说,SOAP规定了:
  
         1). 传递的消息格式是XML。使Web Services 可以在任何平台,任何语言实现。
         
         2). 远程对象方法调用的格式。 规定了怎样表示被调用对象及调用的方法名和参数类型。
        
         3). 参数类型和XML格式之间的映射,被调用的方法有时候需要传递一个复杂的参数,例如,一个Customer对象,怎样用XML来表示一个对象参数,也是SOAP所定义的范围
              例如:<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="................../">
                        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="...................">
                        <soapenv:Header/>
                        <soapenv:Body>
                                  <web:addNewCustomer>
                                            <!--Optional:-->
                                            <arg0>
                                                    <id>?</id>
                                            <!--Optional:-->
                                                   <lastUpdatedDate>?</lastUpdatedDate>
                                            <!--Optional:-->
                                                   <name>?</name>
                                           </arg0>
                                 </web:addNewCustomer>
                         </soapenv:Body>
                        </soapenv:Envelope>

         4). 异常处理以及其他的相关信息

      2. WSDL.Web Services Description Language
          是Web Services的定义语言 。是基于XML格式的关于WEB服务的描述语言,主要的目的在于为别人提供你实现某种服务的有关内容,也即为了让别的程序调用,你必须告诉大家你的服务接 口,例如服务名称,服务所在的机器名称,监听端口,传递参数的类型,个数,顺序等等,这样别人才能调用 你的服务。使用者使用者通过这个wsdl文档,创建想用的SOAP请求信息,通过HTTP传递web Service 提供者,Web 服务器在完成服务请求之后,将SOAP返回消息传回请求者,服务请求者在根据wsdl文档将SOAP消息解析成自己能够理解的内容。
           例如: CustomerService.wsdl ,CustomerService_schema1.xsd(省落)
                 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
                 <!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.3.1-hudson-749-SNAPSHOT. -->
                 <definitions targetNamespace=".............." name="CustomerService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="..........." xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"                     xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                   <types>
                        <xsd:schema>
                             <xsd:import namespace="...................." schemaLocation="CustomerService_schema1.xsd"/>
                        </xsd:schema>
                   </types>
                   <message name="addNewCustomerResponse">
                        <part name="parameters" element="tns:addNewCustomerResponse"/>
                   </message>
                   <portType name="CustomerService">
                        <operation name="addNewCustomer">
                            <input message="tns:addNewCustomer"/>
                            <output message="tns:addNewCustomerResponse"/>
                        </operation>
                    </portType>
                   <binding name="CustomerServicePortBinding" type="tns:CustomerService">
                        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
                        <operation name="addNewCustomer">
                               <soap:operation soapAction=""/>
                               <input>
                                         <soap:body use="literal"/>
                               </input>
                               <output>
                                        <soap:body use="literal"/>
                               </output>
                        </operation>
                    </binding>
                  <service name="CustomerServiceService">
                        <port name="CustomerServicePort" binding="tns:CustomerServicePortBinding">
                                <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
                       </port>
                  </service>
            </definitions>
            注意: Types :数据类型的定义容器,它使用某种类型系统(一般使用XML Schema中的类型系统。例如这里面就是)
                       Message :通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构(例如:CustomerService_schema1.xsd)。
                        PortType:对于每个访问入口类型所支持的操作的抽象几个,这些操作可以由一个或多个访问服务点来支持。
                       Operation: 对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。例如:
                                       <operation name="addNewCustomer">
                                           <input message="tns:addNewCustomer"/>
                                           <output message="tns:addNewCustomerResponse"/>
                                       </operation>
                                      中有input/outPut消息对。
                        Binding: 特定端口类型的具体协议和数据格式规范的绑定
                        Port : 定义为协议/数据格式绑定与具体的Web访问地址组合的单个服务访问点
                        Service:相关服务访问点的集合。
                      
                   
      3. UDDI .Universal Description, Discovery, and Integration
           简单说,UDDI用于集中存放和查找WSDL描述文件,起着目录服务器的作用。

二 . Web service 生命期
        见图:http://gceclub.sun.com.cn/staticcontent/html/java/webservices_for/webservice_for_html_m126e0ad.gif
   
    下面描述了
XML Web service 调用时发生事件的序列:

1.         客户端建立了新的XML Web service 服务代理类实例,此实例对象驻留在客户端的计算机中。

2.         客户端调用一个代理类的方法。

3.         客户计算机的底层结构序列化XML Web service 方法的参数为SOAP消息,并通过网络将其发送到XML Web service 服务端。

4.         在服务端的底层结构及收到SOAP消息,并房序列化为XML。建立一个类的实例来完成XML Web service,调用XML Web service 方法并传递XML参数。

5.         XML Web service 方法执行,最终设置返回值和输出参数。

6.         XML Web service 服务方的底层结构将返回值和数除参数序列化为SOAP消息。并通过网络发回客户端。

7.         客户端的底层结构接收到上面的SOAP消息,反序列化XML为返回值和输出参数。并将其传递给代理类实例。

              8.         客户端接受到返回式和输出参数

     webService 实现的例子。
 
      1.实现一个WebService,使其能够接受和响应SOAP消息
      
      2.撰写一个WSDL文件用于描述此Web Services。

      3.将此WSDL发布到UDDI上
 
      4. 其他的应用程序(客户端)从UDDI上搜索倒你的WSDL

      5.根据你的WSDL,客户端编写程序调用Web Service.

          





         

你可能感兴趣的:(WebsService学习之一)