【发布时间】:2012-01-25 20:07:43
【问题描述】:
我正在使用带有 netNamedPipeBinding 的 WCF 服务将大量数据(非常长的对象列表)传输到客户端(当然是在同一台机器上)。 问题是整个调用需要大约 20 秒来传输约 250MB 的数据,即每秒大约 10+MB。我预计共享内存时传输速率会快得多。有谁知道如何提高我的性能和传输率? 这是我的 app.config 文件:
<netNamedPipeBinding>
<binding name="NetNamedPipeBinding_IDataService" closeTimeout="00:10:00"
openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647"
maxBufferSize="2147483647" maxConnections="10" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="4096" maxNameTableCharCount="2147483647" />
<security mode="Transport">
<transport protectionLevel="None" />
</security>
</binding>
</netNamedPipeBinding>
非常感谢!
【问题讨论】:
-
共享内存非常快,但是命名管道不是共享内存。
-
好的。你是正确的,但不要介意绑定的后端实现。这些速率是我对基本 http 绑定而不是命名管道绑定的期望,后者应该更快。
-
您如何衡量吞吐量?您确定这真的是数据传输时间,而不是“非常长的对象列表”的序列化/反序列化吗?
标签: wcf performance netnamedpipebinding