從桌面富客戶端到瀏覽器瘦客戶端的轉型,核心驅動力是降低部署成本。但傳統 DCOM 在防火牆穿透、異構平台互通上極其痛苦。Web Service 應運而生,以 HTTP + XML 為基石,實現了真正跨語言、跨平台、跨防火牆的服務調用。
通俗定義: 暴露在 Web 上、可被程式化調用的 API。例如一個 weather.asp?zip=20171 返回 CSV 格式天氣數據,即是最簡單的 Web Service。
標準定義: 一套構建可互操作分布式應用的平台標準,包含三大支柱技術:
XML 解決了「數據長什麼樣」,XSD (XML Schema) 解決了「數據類型具體是什麼」(如 integer 是 32 位還是 64 位)。所有編程語言類型在進入 Web Service 時必須映射為 XSD 類型,確保雙端語義一致。
SOAP 定義了訊息結構:Envelope → Header (可選) → Body (承載業務數據) → Fault (錯誤信息)。它不綁定對象模型,純 C 函數也可用 SOAP 暴露。HTTP Binding 使其能穿透幾乎所有允許 Web 流量的防火牆。
WSDL 以 XML 形式描述:Types (XSD 類型)、Message (抽象數據)、PortType (抽象操作集)、Binding (具體協議/格式)、Service (端點地址集合)。現代 IDE (VS, Eclipse, IntelliJ) 可直接導入 WSDL 生成客戶端代碼 (Stubs/Proxies),實現「合約優先」開發。
| 維度 | DCOM / CORBA | Web Service |
|---|---|---|
| 傳輸協議 | 專有二進制 (ORPC/IIOP) | HTTP/HTTPS (文本/二進制可選) |
| 防火牆穿透 | 極難,需開放大範圍動態端口 | 天然支援,僅需 80/443 |
| 平台綁定 | 強綁定 (Windows/Java 專用) | 完全中立 (任何語言/OS) |
| 服務發現 | 註冊表 / Naming Service | WSDL + UDDI (或直接 URL) |
| 版本演進 | 介面變更極易破壞兼容 | 支援可選參數、擴展元素,向後兼容性強 |
Web Service (SOAP/WSDL) 稱為「大 Web Service」,適合企業級強契約、事務、安全 (WS-*) 場景。現代微服務架構更多採用 REST/JSON (輕量、語義化 HTTP) 或 gRPC/Protobuf (高性能、強契約、HTTP/2),但核心思想——跨邊界的服務契約——一脈相承。