Службы отчетов SQL Server: веб-ссылки против ссылок на сборки, низкая производительность - PullRequest
0 голосов
/ 16 февраля 2010

Я использую Reporting Services, чтобы сделать отчет напрямую в PDF. Требуется, чтобы я использовал две веб-ссылки: ReportExecution2005.asmx и ReportService2005.asmx. Производительность веб-ссылок кажется очень плохой. Так как мой веб-сервер (IIS7) и SQL Server (2008) находятся в одном окне, можно ли напрямую ссылаться на них? Если нет, я могу явно кешировать их или что-то в этом роде. Первая загрузка действительно очень медленная, вторая загрузка вполне приемлема.

Спасибо

Ответы [ 2 ]

1 голос
/ 25 февраля 2010

Для решения этой проблемы необходимо сделать две вещи:

  1. сериализация xml
  2. Изменить время перезапуска службы отчетов (стоит около 20 секунд при первом запуске отчета для меня)
  3. Изменить время перезапуска пула приложений в IIS (стоит около 5 секунд при первом запуске отчета для меня)

В качестве примечания к сериализации xml есть случаи, когда вышеуказанная настройка фактически ничего не добавляет к вашей сборке. Вы можете добавить классы веб-прокси, открыв командную строку в директории вашего проекта и введя wsdl <web service name> /out<proxy class name> например. wsdl http://myworkstn:8080/ReportServer_SQLEXPRESS/ReportExecution2005.asmx /out: ReportExecutionProxy.cs.

Затем добавьте событие после сборки (Solution Explorer | Rt Нажмите Project | Properties | События сборки (вкладка) | Командная строка события после сборки (раздел)) "$(FrameworkSDKDir)Bin\sgen.exe" /force /assembly:"$(TargetPath)" /proxytypes /parsableerrors Переключатель /proxytypes добавляет только прокси-классы

Надеюсь, это сэкономит вам часы, которые понадобились мне, чтобы найти все это. :)

1 голос
/ 16 февраля 2010

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

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

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

...