Web Service相关规范

Web Service概述

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

在Web Service的体系架构中有三个角色:服务提供者(Service Provider),也叫服务生产者;服务请求者(Service Requester),也叫服务消费者;服务注册中心(Service Register),也叫服务代理,服务提供者在这里发布服务,服务请求者在这里查找服务,获取服务的绑定信息。三个角色之间的关系如图所示。

角色间主要有三个操作:

  • 发布(Publish),服务提供者把服务按照规范格式发布到服务注册中心;
  • 查找(Find),服务请求者根据服务注册中心提供的规范接口发出查找请求,获取绑定服务所需的相关信息。
  • 绑定(Bind),服务请求者根据服务绑定信息对自己的系统进行配置,从而可以调用服务提供者提供的服务。

Web Service规范了体系中的各种关键技术,包括服务描述、发布、发现以及消息传输等,参考模型如图所示。

规范

Web Service的规范包括基本规范(WSDL、SOAP、UDDI)以及扩展规范WS-*(WS-Security、WS-Policy、WS-Addressing、WS-Trust等)。

WSDL

WSDL(Web Service Description Language/Web服务描述语言)是用XML文档来描述Web服务的标准,通过WSDL可描述Web服务的三个基本属性:

  • 服务能做什么(服务所提供的操作/方法)
  • 如何访问服务(和服务交互的数据格式以及协议)
  • 服务位于何处(与协议相关的服务地址,如URL)

WSDL文档以端口集合的形式来描述Web服务,WSDL服务描述包含对一组操作和消息的一个抽象定义、绑定到这些操作和消息的一个具体协议、以及一个网络端点规范。WSDL文档被分为服务接口(Service Interface/抽象)定义和服务实现(Service Implementation/具体实现)定义,WSDL基本结构如图所示。

WSDL文档中主要元素:

  • 抽象定义

    • Types:定义Web服务使用的所有数据类型集合,可被元素的各消息部件所引用。
    • Messages:通信消息数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构,包括函数参数或文档描述。
    • PortTypes:引用消息部分中消息定义来描述函数签名(操作名、输入参数、输出参数)。
  • 具体定义
    • Operation:对服务中操作的抽象描述。一个Operation描述了一个访问入口的请求/响应消息对。
    • Bindings:portType部分的操作在此绑定实现,包含了如何将抽象接口的元素转变为具体表示的细节。
    • Port:定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点。
    • Services:确定每个绑定的端口地址。

portType、message和type描述了Web服务是什么,binding描述了如何使用Web服务,port和service描述了Web服务的位置。

SOAP

SOAP(Simple Object Access Protocol/简单文件传输协议)是一个轻量的、简单的、基于XML的协议。

SOAP包括四个部分:

  • SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架。
  • SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例。
  • SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定。
  • SOAP绑定(binding),使用底层协议交换信息。

SOAP的基本结构包含以下元素:

  • Envelope(必须)标识文档为SOAP消息,是SOAP的根元素。
  • Header(可选)包含头部信息,如果SOAP消息有Header,则Header必须是Envelope的第一个子元素。
  • Body(必须)包含所有的调用和响应信息。
  • Fault(可选)提供错误消息。

SOAP格式

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <auth xmlns="http://www.tmp.com/auth">
            <name>admin</name>
            <password>admin</password>
        </auth>
    </soap:Header>
    <soap:Body>
        <ns2:welcome xmlns:ns2="http://www.tmp.com/services/hello">
            <name>[email protected]</name>
        </ns2:welcome>
    </soap:Body>
</soap:Envelope>

UDDI

UDDI(Universal Description, Discovery and Integration/通用描述、发现和集成)主要提供基于Web服务的注册和发现机制,为Web服务提供三个重要的技术支持:

  • 标准、透明、专门描述Web服务的机制。
  • 调用Web服务的机制。
  • 可以访问的Web服务注册中心。

WS-Policy

WS-Policy(Web Services Policy Framework/Web服务策略框架)提供了一种灵活、可扩展的语法,用XML表示Web Services系统中实体的能力、要求和一般特性。WS-Policy将策略定义为一组策略替换选项,其中每个策略替换选项又是一组策略断言。WS-Policy将策略断言分为两类,一类指传统的要求和功能,这些要求和功能最终将出现在网络中(如身份验证方案、传输协议选择等)。另一类策略断言并不直接表现在网络中,但却对正确地选择和使用服务至关重要。

WS-Addressing

WS-Addressing(Web服务寻址)为Web Services提供一种与传输层无关的、传送寻址信息的机制。WS-Addressing主要由两部分组成:传送Web Services端点的引用数据结构,以及一套能够在特定的消息上关联寻址信息的消息寻址属性。

WS-ReliableMessaging

WS-ReliableMessaging定义了一种协议和一套机制,使Web Services开发人员能够确保在两个端点之间可靠的传递消息,该规范具有各种传递保证和健壮性特征。

WS-Security

WS-Security以现有的密码学以及XML加密和签名行业标准为基础,为Web Services应用程序提供了一组全面的安全特性,可以通过WS-Policy和WS-SecurityPolicy来指定特定应用程序可以使用哪些特性,从而允许服务客户机自行配置以访问服务。

WS-Security覆盖以下三方面内容:

  • 描述通过消息完整性、消息机密性和SOAP消息传递的增强质量。
  • 提供关联安全性令牌和消息的通用机制。
  • 描述如何对二进制安全性令牌编码。

WS-Security提供三种主要机制:

  • 安全性令牌传播
  • 消息完整性
  • 消息机密性

WS-SecurityPolicy

