[英]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>
非常感謝!
就像評論所說,可能不是導致問題的傳輸速率,更多的是序列化。
有三件事需要考慮:
要通過它發送250 MB,首先將序列化,然后發送,然后反序列化。 這可能導致內存中的3個數據副本,這可能導致磁盤抖動。
幾年前我們遇到了類似的問題,並最終切換到直接調用dll,將內存引用傳遞給列表需要大約。 1毫秒。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.