В WCF, должно ли вы иметь большое значение MaxBufferPoolSize для больших сообщений?

Для этой службы WCF, которую я разработал, мне нужно установить MaxReceivedMessageSize в 5 МБ. Моя текущая проблема заключается в том, следует ли лучше иметь большее значение MaxBufferPoolSize, например 5 МБ, или сохранить исходное значение 512 КБ.

Кто-нибудь знает, какие рекомендуемые настройки для этого сценария? Короче говоря, следует ли установить MaxBufferPoolSize = 5242880 (5 МБ) или MaxBufferPoolSize = 524288 (512 КБ)?

ОБНОВЛЕНИЕ: Для пояснения, служба предназначена для вставки новой записи клиента вместе с некоторыми отсканированными документами. В результате размер сообщения может достигать 5 МБ.

Мы могли бы попробовать и отделить загрузку отсканированного документа с использованием альтернативных технологий, но требование было как для записи клиента, так и для отсканированных документов должно быть в одной транзакции, поэтому мы решили пойти с таким подходом, пока не выясним, как использовать возможности транзакции WCF.

4 ответа

Ознакомьтесь с этой статьей. http://kennyw.com/?p=51

Он предлагает установить MaxBufferPoolSize на ноль для больших сообщений, чтобы избежать буферизации.


Совершенно нормально передавать большие объемы данных в службу на основе WCF, но вы должны изучить привязку, которая поддерживает потоковое вещание вместо буферизованных передач (BasicHttpBinding или CustomBinding), поэтому каждый экземпляр службы не слишком сильно борется память.

- larsw


Если вы пытаетесь передать файлы и т.д., это похоже на ваш единственный вариант. В противном случае я бы рассмотрел, почему такие большие части данных отправляются по всему сервису в первую очередь. Если это файлы и т.д., Вам просто нужно жить с такими большими размерами и возможными последствиями. Вы также, если это файлы, которые вы перемещаете, могут попробовать попробовать FTP-компонент или что-то в этом роде.

Я мог бы предоставить дополнительную информацию с небольшой детализацией. Я вернусь позже, чтобы узнать, добавили ли вы что-нибудь к своему вопросу.


5 Мбайт похоже на большое количество данных для передачи через веб-службу. Первое, что вам нужно искать, это отправить меньше данных. Во-вторых, вам нужно установить размер в соответствии с вашими потребностями.

licensed under cc by-sa 3.0 with attribution.