В настоящее время наши службы WCF обрабатывают некоторый тип поискового вызова, когда операция возвращает коллекцию объектов. Однако мы обнаружили, что некоторые операции могут в некоторых сценариях возвращать коллекцию не столь тривиальных объектов, которые в конечном итоге производят ответы, превосходящие порог 64 КБ, что вся документация по лучшим методикам побуждает нас пытаться поддерживать оптимизацию основного канала tcp, на котором все работает ,WCF для поисковых запросов большой полезной нагрузки
Например, наш сервис может возвращать список фильмов, отображаемых в театре, и клиент может задавать ежедневные цены, времяпрепровождения и доступность для каждого фильма в течение определенного периода времени; то есть «дайте мне список показываемых фильмов и ежедневную информацию в течение следующих 30 дней». Проблема заключается в том, что мы не можем просто ограничить количество дней, в течение которых клиент может запросить .. так что даже если мы ограничим количество фильмов, возвращенных в один звонок, клиент, запрашивающий информацию за 30 дней, произведет большой ответ чтобы мы избегали как можно большего.
Потоковое связывание невозможно, так как все наши сервисы являются 1 способом с некоторым типом очереди в качестве канала. . Какую конструкцию контракта мы можем изучить для управления размером этих результатов? Конечно, мы также хотим избежать сложных контрактов, которые имеют возможность составлять страницы каждого аспекта ответа, поскольку это никому не приносит пользу.
Интересно, есть ли у вас проблема с дизайном. Зачем возвращать ежедневную информацию в течение следующих 30 дней для фильмов по одному и тому же запросу? Не было бы лучше получить список фильмов, а затем только тогда, когда пользователь что-то выберет, вы получите ежедневную информацию. Таким образом, вы не получаете данные, которые не могут использоваться пользователем – MickyD
@ User52784246, клиент имеет возможность включать или исключать ежедневную информацию из ответа, но некоторые из наших приложений должны включать его для уменьшения количества поездок в сервер в одном действии пользовательского интерфейса. Для этих приложений это техническая необходимость. –
Сокращение «количества поездок» - хорошая стратегия для ** небольших ** объемов данных, но для больших ответов данных, например, в вашем случае _overhead из нескольких trip_ vs _time_, чтобы получить один большой ответ, первый быть довольно незначительным – MickyD