Время отклика веб-служб ASP.Net - PullRequest
2 голосов
/ 01 декабря 2010

Мы используем веб-сервисы ASP.Net.

Архитектура - настольное приложение, разработанное в .Net 3.5 - клиентское приложение (клиентский компьютер) Веб-служба на основе ASP.Net в .Net 3.5 - уровень бизнес-логики (IIS на сервере) База данных SQL 2005 - уровень базы данных (Тот же или другой сервер, что и IIS)

Приложение почти разработано и готовится к первой реализации.В первый день мы столкнулись с проблемой остановки шоу.Мы загрузили базу данных пациентов с 30000 записями, и время отклика экрана поиска пациента составляет более 20 секунд.Мы проиндексировали базу данных и удалили все ненужные вызовы a.от клиента к веб-сервису б.из веб-сервиса в базу данных.Тем не менее, время отклика составляет 7 секунд, что недопустимо, оно должно быть меньше 3 секунд.Основная проблема, которую мы видим, состоит в том, что 4 секунды используются как часть, в которой веб-сервис возвращает данные такого размера по сети клиенту.

Какое решение для этого?

Ответы [ 4 ]

2 голосов
/ 01 декабря 2010

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

Представляется маловероятным, что пользователь будет рассматривать 250 (или произвольное число> 10) пациентов за один раз. Таким образом, вместо метода, который возвращает все 250, вы можете вернуть их в наборах по 10. Однако вам придется немного изменить сигнатуру ваших веб-методов.

Это уменьшит нагрузку на сеть.

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

Это может быть частью решения, но, вероятно, будет много других вариантов!

Удачи!

1 голос
/ 01 декабря 2010

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

Вы можете настроить некоторые объекты прокси / datacontract, которые передаются через веб-сервис и содержат только информацию, относящуюся к выполняемому вызову веб-сервиса. Простым примером будет только возвращение имени человека, а не его имени, адреса, номера телефона и т. Д.

1 голос
/ 01 декабря 2010

убедитесь, что ваши запросы могут использовать индексы. Самый простой способ индексировать таблицу в SQL Server - использовать мастер настройки Sql Server. Еще один способ диагностики проблемы - добавить метод Ping в службу. Это даст вам возможность проверить сетевую задержку. Вы также можете кэшировать общие записи, используя объект Cache. 30000 строк для сервера sql - это меньше, чем капля воды для всего океана:)

0 голосов
/ 24 декабря 2010

Если ваша проблема действительно заключается в объеме данных, отправляемых по сети. У вас есть несколько вариантов, кроме сокращения объема данных. Как Скотти сказал бы: «Капин, я не могу изменить законы физики» прямо перед тем, как он изменит законы физики;)

Требуется x количество времени для передачи y байтов данных по каналу передачи данных скорости z.

То, как вы уменьшаете эти данные, сильно зависит от вашей ситуации. Вы можете использовать сжатие, которое может или не может принести вам что-либо в зависимости от структуры данных, но, будучи в значительной степени основано на XML, вы должны получить довольно хорошее улучшение от этого.

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

Конечно, если вы переносите всю таблицу, когда вам нужно только 3 поля, это также может значительно увеличить размер ваших данных. Убедитесь, что вы только передаете нужные данные.

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