。Net的精髓——XML和SOAP
- 格式:doc
- 大小:28.50 KB
- 文档页数:2
在 中,XML Web Service支持三种协议来与用户交流数据。
这三种协议分别是:1.SOAP:Simple Object Access Protocol2.HTTP-GET3.HTTP-POST1.首先我们先来理解一下这三者的大概定义。
在这三种协议中,SOAP是XML Web Service最常用到的连接协议。
与HTTP相比,SOAP显的更为复杂,但却拥有更强的接受能力。
SOAP是一种以XML为基础的协议,它提供一种将数据打包(Packaging)和编码(Encoding)的方法,以用于网络的数据传输。
任意一个用户都可以使用SOAP协议与任何一个XML Web Service进行通信,甚至于说这个XML Web Service不是建立在.NET 平台上的,比如说Java的,我们都可以利用SOAP来进行数据传输。
因此可见,SOAP也是Language Independent.(语言独立性)HTTP(Hypertext Transfer Protocol) 已经是众所周知的协议了,它是XML Web Service数据传输的标准,这包括了在使用SOAP传输数据的时候。
HTTP将SOAP 消息压缩,然后以它的形式进行网络传输。
然而当我们谈及在XML Web Service 下使用HTTP-GET和HTTP-POST的时候,我们实事上在谈有关单独使用HTTP调用XML Web Service中的方法的能力,这里我说的单独使用,指的是不使用SOAP。
在HTTP中,GET 和POST并不是一种协议,它们是可以用来与Web Service交互的几种方法中的其中二种。
然而,这二种方法的传送参数和数据的能力使它们变成了一种简单的,非常适合用来调用XML Web Service的工具。
2.HTTP-GET 和HTTP-POST 的比较这二者最大的区别在于数据是如何与要求的消息捆绑在一起的。
HTTP-GET的处理特征如下:。
soap格式使用指南SOAP是一种基于XML的协议,用于交换信息。
Soap格式包含以下几个部分:1. Envelope(信封):SOAP消息的根元素,它包含了Header和Body元素。
2. Header(头):可选的元素,其中包含有关SOAP消息的附加信息,如安全性、事务、消息的扩展内容等。
3. Body(主体):必需的元素,其中包含了实际的SOAP消息。
4. Fault(故障):可选的元素,提供有关发生故障情况的信息。
下面是一个简单的SOAP消息的示例:```。
<soap:Header>。
</soap:Header>。
<soap:Body>。
<m:StockName>IBM</m:StockName>。
</m:GetStockPrice>。
</soap:Body>。
</soap:Envelope>。
```。
此SOAP消息包含了一个GetStockPrice操作,该操作接受一个StockName参数,并返回IBM的股票价格。
具体解释如下:- Envelope(信封):指定了SOAP协议的命名空间。
- Header(头):指定了请求是向哪个地址发送的。
- Body(主体):指定了请求的操作和参数。
- Fault(故障):如果操作出现故障,则指定了详细的错误信息。
在使用SOAP格式时,需要注意以下几个问题:1.指定命名空间:必需指定SOAP协议的命名空间。
此外,每个操作都应该有自己的命名空间。
2. 指定操作和参数:在Body元素中指定请求的操作和相应的参数。
3.处理故障:如果操作发生故障,应该提供详细的错误信息。
总之,使用SOAP格式需要按照标准的结构指定请求操作和参数,并可以提供有关请求的附加信息和详细的错误处理。
中间件发展阶段:独立功能中间件:80年代中期。
RPC中间件、数据库中间件、交易中间件、消息中间件。
对象中间件:90年代中期。
CORBA COM/DCOM。
应用服务器:90年代末期。
J2EE 应用服务器.NET。
应用基础架构平台:21世纪初期。
XML Web Service EAI 门户应用服务器。
WEB服务:web服务的出现是为了消除网络孤岛,增强网站间的数据交换而出现的技术,它使用SOAP 协议进行传输,而SOAP是基于XML的,所以web服务能实现跨平台(操作系统全支持XML,XML是一种通用格式)WEB服务器:也称HTTP服务器,专门处理HTTP请求。
现在,XML Web Services已经使应用程序服务器和Web服务器的界线混淆了,Web服务器现在可以处理数据和响应(response)的能力与以前的应用程序服务器同样多了。
可以向Internet上的客户机提供WWW、Email和FTP等各种Internet服务。
Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。
例如,假设你要提供免费公司资讯,只要建立一张免费请求表单,它就会要求你的读者输入邮寄及公司信息;读者填完表后,点击提交按钮,该表单将送至服务器计算机上的某一程序,它负责处理该请求,并用E-mail给读者发一份免费资讯。
你还可以让该程序把客户提供的信息发给你,以便用于某数据库上。
用于执行这些功能的程序或脚本称为网关脚本/程序,或称为CGI(通用网关界面)脚本。
在Web上,你所见到的大多数表单和搜索引擎上都使用了该技术。
IIS:提供一个图形界面管理工具,称为Internet服务管理器,可用于监视配置和控制Internet服务。
是一组web服务组件,一组Internet服务器加上一些可以在NT操作系统下运行的服务组成。
包括web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面。
SOAP协议规范1. 简介SOAP以XML形式提供了一个简单、轻量的用于在分散或分布环境中交换结构化和类型信息的机制。
SOAP本身并没有定义任何应用程序语义 ,如编程模型或特定语义的实现;实际上它通过提供一个有标准组件的包模型和在模块中编码数据的机制 ,定义了一个简单的表示应用程序语义的机制。
这使 SOAP能够被用于从消息传递到RPC的各种系统。
SOAP包括三个部分∙SOAP封装(见第4节)结构定义了一个整体框架用来表示消息中包含什么内容 ,谁来处理这些内容以及这些内容是可选的或是必需的。
∙SOAP编码规则(见第5节)定义了用以交换应用程序定义的数据类型的实例的一系列机制。
∙SOAP RPC表示(见第7节)定义了一个用来表示远程过程调用和应答的协定。
虽然这三个部分都作为SOAP的一部分一起描述 ,但它们在功能上是相交的。
特别的 ,封装和编码规则是在不同的名域中定义的 ,这种模块性的定义方法增加了简单性在SOAP封装 ,SOAP编码规则和SOAPRPC协定之外 ,这个规范还定义了两个协议的绑定 ,描述了在有或没有HTTP扩展框架 [6]的情况下 ,SOAP消息如何包含在HTTP消息[5]中被传送。
1.1 设计目标SOAP的主要设计目标是简单性和可扩展性 ,这意味着传统的消息系统和分布对象系统的某些性质不是SOAP规范的一部分。
这些性质包括:∙分布式碎片收集∙成批传送消息∙对象引用(要求分布式碎片收集)∙激活机制(要求对象引用)1.2 符号约定这篇文章中的关键字 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT","SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 和"OPTIONAL"的解释在RFC-2119 [2]中。
java soap协议xml随着互联网技术的不断发展,Web服务作为一种分布式计算技术,已经成为了许多开发者首选的技术方案。
在Web服务中,SOAP(Simple Object Access Protocol)协议起着至关重要的作用。
本文将介绍SOAP协议的基本概念,以及如何使用JAVA实现SOAP客户端和服务器。
一、SOAP协议简介SOAP协议是一种基于XML(可扩展标记语言)的协议,它用于在分布式环境中交换信息。
SOAP定义了一种描述消息结构的方法,以及传输协议(如HTTP,SMTP等)。
其优点在于它具有较强的跨平台性和可扩展性,易于实现和理解。
二、JAVA与SOAP协议的结合JAVA作为一种广泛应用的编程语言,与SOAP协议有着天然的结合。
JAVA提供了丰富的API,可以帮助开发者轻松实现SOAP客户端和服务器。
1.创建SOAP消息要创建SOAP消息,可以使用JAX-RPC(Java API for XML Web Services)提供的SOAPFactory类。
以下是一个简单的示例:```javajavax.xml.soap.Message msg = soapFactory.createMessage();```2.发送SOAP请求创建SOAP请求后,需要将其发送到目标服务器。
这可以通过使用JAX-RPC提供的TransportFactory类来实现。
以下是一个发送SOAP请求的示例:```javajavax.xml.soap.Transport transport =transportFactory.createTransport("/service");transport.send(msg);```3.处理SOAP响应当服务器返回SOAP响应时,可以使用JAX-RPC提供的MessageFactory类来解析响应。
以下是一个处理SOAP响应的示例:```javajavax.xml.soap.Message responseMsg =msgFactory.createMessage();responseMsg = transport.receive(msg);```三、使用JAVA编写SOAP客户端和服务器下面将通过一个简单的案例演示如何使用JAVA编写SOAP客户端和服务器。
SOAP消息解析与处理技巧SOAP(Simple Object Access Protocol)是一种基于XML的通信协议,用于在分布式系统中交换结构化的信息。
在web开发中,对于SOAP消息的解析与处理技巧非常重要。
本文将就SOAP消息的解析与处理技巧进行探讨。
一、SOAP消息的结构SOAP消息由三部分组成:envelope、header和body。
其中,envelope是最外层的元素,包含了header和body。
header和body分别用于传递相关的头部信息和实际的消息体。
二、SOAP消息的解析解析SOAP消息可以使用各种编程语言提供的SOAP库或者自己编写解析代码。
下面以Java语言为例,介绍SOAP消息的解析过程。
1. 导入相关的类库:在Java中,可以通过引入相关的类库来处理SOAP消息。
比如,可以使用javax.xml.soap包中的类来解析SOAP消息。
2. 创建消息解析器:首先需要创建一个SOAP消息解析器对象,并将待解析的SOAP消息传递给它。
```SOAPMessage soapMessage =MessageFactory.newInstance().createMessage(null, new ByteArrayInputStream(soapContent.getBytes()));```3. 获取消息体:通过解析器对象,可以获取SOAP消息中的消息体。
```SOAPBody soapBody = soapMessage.getSOAPBody();```4. 解析消息体:对于消息体的解析,需要根据具体的业务需求来进行处理。
可以使用XPath表达式、DOM解析等方法来提取需要的信息。
```NodeList nodeList =soapBody.getElementsByTagName("elementName");for (int i = 0; i < nodeList.getLength(); i++) {Node node = nodeList.item(i);// 进行相应的处理逻辑}```三、SOAP消息的处理技巧处理SOAP消息时,需要注意以下几个方面的技巧。
.Net的精髓——XML和SOAP
Internet 的应用正在不断地扩大,但我们的 Internet 编程方式还处于石器时代。Internet 用户就像老式主机的分时终端上的用户一样,
他们从一个受保护的资源请求信息,然后等待回应。你从正在浏览的 Internet 站点上接收的信息由它希望提供给你的、基于 HTML 的信息组成
的。
但是,同远程 Web 站点进行交互式操作是不是更有趣?如果我们能用某种方法访问远程站点提供的计算能力并利用它的服务,而不仅仅是利
用它的发布能力,会不会更好?这就是 .NET 将要提供的精华。
.NET 将远程服务器所提供的计算能力和允许用户交互操作所必需的通讯结合在一起。明确地说,。NET 是为你-Internet 开发者-所设计的,
它帮助你创建可扩充的新能力。你的 Internet 站点不应该成为带宽海洋中的孤岛,相反,你能以这样的方式建立你的站点:通过合作和互操作
能力,使它融入 Internet 之中。
所有这些的关键,当然是合作的能力。要具有互操作性,要以高速数据传输率来共享数据。如何做到这些?为什么 .NET 发生在今天而不是五
年以前?
当然一部分答案就在我们今天身在其中的网络技术之中。从来没有现在那么多的人拥有高速带宽连接,并且在不久的将来还会有更多的人加入
进来。想像一下人人拥有 DSL、Cable Modem 或宽带无线连接的时代 …… 我们将很难回忆起 300 波特 Modem 的时代
在过去的几年里,两个最关键的进展就是引入了 XML 及其在 SOAP 中的应用。这些技术都是 .NET 的核心。要成为 .NET 开发世界中的
佼佼者,就必须理解 XML 和 SOAP.
.NET 技术
你可能已经阅读了一些关于 .NET 是什么和由什么东西组成的文章……NET 允许我们在服务的层次上而不是在发布的层次上来共享信息并
交互。Microsoft 的支持 .NET 的产品和许多来自第三方的组件、内容和功能拥有 .NET 的内部结构。但自然地会提出一个问题:“是什么使 .NET
能够工作?”
这些都从XML开始
用XML实现数据编码
要想理解 .NET ,就需要理解 XML .像我们在自己的交流中所说和写的语言一样, XML ,eXtensible Markup Language,可扩展标记
语言,是 .NET 的基础。也许我们有伟大的思想和信息可以分享,但如果我们不能以一种别人可以理解的方式来表述我们的思想和信息,我们的
艰苦工作和想法就只能躺在那里睡大觉。 XML 是 .NET 的灵魂,是所有 .NET 现在和将来的基础。 数据库 将通过 XML 中的纪录集来读写,
Web 浏览器将接受 XML 并将其和伴随它的样式表一起显示,Visual Studio 甚至会产生 XML 代码!不理解 XML 和与之相关的技术,你就不
能同支持 .NET 的资源交流,无论是站点还是人!
对于今天的 Web 服务器 而言, XML 差不多无所不在了。几乎所有的计算平台都能分析 XML ,因而也就能获得 XML 文档中的内容。
Windows 能, Linux 能,当然 MVS 和 VMS 也能。甚至蜂窝式移动电话也能!所以,如果我们能找到一种方式从远程系统获得 XML 文档,
问题就剩下如何理解文档中包含的数据了。这时,我们通过 SOAP 搭载 XML 文档。
用SOAP实现数据通讯
长期以来我们使用超文本传输协议 HTTP 来提供 Web 页面以及往来的内容。但当我们将 HTTP 或一些其它 Internet 传输协议 同 XML
结合起来,并指定 XML 文档自身的格式时,你得到了简单对象访问协议 SOAP.至少在开始构想它时,SOAP是被设计为从本地系统向远程系统
传递远端方法调用的。基于 SOAP 的结构与同时代的其它远程结构—DCOM、CORBA 和 RMI 等等—所不同的,SOAP 协议可以穿越任何团体
的 防火墙 ,并且 SOAP 数据包中包含着以 XML 编码的数据。而且,它们易于分析和使用。SOAP 还有很好的伸缩性,这使得我们能同时为非
常多的用户服务。
SOAP 模型最初的构想是使用请求-响应模型,同我们今天所用的 Internet 计算模型很相似。随后,SOAP 发展到包含了消息模型。两者的
不同之处是 SOAP 在对远端系统上的方法参数进行编码时,有获得结果的特殊目的。它并不请求 Web 站点提供一个感兴趣的数据表格,相反,
比如说,在同样的系统上我能调用一个假想称为 CalculatePayment() 的远程调用,并收到一个个人付款数值。是的,今天你能用一个表单做到
这些,但关键是在调用服务和提交表单之间存在着差别。服务调用是功能更强的概念。
.NET:数据共享平台
给我一种语言 XML 和一种通讯方式 SOAP,我就能建立允许我们交互和合作的系统。这就是 .NET.最初,Microsoft 将建立这种强大的共
享,然后他们需要一些时间将最初的版本放到公共领域。如果 .NET 像预期的那样工作,它将改变我们的计算习惯和业务实践,就像在过去的二
十年里 DOS 和 Windows 所做的那样。可以预见,鼓励用户进行交互并为 Web 消费者提供服务的站点将繁荣昌盛。这些站点不会遇到麻烦甚
至消亡,因为 Internet 消费者正在更多地意识到他们需要得到增强的服务。
胖客户机计算并没有消亡,但瘦客户机计算正在市场上变得更加流行。作为一个开发者或项目经理,应该有责任学习最新的概念和技术,并把
它们应用到业务实践之中。记住达尔文的圣言:进化在产生,但自然选择也在进行。