Даже использование sgen в моем классе обслуживания все еще приводит к мучительно медленному конструктору - PullRequest
1 голос
/ 25 августа 2010

Так что я пытаюсь ускорить время запуска наших приложений - и я определил серьезное узкое место для работы.Каждый из наших клиентских классов веб-сервиса требует вечности и дня для создания экземпляра.Некоторые исследования показали, что это полностью из-за SoapHttpClientProtocol, запускающего GenerateXMLMappings.Я начал искать информацию по этому вопросу и нашел этот пост SO Slow SoapHttpClientProtocol конструктор

Я был готов озвучить трубы, поскольку мои проблемы отражали то, о чем говорилось там, в письме.Я прошел через все шаги, перечисленные в первом посте, чтобы использовать sgen для предварительной генерации dll сериализатора, а затем удалил различные теги из кода и встроил их в нормальную dll, на которую я ссылался в приложении как на нормальную ссылку (в отличие отна веб-ссылку).Однако после всего этого я не вижу разницы при профилировании приложения.Тонны времени все еще затрачиваются на создание GenerateXMLMappings как части конструктора SoapHttpClientProtocol.

Я проверил, что он на самом деле использует мой пользовательский dll клиента веб-сервиса.Я также проверил, что он по крайней мере ищет dll XmlSerializers (если я не включаю файл, я вижу, что файл notfound плюется об этом).

Кто-нибудь имеет подробную информацию о том, как конструктор SoapHttpClientProtocol решает, что ему нужно делать?Это действительно разочаровывающая проблема, потому что весь процесс кажется «черным ящиком» без какого-либо хорошего способа увидеть, что на самом деле происходит внутри.

Заранее благодарен за любую помощь - я полностью против стены на этом.

1 Ответ

0 голосов
/ 25 августа 2010

Я часто бью это.Я буду счастлив угадать, но обычно угадываю догадки.

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

Хорошо, вот предположения, которые я видел, но вы, вероятно, ошибаетесь.

  1. Извлечение строк из ресурсов во время загрузки.
  2. Уведомления сошли с ума при построении структуры данных.
  3. Инициализация сторонних сеток / элементов управления, даже с пустыми данными.
  4. Разбор / запись XML больше, чем вы думали.
  5. Застегивать / Разархивировать больше, чем вы думали.
...