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.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。
字节数 | 编码格式 |
---|---|
EF BB BF | UTF-8 |
FF FE | UTF-16,小尾数法 |
FE FF | UTF-16,大尾数法 |
00 00 FE FF | UTF-32,大尾数法 |
FF FE 00 | UTF-32,小尾数法 |
<?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> 声明是文本表示。
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 文档。