首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >netNamedPipeBinding的WCF性能不佳

netNamedPipeBinding的WCF性能不佳
EN

Stack Overflow用户
提问于 2012-01-26 04:07:44
回答 1查看 1.4K关注 0票数 4

我正在使用一个带有netNamedPipeBinding的WCF服务来传输大量数据(非常长的对象列表)到客户端(当然,它在同一台机器上)。问题是整个调用大约需要20秒来传输大约250MB的数据,大约是每秒10+MB。我预计在共享内存时,传输速度会快得多。有人知道如何提高我的性能和传输速率吗?这是我的app.config文件:

代码语言:javascript
复制
      <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>

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-17 16:41:00

就像评论说的那样,可能不是传输速率导致了问题,而是序列化。

有3件事需要考虑:

内存中对象的序列化和保留的CPU使用率

为了发送250MB,它将首先被序列化,然后被发送,然后被反序列化。这可能会在内存中产生3份数据副本,这可能会导致磁盘崩溃。

几年前我们也遇到过类似的问题,最终切换到直接调用dll,将内存引用传递给列表大约需要1毫秒。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9009520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档