WCF, nettcpBinding - передача больших объемов данных
От: Аноним  
Дата: 19.09.12 01:50
Оценка:
дано: .NET 3.5, windows service — WCF, netTcpBinding
есть метод сервиса, который вызывается клиентом


bool ProcessData(DataSet ds, int method);



когда датасет небольшой — ~ 50kb все работает
когда датасет большой — ~ 5Mb — вызов не происходит — "... the maximum message quota ..."
пыталтись увеличивать "max*" поля — все равно не работает
(кстати, тоже самое работает если это WebService)

вопрос — что нужно сделать в случае с WCF, nettcpBinding, Windows Service чтобы можно было передавать большие объекты (Dataset в нашем случае)

Спасибо


<bindings>
  <netTcpBinding>
    <binding 
             closeTimeout="00:01:00"
             openTimeout="00:01:00" 
             receiveTimeout="00:10:00" 
             sendTimeout="00:01:00"
             transactionFlow="false" 
             transferMode="Buffered" 
             transactionProtocol="OleTransactions"
             hostNameComparisonMode="StrongWildcard" 
             listenBacklog="10"
             maxBufferPoolSize="524288" 
             maxBufferSize="65536" 
             maxConnections="10"
             maxReceivedMessageSize="65536">
      <readerQuotas maxDepth="32" 
                    maxStringContentLength="8192" 
                    maxArrayLength="16384"
                    maxBytesPerRead="4096" 
                    maxNameTableCharCount="16384" />
      <reliableSession ordered="true" 
                       inactivityTimeout="00:10:00"
                       enabled="false" />
      <security mode="Transport">
        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
      </security>
    </binding>
  </netTcpBinding>
</bindings>
Re: WCF, nettcpBinding - передача больших объемов данных
От: HowardLovekraft  
Дата: 19.09.12 05:44
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>вопрос — что нужно сделать в случае с WCF, nettcpBinding, Windows Service чтобы можно было передавать большие объекты (Dataset в нашем случае)

Использовать streaming, если влезаете в его ограничения.
Бесконечное увеличение буфера — порочный путь, т.к. рано или поздно кто-то передаст буфер еще большего размера, чем указано в конфиге.
Re[2]: WCF, nettcpBinding - передача больших объемов данных
От: Аноним  
Дата: 19.09.12 11:48
Оценка:
Здравствуйте, HowardLovekraft, Вы писали:

HL>Здравствуйте, Аноним, Вы писали:


А>>вопрос — что нужно сделать в случае с WCF, nettcpBinding, Windows Service чтобы можно было передавать большие объекты (Dataset в нашем случае)

HL>Использовать streaming, если влезаете в его ограничения.
HL>Бесконечное увеличение буфера — порочный путь, т.к. рано или поздно кто-то передаст буфер еще большего размера, чем указано в конфиге.

спасибо... но не работает — есть пример?
в том то и дело, что в конфиге можно указать огромное число. Я указывал MaxInt (maxBufferPoolSize, maxBufferSize, maxConnections, maxReceivedMessageSize) и все равно 6Mb не передавалось
Re[2]: WCF, nettcpBinding - передача больших объемов данных
От: Аноним  
Дата: 19.09.12 11:56
Оценка:
Здравствуйте, HowardLovekraft, Вы писали:

HL>Здравствуйте, Аноним, Вы писали:


А>>вопрос — что нужно сделать в случае с WCF, nettcpBinding, Windows Service чтобы можно было передавать большие объекты (Dataset в нашем случае)

HL>Использовать streaming, если влезаете в его ограничения.
HL>Бесконечное увеличение буфера — порочный путь, т.к. рано или поздно кто-то передаст буфер еще большего размера, чем указано в конфиге.

более того,

Operations that occur across a streamed transport can have a contract with at most one input or output parameter. That parameter corresponds to the entire body of the message and must be a Message, a derived type of Stream, or an IXmlSerializable implementation.


а мне надо несколько параметров


bool ProcessData(DataSet ds, int method);
Re[3]: WCF, nettcpBinding - передача больших объемов данных
От: Sharov Россия  
Дата: 19.09.12 13:10
Оценка:
Здравствуйте, Аноним, Вы писали:

Посмотрите на Message Contracts.
Кодом людям нужно помогать!
Re: WCF, nettcpBinding - передача больших объемов данных
От: Igorxz  
Дата: 20.09.12 20:04
Оценка:
client:
<behaviors>
    <endpointBehaviors>
        <behavior name="...">
            <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>
    </endpointBehaviors>
</behaviors>


server:
<serviceBehaviors>
    <behavior name="...">
        <dataContractSerializer maxItemsInObjectGraph="2147483647" />
    </behavior>
</serviceBehaviors>


оно?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.