Сохранять переданный объект WCF дефлированным / сериализованным
Возможный дубликат:
Получить только тело сообщения WCf
Доброе утро,
У меня есть служба WCF, которая создает сложный объект, а затем отправляет его клиенту-потребителю. В настоящее время сервис работает отлично, но xml перезаписан / десериализован на клиенте, и я не хочу этого, так как клиент хочет работать с XML.
Итак, есть ли способ получить "XML-документ", который передается как часть ответа службы WCF. Конечно, я мог бы просто сериализовать это снова на клиенте, но на самом деле зачем делать дополнительные шаги, если их можно избежать.
TIA JB
1 ответ
Хотя есть возможность подключиться к нескольким шагам получения / отправки WCF как на стороне сервера, так и на стороне клиента, где вы можете повлиять на то, как выполняется сериализация (не выполняется в вашем случае), я считаю, что это будет слишком много для вашего сценарий.
Вам будет проще упростить рабочий процесс и придерживаться готовых функциональных возможностей.
Я думаю, что самым простым подходом было бы вручную сериализовать ваши объекты только на стороне сервера и просто отправить результат в виде строки обратно клиенту.
Чтобы сохранить гибкость (позже вам может понадобиться добавить больше данных, сопровождающих сериализованные данные), поместите этот сериализованный XML в свойство выделенного объекта передачи данных (DTO).
Затем этот DTO отправляется клиенту, который просто читает XML из этого свойства.
Под капотом, конечно, все еще идет некоторая сериализация. Но это было бы встроенной функциональностью, которая полностью прозрачно выполняется службой WCF / клиентом. Если у вас нет серьезных причин влиять на него вручную, оставьте все как есть. Если вы не знаете, что делаете, вместо этого вы можете открыть ящик Пандоры...
Отправка простого объекта, такого как описанный выше DTO, не должна быть большой проблемой. Я имею в виду, что этот сценарий будет в основном посылать кучу строк по проводу, что не должно вызывать каких-либо проблем и очень мало накладных расходов.