Advertisement

WebService:全网最全WebService技术简介

阅读量:

Web Service是一种基于XML标准化技术的标准API设计模式,在软件开发中帮助多个应用程序与平台和服务之间进行独立通信。其主要由三个核心技术组成:
SOAP(Simple Object Access Protocol)作为数据传输协议
WSDL(Web Services Description Language)作为服务接口描述
HTTP协议作为基础通讯协议
Web Service的工作原理
Web Service采用HTTP协议在客户端和服务端之间传输数据,并通过XML封装数据内容(SOAP协议)。Wsdl文件用于描述Service的接口及方法参数信息,客户端通过Wsdl地址调用Service并接收返回结果。
优点
基于HTTP简化了数据传输
支持复杂数据类型解析
提供远程方法调用功能
缺点
单工通信模式可能导致效率低下
仅限于远程调用而非高效通信场景
不适合同构环境中的高性能需求
注意事项
服务接口需适配具体业务需求
返回值应尽量简单化以减少解析复杂度
异常处理需优先考虑并规范返回结果
应用场景
跨平台异构应用集成
程序集成不同语言运行的应用程序
软件重用与模块化开发
JAXWS简介(Java SE 6.0以下)
JAXWS为Java提供了原生支持,默认情况下可以通过标记注解的方式发布WebService并实现本地代理调用功能:
标签用途:
@WebService - 描述一个可被发布的方法或操作符
@SOAPBinding - 定义消息协议类型
@WebMethod - 定义可执行的操作名称及参数信息
@WebResult - 定义返回值名称
@WebParam - 定义方法参数信息
通过这些标签无需手动编写HTTP/SOAP代码即可完成Sever端与客户端之间的调用功能。

文章目录

    • 一、Web Service简介

      • 1. 构成技术
      • 2. WebService原理
      • 3. WebService规范
    • 二、SOAP简介

    • 三、WSDL简介

      • 1. 阅读方式
    • 四、WebService优缺点

      • 1. 优点
      • 2. 缺点

五、WebService注意事项

复制代码
* 工具
* * 1\. wsgen
  * 2\. wsimport

一、Web Service简介

Web 服务是一种标准化的技术标准,在于其能够使多个应用程序与平台以及编程语言之间以独立的方式实现互相通信。
该技术基于标准 XML 消息传递协议(主要采用 SOAP 技术),提供一种软件接口来描述在互联网上其他计算机可执行的各种操作。
该接口通常由 WSDL(Web Service Description Language)语言来描述,并能够处理多种多样的系统运作。
按照 W3C 组织所提出的定义, Web 服务是一种软件系统,其主要目标在于支持跨网络环境下的机器间相互操作交互。
而 Web 服务通常被视为一组模块化的 API,它们可以通过网络进行调用,从而执行远程系统的请求服务。

WebService作为一种经典的SOA体系结构,在不依赖特定的编程语言或开发平台的前提下,能够直接基于HTTP协议实现网络应用间的高效数据交互。面向服务架构(SOA)采用组件化的架构设计模式,在功能模块分解的基础上构建独立的服务实体,并通过中立的方式对这些服务间的接口进行抽象定义。这种接口设计完全不受实现服务所使用的硬件环境、操作系统类型以及编程语言的限制。通过这种方式不仅能够使各个系统间的服务获得一致性的功能特性,并且实现了在不同系统间服务功能的一致性和互操作性。

在这里插入图片描述

WebService的主要作用是实现不同平台之间的集成与交互。如实例中所采用的语言类型包括Java、Go等多类型组合方式。通过SOAP协议(一种基于XML的标准)来描述系统接口。

从一个程序员的角度来看待网络服务。在传统的程序设计中,存在多种函数和方法用于实现功能,其中每个程序模块M都会包含定义有具体功能的方法A,当这些方法被激活时,会自动接收来自外部系统的请求信息,并传递给内部处理逻辑以便执行任务。通常情况下,在一个单一计算环境中使用同一编程语言开发的应用程序之间可以通过本地通信机制进行交互与协作,而当需要跨越不同计算环境并支持多种编程语言编写应用程序时,仅仅依赖于本地通信是无法满足需求的,这也是Web服务产生的背景与意义所在。

