Веб-сервис с большим результатом - PullRequest
3 голосов
/ 05 июля 2011

Мы создаем веб-сервис и ожидаем, что могут быть возвращены существенные данные.

Как ASP.Net и IIS 6 справятся с этим? Что мы можем сделать, чтобы сделать этот ресурс менее ресурсоемким?

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

Как с этим справляются? Я предполагаю, что весь объект DataSet хранится в памяти, затем весь сериализуемый объект сохраняется в элементе, затем сериализуется, и весь xml находится в памяти и, наконец, передается вызывающей стороне.

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

1 Ответ

1 голос
/ 07 июля 2011

Я не уверен, что просто переключиться на использование WCF - это ответ, поскольку вопрос на самом деле касается нагрузки на запрос данных.

Есть несколько вещей, которые следует учитывать, прежде чем выбрать предпочтительный метод обслуживания:

Можете ли вы кешировать данные? Если возможно сохранить данные в памяти, это предотвратит отрисовку при каждом запросе данных. Однако, если размер данных чрезмерно велик, вы можете записать данные из БД в файл и отправить их оттуда.

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

Есть ли способ, чтобы вызов базы данных можно было разбить на несколько более эффективных вызовов?

Вы могли бы рассмотреть вызов данных асинхронно, если время, необходимое для выполнения вызова, является длительным.

Наконец, важно ли, чтобы данные служили веб-сервисом? Могут ли данные быть представлены в виде XML-документа?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...