簡體   English   中英

WCF與netNamedPipeBinding性能不佳

[英]WCF with netNamedPipeBinding bad performance

我正在使用帶有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>

非常感謝!

就像評論所說,可能不是導致問題的傳輸速率,更多的是序列化。

有三件事需要考慮:

  • 序列化和反序列化的CPU使用率
  • 將對象保存在內存中
  • 轉移率

要通過它發送250 MB,首先將序列化,然后發送,然后反序列化。 這可能導致內存中的3個數據副本,這可能導致磁盤抖動。

幾年前我們遇到了類似的問題,並最終切換到直接調用dll,將內存引用傳遞給列表需要大約。 1毫秒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM