zoukankan      html  css  js  c++  java
  • webservice了解一下!!

    (1)什么是webservice?

    webservice是一种可以跨编程语言和跨平台进行远程调用的一种技术,是同步进行。

    webservice主要分为两种,一种是基于浏览器的瘦客户端应用程序,一种是基于浏览器的富客户端应用程序(RIA)。

    webservice其实就是一个系统主动暴露到外面的API,通过发布的webservice路径生成客户端,通过客户端访问这个系统所主动暴露的API,进行调用操作。

    WebService平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,WebService平台 必须提供一套标准的系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。

    webservice平台必须提供一种标准来描述 webservice,让客户可以得到足够的信息来调用这个webservice。我们还必须有一种方法来对这个webservice进行远 程调用,这种方法实际是一种远程过程调用协议(RPC)。为了达到互操作性,这种RPC协议还必须与平台和编程语言无关。

    (2)webservice是怎么实现的?

    webservice实现主要是通过XML+XSD,SOAP和WSDL这三种技术实现。

    1、XML+XSD

     WebService使用HTTP协议进行数据传输数,是用XML格式对数据进行封装,在XML报文中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的 返回结果是什么。 使用XML的格式对数据进行封装解决了数据的显示的问题,但是XML没有标准的的数据类型的定义,没有明确的说明报文中的数据代表什么,更加无法扩展数据类型,而XSD(XML Schema)就是为规定XML中数据类型的标准出现的,当你使用其他的编程语言或者其他的操作平台的时候,所有的数据类型都必须转化为XSD类型,这样就克服了编程语言不同和操作平台不同的问题。

    2、SOAP

     WebService通过HTTP协议发送请求和接收结果,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明 HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用Web Service。

      SOAP协议 = HTTP协议 + XML数据格式

      SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。打个比 喻:HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的高速公路。

    3、WSDL

    WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端都 能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的 Web service生成WSDL文档,又能导入WSDL文档,生成调用相应WebService的代理类代码。

      WSDL 文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。 WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:1.注册到UDDI服务器,以便被人查找;2.直接告诉给客户端调用者。

    (3)webservice怎么使用?

    代码中webservice分为服务端和客户端两部分,服务端就是系统主动暴露的API的具体处理代码,客户端就是远程调用时所使用的程序,客户端需要通过发布服务的具体路径来实现。如果服务端的代码有修改,客户端就需要重新生成。

    (4)使用webservice应该注意些什么?

    1、不要随意改动发布的Webservice的服务名称和Webservice方法名字。

    2、服务端的程序完成之后,启动项目,有两种方式可以对服务端进行注册,一种通过@WebService和@WebMethod这两个标签表明这个程序是webservice的服务端代码,然后启动项目,扫描这两个标签,进行注册,另一种是通过XML配置文件,在配置文件中声明服务端程序,然后把配置文件配置到web.XML 中,这样项目启动就会加载到webservice服务端程序。

    3、需要保证webservice服务端运行的环境稳定,不要变更太频繁。

    4、需要确定webservice服务端的路径。

    (5)使用webservice的好处?

    1、可以跨操作平台进行通信。

    2、可以忽略编程语言得差异。

    3、使用HTTP协议和XML进行通信,稳定、普遍,复用性高,安全,快捷,有利于软件和数据重用,实现松耦合。

    4、可以实现跨防火墙通信。

    (6)webservice的缺点?

    1、不适用与单机程序。

    2、不适用于局域网内调用。

    3、由于soap是基于xml传输,本身使用xml传输会传输一些无关的东西从而效率不高,随着soap协议的完善,soap协议增加了许多内容,这样就导致了使用soap协议去完成简单的数据传输的效率不高。如果直接用http传输自定义数据内容比webservice开发更快捷

    (7)webservice实例?

    1、定义接口,规定webservice的服务端的方法。

    @WebService
    public interface TestService{
    @WebMethod
    public void Test(byte[] message);
    }

    2、实现webservice接口,编写服务端的方法。

    @WebService
    public class Testimpl_Test implementsTestService{
        @WebMethod
    public void Test(byte[] message) {
    String string =new String(message);
    System.out.println("哈哈,成功了"+string );
      }
    }

    3、进行服务端的注册,发布服务,主动暴露服务端API。

    <?xml version="1.0"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://cxf.apache.org/jaxws
    http://cxf.apache.org/schemas/jaxws.xsd">
    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
    <jaxws:endpoint id="test1"
    implementor="com.Testimpl_Test "
          address="/TestService" />
    </beans>

    4、生成客户端,进行远程调用。

    
    
  • 相关阅读:
    learning.py报错
    Swift与OC的相互调用
    微信小程序地图之逆地理编码
    微信小程序-滑动视图注意事项
    animate.css动画种类
    利用WKWebView实现js与OC交互注意事项
    jquey下eq()的使用注意事项
    如何判断html页面停止滚动?
    git 常见报错
    openresty中http请求body数据过大的处理方案
  • 原文地址:https://www.cnblogs.com/carblack/p/10820113.html
Copyright © 2011-2022 走看看