Как использовать потоковую передачу со службами WCF, возвращающими большой набор данных?
Я довольно новичок в WCF и пытаюсь выяснить, как работает потоковая передача. У меня в основном есть веб-сервис, который должен возвращать некоторую информацию из базы данных. Возвращаемые данные потенциально очень велики. Укажите хороший пример того, как это делается. Если я правильно понимаю вещи, мой метод веб-службы должен возвращать объект потока. Но как я на самом деле передаю данные в поток? Это просто вопрос сериализации каждого объекта и записи его в поток? Если да, то как именно будет выполнена сериализация? Еще раз, простой пример был бы очень признателен.
2 ответа
Вам просто нужно установить в свойстве TransferMode привязки значение Streamed и работать со своими службами WCF, как вы это делаете. Инфраструктура WCF выполнит всю работу автоматически.
Вот еще одна полезная ссылка:
На самом деле, я бы пересмотрел архитектуру, поскольку возвращение больших наборов результатов из любого сервиса (WCF, ASMX и т. Д.) - это запах архитектуры.
Существует очень мало приемлемых причин для возврата больших наборов результатов из службы. Сочетание большего / лучшего фильтрования и реализации pagine - это решение. Если вы просто размещаете простую фанеру сервисов над своей базой данных, посмотрите на WCF Data Services, так как фильтрация и разбиение на страницы встроены прямо в платформу. В противном случае загляните в WCF Data Services, чтобы увидеть, что они делают и подражают вашему сервису.