在CodePlex有個很不錯的關於WCF的效能測試,WCF Latency Test Harness, 針對不同的請求地區(直接存取、同一應用程式定義域、同一程式、同一主機(跨進程)、不同主機),不同的binding(netNamedPipe,netTcp,netMsmq,basicHttp,wsHttp,Remoting) ,不同的序列化方式,不同的請求資料量、不同請求方式的測試,測試的內容可以通過設定檔設定。
測試的指標是latency,在MSDN有關於輸送量(throughput)的測試:A Performance Comparison of Windows Communication Foundation (WCF) with Existing Distributed Communication Technologies。
同一應用程式定義域,請求執行個體為單例模式,雙向傳輸,預設的序列化方式(DataContractSerializer),使用nullTransport(自訂方式)、具名管道、NetTcpBinding、BasicHttpBinding:
同一應用程式定義域,請求執行個體為單例模式,單向傳輸,預設的序列化方式(DataContractSerializer),使用nullTransport(自訂方式)、具名管道、NetTcpBinding、BasicHttpBinding:
同一應用程式定義域,請求執行個體為單例模式,單向傳輸,序列化方式為NetDataContractSerializer,使用nullTransport(自訂方式)、具名管道、NetTcpBinding、BasicHttpBinding:
同一應用程式定義域,請求執行個體為單例模式,單向傳輸,序列化方式為PreserveObjectReferencesDataContractSerializer,使用nullTransport(自訂方式)、具名管道、NetTcpBinding、BasicHttpBinding:
同一應用程式定義域,請求執行個體為單例模式,單向傳輸,序列化方式為XmlSerializer,使用nullTransport(自訂方式)、具名管道、NetTcpBinding、BasicHttpBinding:
BasicHttpBinding和WSHttpBinding的效能相當;在大資料量的情況下,nullTransport,netNamedPipe和netMsmq的效能相當。
不同傳輸方式和編碼方式:
netTcpBinding的CPU的使用方式:
basicHttpBinding的CPU使用方式:
詳細內容請看:WCF Latency Test Harness and WCF Performance