本文詳細對比 WCF 與 ASMX、Remoting、Enterprise Services、WSE、MSMQ 五大傳統技術,闡述 WCF 在整合性、互操作性、安全可靠性、相容性四大核心優勢,並實測安全性訊息差異與效能基準測試。適合有分散式開發經驗的架構師與資深工程師。
| 特性 | ASMX | Remoting | Enterprise Services | WSE | MSMQ | WCF |
|---|---|---|---|---|---|---|
| 跨平台 | ✓ | ✗ | ✗ | ✗ | ✗ | ✓ |
| .NET 內部通訊 | ✗ | ✓ | ✓ | ✗ | ✗ | ✓ |
| 分散式事務 | ✗ | ✗ | ✓ | ✗ | ✗ | ✓ |
| 安全可靠性 | ✗ | ✗ | ✗ | ✓ | ✗ | ✓ |
| 訊息佇列 | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
參考來源:Bruchzhang 對比圖
結論:WCF 不僅是功能疊加,更在架構層面實現統一程式模型、配置模型、宿主模型。
| 原則 | 英文 | WCF 實現機制 | 防禦威脅 |
|---|---|---|---|
| 機密性 | Confidentiality | 訊息/傳輸層加密 (AES, RSA 等) | 竊聽 |
| 完整性 | Integrity | 數位簽名 (SHA256 等) | 竄改、注入 |
| 可驗證性 | Authentication | Windows、UserName、Certificate、CardSpace、Custom | 偽造身分 |
這三者合稱 CIA,WCF 預設啟用,無需額外程式碼。
專案結構:
| 專案 | 說明 |
|---|---|
| Wcf | WCF 服務端 (預設配置) |
| WcfClient | WCF 客戶端 |
| WebService | ASMX 服務端 (功能相同) |
| WsClient | ASMX 客戶端 |
追蹤工具:
結果對比:
詳細追蹤日誌見配套源碼 ws.txt (ASMX) 與 wcf.txt (WCF)。
測試環境:Windows XP SP2 + VS 2008 RTM,單機迴圈 1000 次同步呼叫。
| 輪次 | WCF (ms) | ASMX (ms) | 差異 |
|---|---|---|---|
| 1 | 9523 | 7561 | +26% |
| 2 | 9480 | 7465 | +27% |
| 3 | 9508 | 7708 | +23% |
| 4 | 9487 | 7900 | +20% |
結論:WCF 因預設安全性、豐富管線、複雜架構,效能約比 ASMX 低 20-27%,但同數量級,且隨 .NET 版本迭代 (4.0/4.5/4.6/.NET Core) 已大幅優化。
效能測試方案:Perfermence_Compare (見配套源碼)。
[ServiceContract], [OperationBehavior]Security_ComparetcpTracePerfermence_CompareWCF 是分散式技術的集大成者:
選擇 WCF,即選擇了微軟平台未來 10+ 年的分散式基礎設施標準。