Я хочу знать, почему WCF в потоковом режиме действительно медленный по сравнению с буферным режимом.
По сути, я читаю много данных с сервера (доступ к базе данных), а затем передаю эти огромные данные через WCF другим клиентам.
Я проводил некоторые тесты и тесты, сравнивая 2 разных режима передачи.
Я создал 2 конечных точки. Первый использует transferMode="Buffered"
, а другой использует transferMode="StreamedResponse"
.
Загружая те же миллионы строк с сервера SQL (фиктивная таблица), мы получаем следующие результаты:
- Буферизовано: 20447 миллисекунд.
- Потоковая передача: 109417 миллисекунды.
Потоковая передача выполняется так же, как в этом Q / A . В основном, данные хранятся в IEnumerable<T>
и затем передаются клиенту, который их использует.
При необходимости я могу предоставить файлы WCF app.config
.
Кстати, я уже посмотрел другие подобные вопросы:
Буферизация WCT NetTcpBinding против потоковых проблем производительности
Но на самом деле они не дают соответствующего ответа.