WS-SecurityPolicy以WS-Policy为基础,采用声明方式来定义可用于指定安全相关策略的XML元素,声明允许Web Services明确地指定其策略。

JAX-WS

JAX-WS(Java API for XML-Based Web Services)是一组XML Web Services的Java API,用于简化使用Java发布Web Services和生成Web Services客户端。JAX-WS提供了完整的Web Services堆栈,可减少开发和部署Web Services的工作量。JAX-WS允许开发者选择RPC-oriented或者message-oriented来实现自己的Web Services。JAX-WS支持WS-I Basic Profile 1.1,还包括Java Architecture for XML Binding(JAXB)和SOAP with Attachments API for Java(SAAJ)。

JAX-WS 2.0的主要特性:

  • 新的API和新的编程模型。新的API主要包含在javax.xml.ws包中,包括服务端和客户端的一些核心类。
  • 新的编程模型包括增强的Handler Framework、异步调用和Provider/Dispatch动态编程模型。
  • 使用注解来描述Web Services,不再依赖Web Services描述文件。
  • 通过JAXB 2.0完成XML数据和Java对象的绑定。
  • MTOM/XOP(SOAP Message Transmission Optimization Mechanism/XML Binary Optimzied)和swaRef(SOAP Attachment Refenreces)解决SOAP消息传输二进制附件的问题,同时优化消息传输。
  • 对SOAP 1.2提供支持。

JAX-WS开发Web Services有契约优先方法与代码优先方法,契约优先是指从WSDL生成Java类来实现Web服务。代码优先是指从Java类着手,使用注解来生成WSDL文件。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 02:35:56

Web Service相关规范的相关文章

java面试题全集(中)--Java Web和Web Service相关面试题

这部分主要是与Java Web和Web Service相关的面试题. 96.阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet. 补充:Sun Microsystems公司在1996年发布Servlet技术就是为了和CGI进行竞争,Servlet是一个特殊的Java程

Java RESTful Web Service相关概念

原文地址:http://1.liangtao.sinaapp.com/?p=647 接上一篇文章REST|RESTful初步认识:http://1.liangtao.sinaapp.com/?p=639之后,在接下来的了解中也遇到了一些问题,不太懂的Java WebService这一套体系结构,导致对一些技术术语是是而非,对于若干技术,若干规范没有一个整体上的认识.这篇文章即是对Java中RESTful WebService架构相关规范,技术的认识. Web Service 从表明上来看,Web

XForms设计器-----web service

GForms对web服务提供了支持,可以非常快捷的把一个web服务导入到GForms. 新建web服务 在"控件面板"的最下方找到"web服务",拖拽该图标到右边的设计器,将启动新建web服务向导过程: 第一步:指定web服务路径 支持使用本地wsdl文件或远处服务器的WSDL文件. 第二步:选择web服务服务.端口.操作 一次只能添加一个web服务操作到GForms,如果要添加多个操作需要执行多次新建web服务向导. 第三步:配置是否创建web service U

gsoap 实现 C/C++ 调用web service

gSOAP 是什么? gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多.绝大多数的C++web服务工具包提供一组API函数类库来处理特定的SOAP数据结构,这样就使得用户必须改变程序结构来适应相关的类库.与之相反,gSOAP利用编译器技术提供了一组透明化的SOAP API,并将与开发无关的SOAP实现细节相关的内容对用户隐藏起来. 简单来说,  gSOAP 功能之一就是可以帮助我们使用C/C++调用web

【转】基于CXF Java 搭建Web Service (Restful Web Service与基于SOAP的Web Service混合方案)

转载:http://www.cnblogs.com/windwithlife/archive/2013/03/03/2942157.html 一,选择一个合适的,Web开发环境: 我选择的是Eclipse for J2EE,当然大家可以选择MyEclipse我只是嫌最新版的MyEclipse Crack太烦,所以没用它.当年我也是最喜欢它的哟.如果你手头只有Eclipse for Java没关系,安装一个WTP就可以了. a.首先创建一个Dynamic Web Project : 在创建的第一页

web service概念、架构及相关知识

一.WebService的定义 WebService有好几种定义: W3C组织对其定义:WebService是一个软件系统,为了支持跨网络的机器间互操作交互而设计. WebService通常被定义为一组模块化的API,我们能够通过网络进行调用,来运行远程系统的请求服务. WebService就是暴露给外部使用的,可通过web调用的一组API. WebService是一种跨编程语言和跨操作系统平台的远程调用技术. Web Service = XML+XSD,SOAP和WSDL 事实上这多种定义仅仅

使用Spring创建满足RESTful规范的Web Service

原文:http://spring.io/guides/gs/rest-service/ 这个指南讨论如何使用Spring的RESTful web service来创建一个"hello world"程序. 示例功能简介 使用以下方式的HTTP GET请求来访问这个Service: http://localhost:8080/greeting 使用下面greeting的JSON描述来响应这个请求: {"id":1,"content":"He

Web Service和WCF的到底有什么区别

[1]Web Service:严格来说是行业标准,也就是Web Service 规范,也称作WS-*规范,既不是框架,也不是技术. 它有一套完成的规范体系标准,而且在持续不断的更新完善中. 它使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键).微软的Web服务实现称为ASP.NET Web Service.它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互.WSDL来实现服务接口相关的描述.此外Web services 可以注册到UDDI中心.供其客户查找使用.  

Web Service 和WCF

Web Service 的工作原理 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册.WebService可用基于XML的SOAP来表示数据和调用请求,并且通过HTTP协议来传输这些XML格式的数据. webservice最大优点就是实现异构平台间的互通,这也是使用WebS