分布式架構是互聯網企業架構師必考主題,核心在於「基於消息」的通信模型。本文在統一測試環境(客戶端 XP、服務端 Win2003 虛擬機、2M 頻寬)下,對五大主流 .NET 分布式通信方案進行相對性能測評與場景分析。
[Serializable] public class Message { public string Param1; public int Param2; public bool Param3; }
public interface IMaoyaTest { Message GetDto(string p1, int p2, bool p3); }
[ServiceContract] public interface IWcfMaoyaTest { [OperationContract] Message GetDto(string p1, int p2, bool p3); }
各方案實作相同介面,客戶端呼叫相同邏輯,確保對比公平性。

| 優點 | 缺點 | 適用場景 |
|---|---|---|
| TCP 效率高、IPC 極速、可自訂宿主 | 平台鎖定(純 .NET) | 內部模組高效協作、異步審核、報表生成、無需對外開放 |
統一編程模型,抽象了 WebService、Remoting、MSMQ 等底層實現,**Address/Binding/Contract** 三要素配置化切換協議。

| Binding | 傳輸 | 可靠性 | 備註 |
|---|---|---|---|
| NetNamedPipeBinding | Named Pipe | 固有可靠 | 同機最快 |
| WSDualHttpBinding | HTTP 雙通道 | 支援 | HTTP 回調場景 |
| NetMsmqBinding | MSMQ | 不支援 | 離線/斷點續傳 |
| WSFederationHttpBinding | HTTP | 支援 | 聯邦安全 |
| 優點 | 缺點 | 適用場景 |
|---|---|---|
| 兼容性極佳、配置靈活、易除錯部署 | TCP 效率不如 Remoting;HTTP 不如 ASMX 簡單 | SOA 服務總線、事件調度中心、異構系統整合 |
性能明顯落後於 Remoting/WCF,序列化開銷大。


| 場景 | 推薦方案 | 理由 |
|---|---|---|
| 內網 .NET 模組高效同步調用 | Remoting TCP / WCF NetTcpBinding | 極致效能、開發便利 |
| 同機進程間通信 | Remoting IPC / WCF NetNamedPipeBinding | 核心級傳遞速度 |
| 異構系統/對外開放 API | WCF BasicHttpBinding / WebService | 最大互通性 |
| 高可靠異步/離線傳遞 | MSMQ / WCF NetMsmqBinding | 持久化、事務、斷點續傳 |
| Java-.NET 輕量 RPC | Hessian | 二進制、跨語言 |
技術選型無銀彈,**業務屬性(同步/異步、可靠性、異構需求、部署拓撲)決定架構**。