WS-I 基本設定檔

「Web 服務-交互作業能力 (WS-I) 基本設定檔」是一組促進交互作業能力的非專有 Web 服務規格。 WebSphere® Application Server 符合 WS-I 基本設定檔 1.1 版和 WS-I 基本安全設定檔 1.0 版。

WS-I 基本設定檔是由業界領先公司 (包括 IBM®) 在 WS-I 組織的指導下所控管。 此設定檔包含一組原則,這些原則與建立 Web 服務技術的開放式標準相關。 鼓勵所有有意促進 Web 服務之間交互作業能力的組織成為 Web 服務交互作業能力組織的成員。

Web 服務的組合及實作中使用了數個技術元件,包括傳訊、說明、探索及安全。 每一個元件都受規格和標準支援,包括 SOAP 1.1、可延伸標記語言 (XML) 1.0、HTTP 1.1、Web 服務說明語言 (WSDL) 1.1 及通用描述、探索與整合 (UDDI)。 WS-I 基本設定檔指定如何一起使用這些技術元件,以達到交互作業能力,並在適當時規定每一種技術的特定用途。 您可以在 WS-I 組織網站上進一步閱讀 WS-I 基本設定檔。

隨著技術元件的更新,這些元件也用於 Web 服務的組合和實作。 範例之一是現在同時支援 SOAP 1.1 和 SOAP 1.2。

以 WS-I 基本設定檔 1.0 版、WS-I 基本設定檔 V1.1、附件設定檔 V1.0、基本安全設定檔 (BSP) V1.0及 WS-I 基本安全設定檔 V1.1支援為基礎,您可以使用下列作用中的 WS-I 設定檔來實作此產品的 Web 服務:
  • WS-I 基本設定檔 V1.2 建置在 WS-I 基本設定檔 V1.0 和 WS-I 基本設定檔 V1.1 上,並新增 WS-Addressing (WS-A) 和 SOAP 訊息傳輸最佳化機制 (MTOM) 的支援。 WS-Addressing 規格會啟用非同步訊息交換型樣,讓您可以將服務要求與服務回應取消連結。 傳送端要求的 SOAP 標頭包含 wsa:ReplyTo 值,該值定義向其傳送提供者回應的端點參照。 取消要求與回應的連結會啟用長時間執行的 Web 服務互動。 利用 JAX-WS 2.1 版中的非同步程式設計模型支援與 WS-Addressing 組合,您現在可以利用建立 Web 服務呼叫的能力,讓用戶端可以繼續處理工作,而無需等待回應。 這提供更動態且更有效率的模型來呼叫 Web 服務。 使用 MTOM ,您可以在 SOAP 訊息內以最佳方式傳送及接收二進位資料。
  • WS-I 基本設定檔 V2.0 建置在基本設定檔 V1.2 上,此外還支援 SOAP 1.2。
  • WS-I 可靠安全設定檔 1.0 建置在 WS-I 基本設定檔 V1.2、WS-I 基本設定檔 V2.0、WS-I 基本安全設定檔 V1.0及 WS-I 基本安全設定檔 V1.1 上,並新增 WS-Reliable Messaging 1.1、WS-Make Connection 1.0 及 WS-Secure Conversation 1.3 的支援。 WS-Reliable Messaging 1.1 是階段作業型通訊協定,提供 Web 服務互動的訊息層次可靠性。 WS-Make Connection 1.0 是由 WS-Reliable Messaging 工作群組所開發,用來解決 Web 服務端點在防火牆後面或端點沒有可見端點參照的情況。 如果 Web 服務端點在可靠階段作業期間失去連線功能, WS-Make Connection 會提供有效方法來重新建立可靠階段作業。 此外, WS-Secure Conversation V1.3 是一種階段作業型安全通訊協定,使用有效的對稱金鑰型加密演算法來確保訊息層次安全。 WS-I Reliable Secure Profile V1.0 版提供安全可靠的階段作業導向 Web 服務互動。

每一個技術元件都有需求,您可以在 WS-I 組織網站上更詳細地閱讀。 例如, WS-I 基本設定檔需要支援「通用轉換格式 (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-基本設定檔」的相關資訊,以瞭解如何將編碼從 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 00 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 服務規格與 API 說明文件。