2011-12-20 101 views
1

我有一個返回60,000個對象的功能。一個對象只包含幾個屬性。如果我在本地計算機的非wcf模式下執行此功能,則此功能可在幾秒鐘內運行。但在本地機器上以低於綁定的WCF模式執行需要30分鐘以上。WCF很慢

有沒有人有任何想法改善WCF模式下的性能?謝謝!

<binding name="ReliableBindingConfig" closeTimeout="00:20:00" receiveTimeout="00:40:00" openTimeout="00:20:00" sendTimeout="00:40:00"> 
     <transactionFlow /> 
     <reliableSession maxRetryCount="12" ordered="true" inactivityTimeout="00:40:00" /> 
     <mtomMessageEncoding maxBufferSize="2147483647" maxReadPoolSize="2147483647" maxWritePoolSize="2147483647"> 
     <readerQuotas maxDepth="32" maxBytesPerRead="4096" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxNameTableCharCount="16384" /> 
     </mtomMessageEncoding> 
     <httpTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" /> 
    </binding> 
+0

你是如何取物的?一次一個,分頁或全部序列化在列表中? – jgauffin 2011-12-20 08:32:21

回答

1

調整您的maxBufferSize和maxBufferPoolSize以優化緩衝區大小。

太大,你的服務將太忙將所有對象加載到內存中。太小,會有太多的網絡流量,並會減慢速度。

您可以編寫一個簡單的測試工具來記錄查找最佳緩衝區大小所用的時間。