2013-10-18 27 views
1

考慮了WCF服務的以下基本單元測試代碼。netTcp比basicHttp執行慢,是正常?

for (int i = 0; i < 10000; i++) 
{     
    ServiceClient proxy = null; 
    try 
    { 
    proxy = new ServiceClient("basicHttpService"); // or netTcpService 
    Order[] orders = proxy.Find(Guid.Empty); 
    } 
    finally 
    { 
    if (proxy != null && proxy.State == CommunicationState.Opened) 
     proxy.Close(); 
    } 
} 

我很驚訝的是,netTcp端點需要2.5分鐘10K迭代和basicHttp一個需要23秒。在完整循環期間保持連接打開使得兩個端點的性能大致相同。 (〜20秒)

這是正常的相比basicHttp其開闢了netTcp連接是如此之重?

回答

2

很難給不知道傳送對象的性質,一個準確的答案,但我猜,在這個例子中傳遞的數據量左右小。當傳遞大量數據時,我已經看到從http轉移到tcp的性能顯着提升。

此外,不要忘記,tcp會話是reliable - 有一大堆涉及握手和安全的WCF「功夫」,以確保可靠的會話得以維持。你可以嘗試關閉綁定的安全性,看看是否有明顯的區別(不一定是推薦!)。

+0

是的多數民衆贊成它,在TNE禁用安全綁定作出netTcp快basicHttp – Laurijssen

相關問題