Клиент сервиса создаётся через svcutil.
После ответа сообщение автоматически десериалзуется в объект. Если ответ большой, то это отъедает много оперативной памяти.
Каким образом можно отправить ответ в поток для сохранения на диск без десериализации?
Здравствуйте, binks, Вы писали:
B>Клиент сервиса создаётся через svcutil. B>После ответа сообщение автоматически десериалзуется в объект. Если ответ большой, то это отъедает много оперативной памяти. B>Каким образом можно отправить ответ в поток для сохранения на диск без десериализации?
Здравствуйте, binks, Вы писали:
B>Клиент сервиса создаётся через svcutil. B>После ответа сообщение автоматически десериалзуется в объект. Если ответ большой, то это отъедает много оперативной памяти. B>Каким образом можно отправить ответ в поток для сохранения на диск без десериализации?
не используй WCF просто, используй обычный HTTPClient
Здравствуйте, binks, Вы писали:
B>Клиент сервиса создаётся через svcutil. B>После ответа сообщение автоматически десериалзуется в объект. Если ответ большой, то это отъедает много оперативной памяти. B>Каким образом можно отправить ответ в поток для сохранения на диск без десериализации?
Я в одном проекте подобное вручную организовал через httpclient. Был объект запроса я его серелизовал в xml стандартный способом, ответ десерилзовал в другой объект. В принципе тут можно было ответ и в поток сохранить. Но это довольно трудоемкий способ, я использовал классы которые создает SvcUtil но в них пришлось внести много правок, что бы сервер принимал запрос. У меня в принципе выбора не было, были цифровые подписи, шифрование и плохая документация, для отладки требовалось что бы весь xml перед глазами был.
Ну раз такие проблемы проще посмотреть исходники и где можно вклиниться, где то через рефлексию, а где то подменить код.
А может проще и через HttpClient . Тебя же только один метод интересует.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Qulac, Вы писали:
Q>Я в одном проекте подобное вручную организовал через httpclient. Был объект запроса я его серелизовал в xml стандартный способом, ответ десерилзовал в другой объект. В принципе тут можно было ответ и в поток сохранить. Но это довольно трудоемкий способ, я использовал классы которые создает SvcUtil но в них пришлось внести много правок, что бы сервер принимал запрос. У меня в принципе выбора не было, были цифровые подписи, шифрование и плохая документация, для отладки требовалось что бы весь xml перед глазами был.
В итоге и сделал через HttpClient с асинхронщиной.
Я тоже использую классы, созданные через SvcUtil, как для формирования payload для SOAP, так и для десериализации. Но ответ я уже читаю с диска через XmlReader и десериализирую только нужное, что позволяет существенно экономить на памяти.
Но всё это выливается в правку того, что нагенерировал svcutil и потребует новых правок при корректировке xsd на стороне сервиса.
Здравствуйте, m2user, Вы писали:
M>Сервис чей-то сторонний, т.е. его не поправить? M>По-хорошему такая проблема должна решатся через постраничную передачу данных.
Таких сервисов несколько, кто-то поддерживает постраничную в передачу, кто-то не поддерживает. Вопрос по поводу реализации этой возможности я задал, но сомневаюсь, что это будет сделано.