通常认为,在软件领域中存在一种通用模型来描述网络服务机制:Web Service = SOAP + HTTP + WSDL。其中Simple Object Access Protocol SOAP是一种核心协议体系;其通过HTTP或SMTP等应用层协议进行通信连接;并采用XML文件格式来规范业务功能、参数配置以及返回结果等内容;从而实现不同主机间异构系统间的计算服务处理需求。而这里的WSDL Web Services Description Language 作为一个基于XML的服务描述语言;则主要负责向公众发布有关特定Web服务的信息;包括其操作名称、参数配置以及返回值信息等关键要素

1. 构成技术

  • SOAP(Simple Object Access Protocol),该方案规定了通过互联网传输XML文档的标准包格式。
  • WSDL (WebServices Description Language),这是一种用于描述Web服务接口的基于XML的标准技术语言。

2. WebService原理

XML、SOAP和WSDL是构建Web Service平台的关键组件。Web Service主要通过HTTP协议实现客户端与服务端之间的数据传输过程。在数据封装方面,Web Service采用了XML这一技术,并凭借其突出优势实现了广泛的通用性。

WebService在采用HTTP协议进行通信时,通过XML格式对请求数据与响应数据进行封装,并附加了特定的HTTP消息头信息以说明HTTP消息的具体内容格式。

在Web服务器端的主要功能是通过一个WSDL文件来说明可供调用的服务及其详细信息。简单来说,WSDL就像是一个说明书,它详细描述了WebService的各种方法以及它们所需的参数和返回值等关键信息。这个文件会被保存在Web服务器上,可以通过指定的URL地址访问到它。在尝试调用WebService之前,客户端方必须知道该服务对应的WSDL文件的具体地址。而提供这些WebService服务的供应商则有两种暴露其服务的方法:第一种是注册到UDDI服务器中以便他人查找;第二种则是直接告知客户端方如何调用其服务

Web服务交互的过程是Web服务基于SOAP协议利用XML打包数据,进而采用Http协议来进行数据传输。

3. WebService规范

Java 中共有三种WebService 规范,分别是JAXM&SAAJ、JAX-WS(JAX-RPC)、JAX-RS。

本节介绍Java API For XML Web Service(简称 JAX WS),该技术由 Java 为 Web 服务开发提供了标准化接口。早期基于 SOAP 的 JAVA Web 服务规范 JAX RPC 已经被 JAX WS 规范取代其前身 J AX RPC 。 J AX RPC (java API For XML Remote Procedure Call)从 Java EE5 开始已经移除;如果你采用 javax.xml.rpc 包下的 API ,则可以在较早版本中找到这些接口;而 J AX WS (JSR 224)规范则位于 javax.xml.ws 包下,并且主要是注解驱动的方式实现对 Web 服务的操作(通常客户端会通过生成 SDK 来完成操作);其中大部分功能位于 javax.xml.ws 包中以注解形式实现;由于客户端可以通过 SDK 自动生成相关代码 ,因此这类接口较少被直接调用 。

(2)JAXM & SAAJ

作为配合Java框架开发的SOAP相关工具包( SOAP Attach API for Java),它是遵循JSR 67标准设计的。该工具包旨在生成和解析SOAP包以实现高效的数据交换,并特别适用于文件传输场景。值得注意的是SAAJ规范体系中核心API集合位于javax.xml.soap.*接口库中。

基于SOAP的Web服务体系中,JAXM&SAAj和JAX-WS并存。相较于而言,JAXM&SAAj暴露了SOAP体系中更为深层的技术细节,其编码实现相对繁琐,而相比而言,JAX-WS则更加注重抽象化设计,隐藏了许多技术细节,使得实现过程更为直观便捷。在使用过程中,默认情况下你无需深入处理SOAP相关技术细节,即可完成基本的服务调用需求。如果需要对SOAP消息进行更为细致的控制和定制化处理,那么选择具有更高层次抽象能力的JAXM&SAAj会是一个合适的选择。

(3) JAX-RS:基于JAVA语言遵循REST(Representation State Transfer)风格开发的一套Web服务规范。由于其最初发布于2009年,并未随JDK 1.6一同发行(该规范的官方标准定义为JSR-311,目前采用的是版本号为1.0的实现)。

二、SOAP简介

