WS-I 基本概要文件

Web Services-Interoperability (WS-I) Basic Profile 是一组促进互操作性的非专有 Web Service 规范。 WebSphere® Application Server 符合 WS-I Basic Profile V1.1 和 WS-I Basic Security Profile V1.0。

WS-I 基本概要文件由行业领先的公司 (包括 IBM®) 组成的联盟根据 WS-I 组织的指示进行管理。 该概要文件包含一组与实现 Web Service 技术的开放标准相关的原则。 鼓励所有有兴趣促进 Web Service 之间互操作性的组织成为 Web Service 互操作性组织的成员。

在 Web Service 的组合和实现中使用了多个技术组件,包括消息传递,描述,发现和安全性。 其中每个组件都受规范和标准支持,包括 SOAP 1.1 ,可扩展标记语言 (XML) 1.0 , HTTP 1.1 , Web Service 描述语言 (WSDL) 1.1 和通用描述,发现和集成 (UDDI)。 WS-I 基本概要文件指定如何将这些技术组件一起使用以实现互操作性,并在适当时要求具体使用每种技术。 您可以在 WS-I 组织 Web 站点上阅读有关 WS-I 基本概要文件的更多信息。

随着技术组件的更新,这些组件也用于 Web Service 的组合和实现。 一个示例是,现在同时支持 SOAP 1.1 和 SOAP 1.2。

基于对 WS-I Basic Profile V1.0 , WS-I Basic Profile V1.1, Attachment Profile V1.0, Basic Security Profile (BSP) V1.0和 WS-I Basic Security Profile V1.1的支持,您可以使用以下活动的 WS-I 概要文件来实现此产品的 Web Service:
  • WS-I Basic Profile V1.2 基于 WS-I Basic Profile V1.0 和 WS-I Basic Profile V1.1 构建,并添加对 WS-Addressing (WS-A) 和 SOAP 消息传输优化机制 (MTOM) 的支持。 WS-Addressing 规范启用异步消息交换模式,以便您可以将服务请求与服务响应分离。 发送方请求的 SOAP 头包含 wsa:ReplyTo 值,该值定义向其发送提供程序响应的端点引用。 将请求与响应分离可实现长时间运行的 Web Service 交互。 通过将 JAX-WS V2.1 中的异步编程模型支持与 WS-Addressing 结合使用,您现在可以利用创建 Web Service 调用的功能,客户机可以继续处理工作而无需等待响应返回。 这提供了一个更动态且更高效的模型来调用 Web Service。 通过使用 MTOM ,您可以在 SOAP 消息中以最佳方式发送和接收二进制数据。
  • WS-I Basic Profile V2.0 基于 Basic Profile V1.2 构建,并添加了对 SOAP 1.2 的支持。
  • WS-I Reliable Secure Profile 1.0 基于 WS-I Basic Profile V1.2, WS-I Basic Profile V2.0, WS-I Basic Security Profile V1.0和 WS-I Basic Security Profile V1.1 进行构建,并添加对 WS-Reliable Messaging 1.1 , WS-Make Connection 1.0 和 WS-Secure Conversation 1.3 的支持。 WS-Reliable Messaging 1.1 是基于会话的协议,为 Web Service 交互提供消息级别可靠性。 WS-Make Connection 1.0 是由 WS-Reliable Messaging 工作组开发的,用于解决 Web Service 端点位于防火墙后或者端点没有可视端点引用的场景。 如果 Web Service 端点在可靠会话期间失去连接,那么 WS-Make Connection 将提供高效方法来重新建立可靠会话。 此外, WS-Secure Conversation V1.3 是基于会话的安全协议,它使用高效的基于对称密钥的加密算法来实现消息级别安全性。 WS-I 可靠安全概要文件 V1.0 提供安全可靠的面向会话的 Web Service 交互。

每个技术组件都有要求,您可以在 WS-I 组织 Web 站点上更详细地了解这些要求。 例如, WS-I Basic Profile 需要对通用变换格式 (UTF) -16 编码的支持。 UTF-16 是一种 Unicode 编码方案,它使用 16 位值来存储通用字符集 (UCS) 字符。 UTF-8 是因特网上使用的最常见编码; UTF-16 编码通常用于 Java™ 和 Windows 产品应用程序; UTF-32 由各种 Linux® 和 UNIX 系统使用。 与 UTF-8不同, UTF-16 具有大尾数法和小尾数法问题,并且通常涉及字节顺序标记 (BOM) 以指示尾数法。 BOM 对于 UTF-16 编码是必需的,并且可以在 UTF-8中使用。

应用程序服务器仅支持 SOAP 消息的 UTF-8 和 UTF-16 编码。

请参阅有关更改 SOAP 消息编码以支持 WSI-Basic Profile 的信息,以了解如何将编码从 UTF-8 修改为 UTF-16。

表 1。 UTF 属性 指定 UTF 属性的相应字节和编码格式。
字节数 编码格式
EF BB BF UTF-8
FF FE UTF-16,小尾数法
FE FF UTF-16,大尾数法
00 00 FE FF UTF-32,大尾数法
FF FE 00 UTF-32,小尾数法
BOM 是在 XML 文本之前编写的,它向解析器指示 XML 的编码方式。 XML 声明包含编码,例如: <?xml version=xxx encoding="utf-xxx"?>。 BOM 与编码配合使用以确定如何解释 XML。 以下是 SOAP 消息的示例以及如何使用 BOM 和 UTF 编码:
POST http://www.whitemesa.net/soap12/add-test-rpc HTTP/1.1
Content-Type: application/soap+xml; charset=utf-16; action=""
SOAPAction:
Host: localhost: 8080
Content-Length: 562

OxFF0xFE<?xml version="1.0" encoding="utf-16"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2002/12/soap-envelope"
      xmlns:soapenc="http://www.w3.org/2002/12/soap-encoding
      xmlns:tns="http://whitemesa.net/wsdl/soap12-test"
      xmlns:types="http://whitemesa.net/wsdl/soap12-test/encodedTypes"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:Body>
    <q1:echoString xmlns:q1="http://soapinterop.org/">
      <inputString soap:encodingStyle="http://example.org/unknownEncoding" 
                        xsi:type="xsd:string">
        Hello SOAP 1.2
      </inputString>
    </q1:echoString>
  </soap:Body>
</soap:Envelope>

在示例代码中, 0xFF0xFE 表示字节代码,而 <?xml> 声明是文本表示。

在 SOAP 1.2 中不支持对 styleEncoding 的支持,因此此处是 SOAP 消息的相同示例,但没有编码信息:
OxFF0xFE<?xml version="1.0" encoding="utf-16"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2002/12/soap-envelope"
      xmlns:soapenc="http://www.w3.org/2002/12/soap-encoding
      xmlns:tns="http://whitemesa.net/wsdl/soap12-test"
      xmlns:types="http://whitemesa.net/wsdl/soap12-test/encodedTypes"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:Body>
    <q1:echoString xmlns:q1="http://soapinterop.org/">
      <inputString xsi:type="xsd:string">
        Hello SOAP 1.2
      </inputString>
    </q1:echoString>
  </soap:Body>
</soap:Envelope>

有关受支持的标准和规范的完整列表,请参阅 Web Service 规范和 API 文档。