При разработке службы WCF я столкнулся с проблемой передачи больших данных в виде параметров метода (> 4 МБ необработанного размера, без учета издержек при передаче / сообщении).
Решением этой проблемы является использование разбиения на фрагментыили потоковые, но все примеры, которые я видел, предполагают, что клиент знает об используемом методе и использует доступный размер блока для отправки / получения частей данных, и проблема (для меня) в том, что невозможно вызвать только один метод, например
SaveData(DataInformation info)
но написать метод-обертку, который вместо этого будет повторять что-то вроде
SaveDataChunk(byte[] buffer)
Может ли это быть как-то сделано прозрачным для клиента, просто вызывая 'SaveData'?
EDIT: Небольшой дополнительный вопрос, хотя он мог бы перейти к отдельному вопросу. Если мы используем потоковую передачу wcf, тогда все ServiceOperations в ServiceContract ДОЛЖНЫ выполнять дополнительные ограничения, такие как «Операции, которые происходят в поточном транспорте, могут иметь контракт максимум с одним входным или выходным параметром»?
Если служба нуждается в потоковой передаче только для частиметоды, вам нужно переместить его в другой договор на обслуживание?Есть ли другой способ справиться с этим?
Спасибо