`
ruilin215
  • 浏览: 1143426 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

初识SOAP

 
阅读更多
SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议。
它包括四个部分:
SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;
SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例;
SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;
SOAP绑定(binding),使用底层协议交换信息。

虽然这四个部分都作为SOAP的一部分,作为一个整体定义的,但他们在功能上是相交的、彼此独立的。特别的,信封和编码规则是被定义在不同的XML命名空间(namespace)中,这样使得定义更加简单。
SOAP的两个主要设计目标是简单性和可扩展性。这就意味着有一些传统消息系统或分布式对象系统中的某些性质将不是SOAP规范的一部分。比如:分布式垃圾收集 (Distributed garbage collection)、成批传送消息(Boxcarring or batching of messages)、对象引用 (Objects-by-reference(which requires distributed garbage collection))、对象激活 (Activation(which requires objects-by-reference))。

SOAP=RPC+HTTP+XML :

SOAP简单的理解,就是这样的一个开放协议SOAP=RPC+HTTP+XML:采用HTTP作为底层通讯协议;RPC作为一致性的调用途径,XML作为数据传送的格式,允许服务提供者和服务客户经过防火墙在INTERNET进行通讯交互。RPC的描叙可能不大准确,因为SOAP一开始构思就是要实现平台与环境的无关性和独立性,每一个通过网络的远程调用都可以通过SOAP封装起来,包括DCE(Distributed Computing Environment ) RPC CALLS,COM/DCOM CALLS, CORBA CALLS, JAVA CALLS,etc。

SOAP 使用 HTTP 传送 XML,尽管HTTP 不是有效率的通讯协议,而且 XML 还需要额外的文件解析(parse),两者使得交易的速度大大低于其它方案。但是XML 是一个开放、健全、有语义的讯息机制,而 HTTP 是一个广泛又能避免许多关于防火墙的问题,从而使SOAP得到了广泛的应用。但是如果效率对你来说很重要,那么你应该多考虑其它的方式,而不要用 SOAP。

为了更好的理解SOAP,HTTP,XML如何工作的,不妨先考虑一下COM/DCOM的运行机制,DCOM处理网络协议的低层次的细节问题,如PROXY/STUB间的通讯,生命周期的管理,对象的标识。在客户端与服务器端进行交互的时候,DCOM采用NDR(Network Data Representation)作为数据表示,它是低层次的与平台无关的数据表现形式。

DCOM是有效的,灵活的,但也是很复杂的。而SOAP的一个主要优点就在于它的简单性,SOAP使用HTTP作为网络通讯协议,接受和传送数据参数时采用XML作为数据格式,从而代替了DCOM中的NDR格式,SOAP和 DCOM执行过程是类似的,如下图,但是用XML取代 NDR作为编码表现形式,提供了更高层次上的抽象,与平台和环境无关。

客户端发送请求时,不管客户端是什么平台的,首先把请求转换成XML格式,SOAP网关可自动执行这个转换。为了保证传送时参数,方法名,返回值的唯一性,SOAP协议使用了一个私有标记表,从而服务端的SOAP网关可以正确的解析,这有点类似于COM/DCOM

中的桩(STUB)。转化成XML格式后,SOAP终端名(远程调用方法名)及其他的一些协议标识信息被封装成HTTP请求,然后发送给服务器。如果应用程序要求,服务器返回一个HTTP应答信息给客户端。与通常对HTML页面的HTTP GET请求不同的是,此请求设置了一些HTTP HEADER,标识着一个SOAP服务激发,和HTTP包一起传送。例如:对于一个询问股票价格的应用程序,服务器端具有组件提供某股票当前的价格,组件是COM或CORBA在服务器上建立的。客户端发送一个SOAP请求给服务器询问股票价格。服务器依赖于服务器上的SOAP网关,使用内嵌的HTML对象调用合适的方法, 然后把得到的价格通过SOAP应答传给客户端。


背景:

随着计算机技术的不断发展,现代企业面临的环境越来越复杂,其信息系统大多数为多平台、多系统的复杂系统。这就要求今天的企业解决方案具有广泛的兼容能力,可以支持不同的系统平台、数据格式和多种连接方式,要求在Internet 环境下,实现系统是松散耦合的、跨平台的,与语言无关的,与特定接口无关的,而且要提供对Web 应用程序的可靠访问。

随着异种计算环境的不断增加,各种系统间的互操作性就愈显得必要,要求系统能够无缝地进行通信和共享数据,从而在 Internet 环境下,消除巨大的信息孤岛,实现信息共享、进行数据交换,达到信息的一致性。Web services 希望实现不同的系统之间能够用"软件-软件对话"的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现"基于WEB无缝集成"的目标。

今年四月份的时候,W3C联盟召开了第一次 Web 服务专题研讨会,目的为探索 W3C 应向哪个方向发展才能实现新兴的 Web 服务架构的标准化,期间提出了一个"Web 服务堆栈"的构想,SOAP在WEB服务堆栈中作为用于 XML 消息传递的一种非常普遍的协议,发挥着十分重要的作用


前景:

SOAP的推出是令人兴奋的。可以相信,随着网络服务的的不断发展,它将极大的改变我们的思考模式和开发模式。现在,已有许多大公司着手支持SOAP的开发,去年 IBM公司 和 Microsoft公司 都发行了实现 SOAP 的第一批版本。 IBM 公司启动了Apache SOAP 项目计划,微软最近又推出了SOAPtoolkit2.0的正式版,主要包括如下的一些特征:SOAP的高层接口和低层接口,消息对象接口,完全支持WSDL 1.1标准,支持用户自定义类型映射,并且提供了丰富和完整的开发文档以及应用实例。而且,两家公司正在互操作性方面努力研究。可以乐观的估计,不用多久,SOAP 互操作性的时代就将来临。

分享到:
评论

相关推荐

    Python中SOAP项目的介绍及其在web开发中的应用

    对于初识SOAP在Python中应用的开发者来说,还需要了解一些基本操作和项目状态。文档提到了几个与SOAP相关的项目和参与者,包括4SuiteSOAP、SOAPy、SOAP.py、soaplib和Orchard。其中,4SuiteSOAP由Fourthought管理,...

    初识webservice

    【初识Web服务】 Web服务,简而言之,是一种基于互联网的、标准化的软件接口,允许不同的应用程序之间进行交互和数据共享。Web服务的核心技术包括XML(可扩展标记语言)、SOAP(简单对象访问协议)、WSDL(Web服务...

    XFire初识-使用Eclipse开发WebService

    **XFire初识:使用Eclipse开发WebService** 在IT行业中,WebService是一种允许应用程序之间进行交互的标准化技术。它通过XML(可扩展标记语言)来交换数据,使得不同平台上的应用能够无缝对接。XFire是Java平台上一...

    国人:JSON-RPC之初识

    - **错误处理**:尽管有`error`字段,但错误信息可能不如SOAP详细。 - **版本控制**:处理不同版本的JSON-RPC请求可能会复杂,尤其是在升级服务时。 - **安全性**:如果不进行适当的加密和身份验证,HTTP传输可能...

    webservice 第一个小项目

    【WebService详解:初识与实现】 在IT行业中,Web服务是一种允许不同系统之间进行通信和交换数据的标准方式。尤其在分布式应用系统中,WebService扮演着关键角色。本项目以"webservice 第一个小项目"为主题,将带你...

    jsp技术与j2ee技术

    9. **Web服务**:通过JAX-WS和JAX-RS,J2EE支持创建和消费SOAP和RESTful Web服务。 **学习路径** 对于想要深入理解JSP和J2EE的开发者,通常会从基础的HTML、CSS、JavaScript开始,然后学习Servlet和JSP,逐步掌握EL...

    onvif开发了解webservice与wsdl的关系入门.rar

    通过阅读压缩包中的"webservice-WSDL结构与各元素解析 - xiongqi215的专栏 - 博客频道 - CSDN.NET.htm"和"webservice初识 - xiongqi215的专栏 - 博客频道 - CSDN.NET.htm"这两篇文章,我们可以深入理解Web服务和WSDL...

    Beginning JavaEE 5 From Novice to Professional

    《初识JavaEE 5:从新手到专家》是一本专为Java EE 5初学者设计的优秀教程。这本书深入浅出地介绍了Java企业版5(Java EE 5)的各种核心技术,旨在帮助读者快速掌握这一强大的企业级开发平台。Java EE 5是Java应用...

    beginning xml with c# 2008 from novice to professional.rar

    在实际应用部分,书中可能涵盖了XML在Web服务、配置文件、数据序列化、SOAP(简单对象访问协议)和WSDL(Web服务描述语言)等方面的应用。这些内容将帮助你理解如何在实际项目中利用XML和C#实现数据交换和通信。 除...

    PHP从入门到精通.pdf-入门教程.CHM

    全书共分27章,包括初识.PHP、PHP环境搭建和开发工具、PHP语言基础、流程控制语句、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、PHP与JavaScript交互、日期和时间、Cookie与Session、图形图像处理技术、...

    Beginning_Java_EE_5_From_Novice_to_Professional-39_beginning jav

    8. **Web服务**:涵盖SOAP和RESTful Web服务的创建和消费,包括JAX-WS和JAX-RS。 9. **部署与测试**:介绍如何使用WAR和EAR文件进行部署,以及如何编写和执行单元测试和集成测试。 10. **最佳实践**:书中还会分享...

    PHP入门到精通

    1.初识PHP(教学录像:23分42秒) 1.1PHP概述 1.2扩展库 1.3前期准备工作 1.4网站建设的基本流程 1.5PHP的学习资源 1.6如何学好PHP 2.PHP环境搭建和开发工具(教学录像:36分3秒) 2.1PHP开发环境和准备工作 2.2...

    PHP入门到精通02

    1.初识PHP(教学录像:23分42秒) 1.1PHP概述 1.2扩展库 1.3前期准备工作 1.4网站建设的基本流程 1.5PHP的学习资源 1.6如何学好PHP 2.PHP环境搭建和开发工具(教学录像:36分3秒) 2.1PHP开发环境和准备工作 2.2...

    php开发手册

    此外,手册还会涉及一些进阶主题,如会话管理、Cookie的使用、数据库连接(MySQLi或PDO)以及PHP与Web服务的集成(如XML、JSON、SOAP)。对于Web开发,PHP的URL处理、表单验证和HTTP协议的理解也是必不可少的。 总...

    flex教程,flex基础教程,其中有些程序的编写

    Flex教程详解:初识Flex与基础应用 Flex是由Adobe公司开发的一种开源框架,主要用于构建富互联网应用程序(RIA,Rich Internet Applications)。它结合了MXML和ActionScript两种语言,为开发者提供了一个强大的工具...

    精通asp_net网络编程

    本篇文章将深入探讨ASP.NET网络编程的核心概念、关键技术和实际应用,帮助您实现从初识到精通的跨越。 1. ASP.NET概述: ASP.NET是.NET Framework的一部分,它允许开发人员使用多种编程语言(如C#、VB.NET)创建...

    Android典型技术模块开发详解

    第1章 Android初识 1.1 Android简介 1.1.1 认识Android 1.1.2 Android系统框架 1.1.3 应用程序框架 1.2 Eclipse开发环境 1.2.1 安装ADT插件 1.2.2 安装SDK 1.2.3 配置源代码 1.2.4 创建AVD 1.3 Android模拟器 1.3.1 ...

    Starup for Mule

    #### 核心知识点:Mule ESB的初识与环境搭建 **Mule**是一个高度灵活、基于Java的集成平台,旨在简化企业级应用程序之间的通信和数据传输。它支持多种消息传递模式,如点对点(P2P)、发布/订阅(Pub/Sub),并兼容各种...

    (源代码)Beginning_Java_trade_EE_6_Platform_with_GlassFish_trade_3_From_Novice_to_Professional

    《初识Java EE 6平台:使用GlassFish 3从新手到专业》是一本专为初学者准备的Java企业级应用开发指南。该书通过深入浅出的方式,引导读者掌握Java EE 6平台的核心概念和技术,同时利用GlassFish 3服务器进行实践。源...

    beginning c# pdg书籍2

    《初识C#》PDF书籍的第二部分涵盖了C#编程语言的基础到进阶知识,是为那些想要深入了解C#和.NET框架的开发者准备的宝贵资料。在这个部分中,你将学习到以下关键知识点: 1. **C#语法基础**: - 变量和数据类型:...

Global site tag (gtag.js) - Google Analytics