zoukankan      html  css  js  c++  java
  • WebService 工作原理及实例教程

    一、WebService到底是什么?

    先来看下标准的定义:Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

    其实,一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。

    还可以从多个角度来理解WebService,从表面看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。

    二、WebService平台技术

    SOAP、WSDL、UDDI(UniversalDescriptionDiscovery andIntegration)三者构成了WebService的三要素。下面,详细阐述这三大技术:

    • SOAP

      WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用Web Service。 
      SOAP协议组成: 
      SOAP协议 = HTTP协议 + XML数据格式 
      SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。打个比喻:HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的高速公路。

    • WSDL

      好比我们去商店买东西,首先要知道商店里有什么东西可买,然后再来购买,商家的做法就是张贴广告海报。 WebService也一样,WebService客户端要调用一个WebService服务,首先要有知道这个服务的地址在哪,以及这个服务里有什么方法可以调用,所以,WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个url地址表示,服务通过什么方式来调用。 
      WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端都能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应WebService的代理类代码。

    • UDDI

      UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。

    三、WebService调用原理

    WebService调用原理.png

    实现一个完整的Web服务工作流程:
    • Web服务提供者设计实现Web服务,并将调试正确后的Web服务通过Web服务中介者发布,并在UDDI注册中心注册;

    • Web服务请求者向Web服务中介者请求特定的服务,中介者根据请求查询UDDI注册中心,为请求者寻找满足请求的服务;

    • Web服务中介者向Web服务请求者返回满足条件的Web服务描述信息,该描述信息用WSDL写成,各种支持Web服务的机器都能阅读;

    • 利用从Web服务中介者返回的描述信息生成相应的SOAP消息,发送给Web服务提供者,以实现Web服务的调用;

    • Web服务提供者按SOAP消息执行相应的Web服务,并将服务结果返回给Web服务请求者。

    四、WebService实例教程

       以 java 创建WebService服务为例:

    • 一.WebService服务端开发

      1.创建服务端项目,项目可以是Java Web项目,也可以是普通的Java项目,例如:

      2.在源代码目录src下面的包中新建一个java类用来提供WebService服务,我这里创建了一个Function类,通过javax.jws.WebService注解提供服务,通过javax.xml.ws.Endpoint类的publish方法来发布服务并提供发布的地址以及发布的服务类,代码如下:

      复制代码
       1 package com.jspweb.ws;
       2 
       3 import javax.jws.WebService;
       4 import javax.xml.ws.Endpoint;
       5 
       6 /**
       7  * WebService服务端案例
       8  * @author AlanLee
       9  * @version 2017/06/02
      10  * 使用@WebService注解标注实现类
      11  */
      12 @WebService
      13 public class Function {
      14     public String transWords(String words){
      15         String res = "";
      16         for(char ch : words.toCharArray()){
      17             res += ch+",";
      18         }
      19         return res;
      20     }
      21     
      22     public static void main(String[] args) {
      23         // 使用Endpoint(终端)类发布webservice
      24         Endpoint.publish("http://localhost:8089/service/function", new Function());
      25         System.out.println("Publish Success");
      26     }
      27 }
      复制代码

      3.启动main方法运行这个类,打印出结果Publish Success,表示服务发布成功:

      4.打开浏览器,访问我们发布的地址,大家可以看到这样的效果:

       5.点击WSDL后面的连接地址便可以打开WSDL配置,访问结果如下:

      WSDL 是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言。

      二、WebService客户端开发

      1.创建客户端项目,项目可以是Java Web项目,也可以是普通的Java项目,例如:

      2.使用eclipse工具生成客户端代码,跟着图一步步操作:

      ①选中项目点击鼠标右键new>Other...:

      ②在Wizards框中输入web,选择Web Service Client,点击next按钮:

      ③输入WSDL服务描述文件的访问地址,点击next:

      ④点击Finish按钮,eclipse会自动帮我们在src目录下生成WebService客户端所需的代码:

      ⑤:生成的代码如下:

      2.编写客户端测试类代码,我在同级目录下面写了一个测试类,并运行它的main方法,得到结果如下:

      这样一个简单的WebService入门实例就完成了。

  • 相关阅读:
    phpcms列表页内容如何替换?
    如何用phpcms将静态网页生成动态网页?
    简单介绍phpcms以及phpcms如何安装?
    注册账号的验证
    js跳转页面
    流程审核处理
    关于XML(可扩展标记语言)的基础知识与写法
    php随机获取验证码
    流程管理
    HDU 5894 hannnnah_j’s Biological Test
  • 原文地址:https://www.cnblogs.com/Lzf127/p/8862548.html
Copyright © 2011-2022 走看看