码迷,mamicode.com
首页 > Web开发 > 详细

Web Service相关规范

时间:2015-08-04 19:25:14      阅读:135      评论:0      收藏:0      [点我收藏+]

标签: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>accountwcx@qq.com</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文件。

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

Web Service相关规范

标签:web service

原文地址:http://blog.csdn.net/accountwcx/article/details/47279691

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!