背景
傳統上 .NET 與 Java Web Service 互操作僅能靠 SOAP over HTTP。隨著 .NET 3.0 (WCF) 推出,BasicHttpBinding 成為唯一原生支援與 Java 互操作的繫結,選擇受限。
兩大新選擇
- WebSphere MQ (WMQ) 客製化通道
- ActiveMQ 傳輸通道
兩者皆可作為 WCF 的可靠傳遞層,擴展 .NET 訊息系統 (MSMQ) 的互操作能力。
WebSphere MQ 方案
架構基礎
- 基於 IBM AlphaWorks 發布的 WMQ for WCF 客製化通道
- 最新版 2008/03/14 釋出
- 透過 WCF 可擴充架構整合,運作方式與內建通道相同
互操作能力
- 訊息格式符合 WMQ v6.0 SOAP over JMS 實作
- 雙向通訊:WCF 服務 ↔ WMQ 服務
- 支援目標:WebSphere Application Server、CICS 等
現狀與限制
概念驗證階段,不建議生產環境使用。產品化計畫未定。
- 單一服務實例僅支援一個雙工通道客戶端
- 雙工通道為 SOAP/JMS 擴充,僅限 WCF 服務與其客戶端
- 僅支援核心訊息功能,不支援交易、安全等進階特性
- 現有 WMQ SOAP/JMS 服務僅支援單向操作
- CICS/WAS 環境下,單一合約不可混合單向與請求/回覆操作
技術實作
- 透過 WCF 可擴充架構建構客製化通道
- 服務透過設定檔啟用,客戶端用 Svcutil.exe 產生 Proxy 即可正常運作
- 中繼資料可透過 HTTP 端點發布或 WSDL 取得
ActiveMQ 方案
- 基於 Axis 提供的 JMS (Java) + 「外掛式協定」 特性 (.NET)
- 非標準 WCF 客製化通道 封裝,需更多客製化程式碼
- 架構上較 WMQ 方案不夠整合
比較總結
| 維度 | WebSphere MQ | ActiveMQ |
| 整合方式 | 標準 WCF 客製化通道 | 非標準,需客製程式碼 |
| 成熟度 | 概念驗證,IBM 官方釋出 | 概念驗證 |
| 進階特性 | 僅核心訊息 | 類似限制 |
| 部署複雜度 | 較低 (純設定) | 較高 (程式碼介入) |
結論
雖未完全產品化,但提供了絕佳實驗基礎,供團隊評估適合的 Web Service 互操作傳輸層。期待未來版本支援交易、安全等企業級特性。