网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

Web 服务互操作性和 SOAP(2)

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/02/27

【编者按】网学网ASP.net频道为大家收集整理了“Web 服务互操作性和 SOAP(2)“提供大家参考,希望对大家有所帮助!

tns:echoStringResponse>
<Return>string</Return>
</tns:echoStringResponse>
</soap:Body>
</soap:Envelope>

示例中的前三个字符是字节顺序标记的十六进制代码,用于指示编码形式为 UTF-8,不过,您可以看到,Content-Type 也
指出了这点。即使不需要,但是有些实现方案仍会为 UTF-8 发送 BOM。而其它实现方案有了 BOM 反而无法处理 XML。为
了解决这一问题,应避免在不需要的时候发送 BOM,并且应正确处理 BOM。由于在处理 UTF-16 消息时需要 BOM,所以在
这种情况下务必要正确处理 BOM。虽然没有任何单一的方法可以提早解决这些问题,不过当发现问题时,最好的方法就是
参考描述标准的具体规范(通常在 W3C 上可以找到),然后应用这些规范来评判遇到的问题。

SOAP 问题
现在,我们将讨论问题的核心:SOAP 问题本身。如上所述,SOAP 的互操作性首先要求解决传输(通常是 HTTP)和 XML
问题。解决这两个问题之后,再来解决 SOAP 问题。

SOAP 本身的问题相对简单。它要求将消息装入信封,并将消息的实际内容放在正文元素中。SOAP 使标头等元素成为可选
项,对正文元素中可包含的内容允许存在一定的灵活性。以下是一个简单的 SOAP 消息示例,大多数堆栈与它进行互操作
时不会存在问题:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body >
<foo />
</soap:Body>
</soap:Envelope>

虽然这个示例不是十分有趣,但是 SOAP 还提供一种对常见数据类型进行编码的方法(请参见 SOAP 规范的第 5 节),它
进一步说明了如何对 RPC 方法调用进行编码。您可能已注意到,在前面的示例中,方法名是正文的子标记,参数则是方法
名的子标记。

即使不用这么麻烦,您也可以找到许多有趣的互操作性问题。例如,SOAP 规范规定,如果您收到 mustUnderstand 属性设
置为“1”的 SOAP 标头,就必须理解它,否则将出错。但许多实现方案并没有做到这点。以下是 mustUnderstand 标头的
示例:

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

n++<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://soapinterop.org/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<Foo SOAP-ENV:mustUnderstand="1">
Hello!
</Foo>
</SOAP-ENV:Header>
<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<tns:echoStringResponse>
<Return>string</Return>
</tns:echoStringResponse>
</soap:Body>
</soap:Envelope>

这个示例是通过 SOAP 互操作性测试发现的众多问题之一。有关现已发现的互操作性问题的更多示例,请参见
http://groups.yahoo.com/group/soapbuilders(英文)中的档案。总之,为了确保 SOAP 在实现 RPC 形式通信时的互操
作性,全世界的 SOAP 构建者已经做了很多工作,并取得了丰硕的成果。从 5 月 8 日到 5 月 10 日,在拉斯维加斯将举
行 Networld+Interop 会议,到时,SOAP 团体的许多成员将在会上将充分展示这方面的成果。如果您在使用 SOAP 堆栈或
对其感兴趣,欢迎惠顾这次演示会。

另外,有关 XML Web 服务的许多讨论和测试已经在 http://groups.yahoo.com/group/soapbuilders(英文)、
http://www.mssoapinterop.org/(英文)和 http://www.xmethods.net/ilab/(英文)等站点上进行。这些站点包含到许
多互操作性测试端点的链接。构建 SOAP 堆栈的所有人员都应该阅读这些档案并参与互操作性测试。

后续话题
本文简要概括了在 XML Web 服务领域中发现的一些早期互操作性问题。不过,这方面的讨论并不会就此停止。除了通过
HTTP 进行 RPC 调用之外,SOAP 还有许多更为有趣的情况需要讨论。其中包括“document”形式的消息传递、基于 SMTP
和其它传输机制的 SOAP、WSDL 以及各种 SOAP 标头测试 - 所有这些都值得在今后的文章中进行讨论。
  • 上一篇资讯: Web 服务互操作性和 SOAP
  • 下一篇资讯: 调用webservice(vc5)
  • 网学推荐

    免费论文

    原创论文

    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号