SOAP作为simple object access protocol(简单对象访问协议)的缩写出现于计算机通信领域。该协议采用HTTP POST请求进行通信,在HTTP头部字段中附加特定字段标识该请求为SOAP类型,并将XML格式的数据注入到HTTP体内容中以传输数据信息。 SOAP具有跨平台及跨防火墙通信的特点,并非专用于Web服务领域。

SOAP是一种以XML为基础的消息传递格式,在不同网络环境以及跨平台、多语言应用之间实现高效的通信机制。该协议具有高度定制化能力,并支持灵活扩展功能。一个典型的SOAP消息通常遵循以下结构:它由包元素(Envelope)标识一个标准的XML文档;头部元素(Header)包含有关请求或响应的信息;体元(Body)包含所有相关的操作请求和响应数据;错误元素(Fault)记录可能出现的问题或错误信息。

三、WSDL简介

SDL(Web Services Description Language),即WSDL(Web Service Definition Language),它是用于描述Web服务端点的文档说明工具。它详细阐述了Web服务器的接口定义、操作方法以及所需的参数配置和返回结果信息。当Web服务发布成功时会自动创建相应的WSDL文档,并且系统能够自动生成所需的服务描述文档以供开发人员直接引用。由于其自动化特性,在实际应用中使得开发者无需编写复杂的文档就可以完成对Web服务器的配置与管理。

WSDL文档可划分为两个主要组成部分。其中一部分则由高度 abstraction化的定义构成,
另一方则涉及具体的描述内容。
这些元素的设计与特定平台或编程语言无关,
因此被精心设计出来作为基础构建模块,
从而能够支持多样化的服务实现需求。
在上述文档架构中,
、均属于该层次的构建单元,
而、同属该层次的具体构建单元。
所有的这类元素都可以以单独文件的形式存在或者从主文件导入。

  • 服务:指定一组相关端口及其绑定的接口、操作和消息。
  • 约束:特定端口类型所遵循的具体协议和数据格式规范
  • portType: 服务端点是描述Web服务可执行的操作及其相关消息的对象;这些操作通过binding连接到指定的portType。
  • 数据项:用于定义Web服务中操作所需的数据参数结构
  • 类型:用于分类Web服务中使用的全部数据类型

1. 阅读方式

WSDL文档应该从下往上阅读。

首先查看服务标签,并关注其对应port的binding属性。通过分析binding标签可以获取具体的协议信息。利用binding的type属性查找相应的portType类型。接着,在该portType下定位operation标签,并提取message属性中的具体内容以便向上查找所需的message来获取数据参数信息。

四、WebService优缺点

1. 优点

  • 1)Webservice遵循HTTP协议,在无需自行实现数据收发方面具有显著优势。
    • 2)与传统的HTTP仅支持字符串类型的传输不同,Webservice能够处理更为复杂的对象类型.
    • 3)传统客户端与服务器之间的交互流程包括:发起请求→接收响应→解码数据→触发相应方法.而Webservice服务则类似于远程过程调用(RPC)服务,通过提供接口让用户直接访问服务功能而不必关心底层通信细节.
    • 4)Webservice采用了行业标准协议组合:XML、HTTP以及TCP/IP协议框架设计的.
    • 5)SOAP请求是一种专为HTTP POST设计的特殊请求类型.它遵循了一种特殊的XML消息格式,即Content-type属性设为text/xml.此外,所有数据都可以通过XML进行编码.

2. 缺点

  • 1)无法实现互相调用,在这种架构下只能让客户端单独调用服务端API,并且与单工通信机制相似。
  • 2)该机制实际上是基于HTTP协议结合XML方式进行数据解析的操作,并且相较于纯HTTP方式而言具有一定的延迟。
  • 3)采用WebService会导致整体系统性能下降,并且在同一个网络环境中运行的同构应用程序之间也不应该采用WebService来进行通信。

五、WebService注意事项

  • 1)服务接口的粒度必须得恰到好处
  • 2)接口返回的数据必须保持简洁明了
  • 3)确保Web服务API不会抛出错误,并且对所有异常事件进行适当处理。
  • 4)在设计分布式应用时,在性能和可扩展性之间找到平衡点至关重要。减少不必要的网络调用可以显著降低通信开销、减少网络流量并提升整体应用性能。

