`
bugyun
  • 浏览: 551646 次
社区版块
存档分类
最新评论

Web服务实现方案二:SOAP简介

 
阅读更多

 

参考:https://zh.wikipedia.org/wiki/SOAP

 

SOAP(原为Simple Object Access Protocol首字母缩写,即简单对象访问协议)是交换数据的一种协议规范,使用在计算机网络Web服务(web service)中,交换带结构信息。SOAP为了简化网页服务器(Web Server)从XML数据库中提取数据时,节省去格式化页面时间,以及不同应用程序之间按照HTTP通信协议,遵从XML格式执行资料互换,使其抽象于语言实现、平台和硬件。此标准由IBMMicrosoftUserLandDevelopMentor在1998年共同提出,并得到IBM,莲花(Lotus),康柏(Compaq)等公司的支持,于2000年提交给万维网联盟World Wide Web Consortium;W3C),目前SOAP 1.1版是业界共同的标准,属于第二代的XML协定(第一代具主要代表性的技术为XML-RPC以及WDDX)。

用一个简单的例子来说明SOAP使用过程,一个SOAP消息可以发送到一个具有Web Service功能的Web站点,例如,一个含有房价信息的数据库,消息的参数中标明这是一个查询消息,此站点将返回一个XML格式的信息,其中包含了查询结果(价格,位置,特点,或者其他信息)。由于数据是用一种标准化的可分析的结构来传递的,所以可以直接被第三方站点所利用。

 

 

相关定义

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

把SOAP绑定到HTTP提供了同时利用SOAP的样式和分散的灵活性的特点以及HTTP的丰富的特征库的优点。在HTTP上传送SOAP并不是说SOAP会覆盖现有的HTTP语义,而是HTTP上的SOAP语义会自然的映射到HTTP语义。在使用HTTP作为协议绑定的场合中,RPC请求映射到HTTP请求上,而RPC应答映射到HTTP应答。然而,在RPC上使用SOAP并不仅限于HTTP协议绑定。

历史

SOAP.svg
 

SOAP曾经代表“Simple Object Access Protocol”,但是这种缩写已经在标准的1.2版后被废止了。1.2版在2003年6月24日成为W3C的推荐版本。这种缩写容易与SOA——Service-oriented architecture产生歧义,虽然它们之间存在非常大的差异。

SOAP由Dave Winer, Don Box,Bob Atkinson, Mohsen Al-Ghosein于1998年设计,当时只作为一种对象访问协议。现在,SOAP规范万维网联盟XML工作组维护。

传输方式

SOAP使用因特网应用层协议作为其传输协议。SMTP以及HTTP协议都可以用来传输SOAP消息,但是由于HTTP在如今的因特网结构中工作得很好,特别是在网络防火墙下仍然正常工作,所以被广泛采纳。SOAP亦可以在HTTPS上传输。

SOAP的消息格式采用XML

语法规则

  • SOAP消息必须用XML来编码
  • SOAP消息必须使用SOAP Envelope命名空间
  • SOAP消息必须使用SOAP Encoding命名空间
  • SOAP消息不能包含DTD引用
  • SOAP消息不能包含XML处理指令

SOAP消息实例

请求

<soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <req:echo xmlns:req="http://localhost:8080/wxyc/login.do">
      <req:category>classifieds</req:category>
    </req:echo>
  </soapenv:Body>
</soapenv:Envelope>

回应

<soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
  <soapenv:Header>
    <wsa:ReplyTo>
      <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
    </wsa:ReplyTo>
    <wsa:From>
      <wsa:Address>http://localhost:8080/axis2/services/MyService</wsa:Address>
    </wsa:From>
    <wsa:MessageID>ECE5B3F187F29D28BC11433905662036</wsa:MessageID>
  </soapenv:Header>
  <soapenv:Body>
    <req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/">
      <req:category>classifieds</req:category>
    </req:echo>
  </soapenv:Body>
</soapenv:Envelope>

 

分享到:
评论

相关推荐

    D6 SOAP_WEB SERVICE

    标题"D6 SOAP_WEB SERVICE"指的是使用Delphi编程语言开发基于SOAP(简单对象访问协议)的Web服务。在本文中,我们将深入探讨这个主题,了解如何使用Delphi构建Web服务以及SOAP在其中的作用。 首先,让我们了解一下...

    利用jdk web服务api实现,这里使用基于 SOAP message 的 Web 服务

    标题中的“利用jdk web服务api实现,这里使用基于 SOAP message 的 Web 服务”指的是使用Java开发Web服务,特别是基于SOAP(Simple Object Access Protocol)的消息传递协议。SOAP是一种用于交换结构化和类型化信息...

    programming web service with soap

    - 介绍了如何使用Perl的SOAP::Lite模块快速创建和部署Web服务。 - **4.3 使用Apache SOAP创建Java Web服务** - Apache SOAP是一个流行的Java工具包,用于创建和部署SOAP Web服务。 - **4.4 在.NET环境中创建Web...

    web服务如何实现传递文件 web服务如何实现传递文件

    ### Web服务如何实现传递文件 在探讨Web服务如何实现文件传递之前,我们首先需要了解Web服务的基本概念及其工作原理。Web服务是一种通过网络提供服务的方式,它可以被其他应用程序调用,通常使用HTTP协议进行通信。...

    J2EE Web Services: XML SOAP WSDL UDDI WS-I JAX-RPC JAXR SAAJ JAXP

    **J2EE Web服务:XML、SOAP、WSDL、UDDI、WS-I、JAX-RPC、JAXR、SAAJ、JAXP详解** 在IT领域,尤其是在Java企业级应用开发中,Web服务扮演着至关重要的角色。J2EE(Java 2 Platform, Enterprise Edition)提供了一...

    使用Java Web服务构建SOA

    Spring框架提供了一套完整的SOA解决方案,包括Spring-WS(用于创建契约优先的Web服务)和Spring-Integration(支持ESB(Enterprise Service Bus)功能)。Spring-WS基于XML Schema,允许开发者以类型安全的方式定义...

    微软SOAP相关组件安装包

    虽然SOAP30组件对于早期的Web服务开发非常有用,但随着技术的发展,微软后来推出了更现代的解决方案,如.NET Framework中的System.Web.Services命名空间,以及WCF(Windows Communication Foundation)等。...

    论文研究-基于Java的Web服务解决方案的研究.pdf

    在Java环境中实现Web服务的解决方案方面,首先需要了解的是Java对Web服务的支持组件,其中包括JAXP(Java API for XML Processing)、JAXM(Java API for XML Messaging)、JAXB(Java Architecture for XML Binding...

    SOAP技术及其安全研究

    二、SOAP与Web服务 1. WSDL(Web Services Description Language):用于定义Web服务接口,描述服务的位置、操作及输入/输出消息格式。 2. UDDI(Universal Description, Discovery, and Integration):提供服务...

    soap入门教程

    - **Web服务**:SOAP是实现Web服务的标准之一,特别是在企业级应用中。 - **跨平台通信**:SOAP可以作为不同平台间通信的桥梁,尤其适用于分布式系统。 - **远程过程调用**:尽管现代API趋势倾向于RESTful风格,但在...

    用Java构建web服务

    二、JAX-WS:面向SOAP的Web服务 JAX-WS是Java中的标准API,用于创建SOAP Web服务。它简化了服务端点接口(SEI)的创建,这是定义Web服务接口的地方。SEI使用Java注解来标注服务方法,然后JAX-WS会自动生成相应的WSDL...

    soap 教程

    ### SOAP介绍 SOAP,全称为Simple Object Access Protocol(简单对象访问协议),是一种基于XML的简单协议,用于在分布式环境中...随着Web服务的发展,SOAP将继续发挥其关键作用,为开发者提供灵活高效的解决方案。

    Web服务实现及安全性分析.doc

    Web 服务的实现是指通过技术手段来实现 Web 服务的功能,包括 XML、SOAP、WSDL、UDDI 等技术。这些技术都是 Web 服务实现的基础,了解这些技术是实现 Web 服务的前提。 XML(Extensible Markup Language)是一种...

    03-Web服务实用技术(SOAP).pptx

    综上所述,SOAP作为一种重要的Web服务实用技术,它利用XML的标准化特性,实现了跨平台、跨语言的通信能力,为分布式计算提供了轻量级、可扩展的解决方案。通过理解SOAP的基本概念和消息结构,开发者能够构建和实现...

    Spring集成Cxf暴露WebServices示例

    Cxf,另一方面,是一个开源的Web服务框架,它支持WS-*标准,可以创建和消费SOAP以及RESTful Web服务。 集成Spring和Cxf的步骤通常包括以下几个关键部分: 1. **配置Spring**:首先,我们需要创建一个Spring配置...

    REST与SOAP WEB SERVICE的区别1

    然而,REST的标准化程度不如SOAP,对于一些复杂的服务交互和安全需求,可能需要自定义解决方案。 **两者的区别**: 1. **复杂性与易用性**:SOAP具有严格的标准和规范,适合复杂的交互,但学习和实现成本较高。REST...

    soapsdk.rar

    "soapsdk.rar"中的"soapsdk.exe"是Microsoft SOAP Toolkit 3.0的核心,它为C++开发者提供了一种高效、简便的方式来调用和实现Web服务。虽然现在有更现代的解决方案,如.NET Framework的System.Web.Services和WCF,但...

    关于Soap,Web Servic和Xml的资料

    综上所述,SOAP、Web服务和XML是构建分布式系统和实现跨平台通信的关键技术。通过Java的JAX-WS等工具,开发者可以方便地创建和使用这些服务,实现系统的集成和扩展。了解和掌握这些技术,对于IT专业人士来说至关重要...

Global site tag (gtag.js) - Google Analytics