(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、生成客户端,进行远程调用。

												

webservice了解一下!!的更多相关文章

  1. webService

    什么是webService WebService,顾名思义就是基于Web的服务.它使用Web(HTTP)方式,接收和响应外部系统的某种请求.从而实现远程调用.  1:从WebService的工作模式上 ...

  2. 开始webservice了

    一.WebService到底是什么 一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用 ...

  3. Spring WebService入门

    Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布 ...

  4. 浅谈跨域以及WebService对跨域的支持

    跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问.也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源. 在 ...

  5. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

  6. Atitit webservice发现机制 WS-Discovery标准的规范attilax总结

    Atitit webservice发现机制 WS-Discovery标准的规范attilax总结 1.1. WS-Discovery标准1 1.2. 一.WS-Discovery1 1.2.1.   ...

  7. java调用CXF WebService接口的两种方式

    通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂 ...

  8. VS2010编写WebService与在IIS的发布<之简单讲解>

    工具VS2010,window环境win7 一:Webservice的创建与方法查看调用 1.新建空web应用程序项目 2.新建web服务 3.自动生成 4.直接跑起来,可以看到有2个方法 5.点击H ...

  9. webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口

    webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲 ...

  10. webService学习之路(二):springMVC集成CXF快速发布webService

    继上一篇webService入门之后,http://www.cnblogs.com/xiaochangwei/p/4969448.html ,现在我将我周六在家研究的结果公布出来 本次集成是基于之前已 ...

随机推荐

  1. [NOI2020]美食家 题解

    题意分析 给出一个带权有向图,要求从节点 $1$ 出发,经过恰好 $T$ 的边权和,回到节点 $1$ ,求可经过的最大点权和.特别地,经过的边权和达到部分特殊数时,会有某个点的点权发生改变. 思路分析 ...

  2. activemq的搭建

    说在前面的话: 本节主要介绍activemq的介绍以及activemq的安装,希望可以给迷惑中的读者带来一丝灵感,activemq的安装是基于linux环境下的 准备的环境: 一台安装jdk的linu ...

  3. windows快速安装linux虚拟机

    1. 场景描述 因测试中需要linux集群,目前的服务器不太方便部署,需要本机(windows7)启动多个linux虚拟机,记录下,希望能帮到需要的朋友. 2. 解决方案 2.1 软件准备 (1)使用 ...

  4. Android Studio出现:Your project path contains non-ASCII 错误代码解决方法

    导入Project的出现: Error:(1, 0) Your project path contains non-ASCII characters. This will most likely ca ...

  5. vue学习笔记一

    vue 颠覆式的开发方式 解疑 为什么要学习vue? 降低项目的复杂度 就业需要 vue难不难? 特别简单 相比于React,vue有什么优势? 前端三大框架:Angular.React.Vue Vu ...

  6. C. News Distribution(并查集)

    In some social network, there are nn users communicating with each other in mm groups of friends. Le ...

  7. Fibonacci and Counting(水题)

    链接:https://ac.nowcoder.com/acm/contest/303/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  8. Nginx 前端项目配置 包含二级目录和接口代理

    Nginx是目前用的比较多的一个前端服务器 其优点是配置简单修改一下server就能用 并发性能比较好,具体怎么好就看这个吧 开撸 1.找到nginx (liunx系统,已安装) whereis ng ...

  9. JS中有趣的内置对象-JSON

    前言 在以前的web开发中,我们多数选择纯文本或XML作为我们的提交的数据格式,大多数是XML,少数纯文本.其实从AJAX(Asynchronous JavaScript and XML)的命名我们也 ...

  10. 17_Python的常用模块

    1.随机数模块 random 1.随机小数 import random # (0,1)随机取浮点数 random.random() # 0.17988578778011 # (1, 3)取指定范围的浮 ...