六、WebService应用场景

  • 跨防火墙的数据通信
  • 通过程序集成技术将各自语言开发的、在不同平台运行的各种程序整合在一起。
  • 充分利用软件重用技术。
  • 避免在内部接口中采用Webservice技术。

四、 JAXWS简介

JAX-WS规范是一套基于XML的Web服务Java接口,在该规范下允许开发者根据具体需求选择RPC或消息传递的方式进行Web服务开发。当使用JAX-WS时,在服务器端只需在Java语言环境中定义所需服务端口的标准接口(如Service Endpoint Interface, SEI),并实现相应的功能;而在客户端端,则可利用JAX-WS提供的API创建本地代理(如使用本地对象替代远程服务),从而方便地进行对远程服务器端的服务调用。

1. JavaSE6.0下的Web Service

自 Java SE 6.0 版本起,Java 引入了对 Web Service 的内置支持。我们可以通过注解标记即可将常规的方法转换为可发布的 Service。然而,并非所有 Java 类都能直接转换为可发布的 Service。如果一个 Java 类希望其成为实现 Web Service 功能的对象(Bean),它必须遵守以下基本准则:

该应用必须基于public类实现。
这些核心类不应为final或abstract类型。
该应用应具有一个公共默认构造函数。
该系统完全禁止包含finalize()方法。

1.1 注解 @WebService

@WebService(name="Example", targetNamespace="http://www.jsoso.com/wstest", serviceName="Example")
WebService标记用于将类暴露为WebService服务接口,并通过其参数设置相关属性值:

  • targetNamespace参数指定自己的命名空间,
  • 而serviceName参数负责指定自己的服务名称。
    在功能实现方面,
    使用WebService标记可以实现以下功能:
  1. 将类实例注册到特定的网络地址上,
  2. 管理与外部系统通信所需的接口信息,
  3. 定义与服务组件交互所需的基本配置参数。
1.2 注解 @SOAPBinding

该 soap 端点实现了与远程服务系统之间的 RPC 式通信绑定

1.3 注解 @WebMethod

@Webservice(methodName="toSayHello",methodName="sayHello",methodExclusion=false)
用于描述Web Service的操作方法及其相关参数设置。其中:

  • method name指定操作的具体名称;
  • 通过soap:method...</soap:method>元素配置具体实现;
  • method exclusion属性可选择性地隐藏继承的方法,默认值为false。
1.4 注解 @WebResult

@WebResult(name=“returnWord”)
@ WebResult定义方法返回值得名称,如

1.5 注解 @WebParam

该文档中使用@WebRequestParameter用于定义方法的参数名称,请注意以下几点:1)其中(partName="person")表示属性名;2)(mode)属性指定数据流向,默认值为IN;3)可接受的值包括IN、OUT和INOUT三种类型。

工具

1. wsgen

wsgen位于JDK bin文件夹中作为一个.exe文件(针对Windows系统)。该工具的主要功能是生成相应的JAX-WS服务端点。它能够读取Web Service相关的端点类文件,并生成发布所需的所有源代码文件以及经过编译后的二进制类文件。特别指出,在Web Service Bean中使用时通常会引用特定类型的异常处理机制。特别指出,在Web Service Bean中用到的异常类会另外生成一个描述Bean所属类型的信息。如果Web Service Bean中的方法声明抛出异常,则必须执行这一步骤以确保服务绑定正确无误。此外,wsgen还能够辅助生成对应的WSDL文档及其xsd类型说明。通过这种方式,wsgen不仅能够验证Web Service是否合法,还能完整地实现其发布过程。

2. wsimport

WS-Import同样位于JDK的bin目录中作为一个.exe文件(仅限Windows系统),其核心作用是基于服务端发布的.WSDL文件生成客户端签名和框架,并负责与Web Service服务器进行通信,在打包成实例后供客户端直接使用如同本地实例一般。对于Java开发者而言,WS-Import可作为调用Web Service所需开发人员所必需的客户机类文件(.java和.class)。特别说明的是,在非Java开发环境下也适用该工具包:例如当服务器端采用C#语言编写Web Service时,则可通过WS-Import自动生成相应的Java实现代码。

全部评论 (0)

还没有任何评论哟~