12.03.2009, 14:39 | #1 |
Участник
|
Быстродействие CrmService
Реализовали такой функционал. На основе данных из сайта в CRM создаются Интересы, Контакты, Счета и куча других кастомных объектов. Но ради безопасности не стали писать доступ к веб-сервисам CRM из самого сайта, а создали промежуточный веб-сервис на asp, который принимает SOAP запросы от сайта и с другой стороны заносит данные в CRM.
Проблема: когда приходит запрос из сайта каждый раз создается экземпляр класса CrmService - это занимает много времени (20-60 сек) и сайт, не дождавшись ответа, вываливается с TimeoutException. Но следующие затем запросы обрабатываются мгновенно -создание экземпляра класса CrmService проходит сразу. Похоже где-то что-то кэшируется. Но через пару часов (суток) снова тратится много времени на этом же шаге. Для решения данной проблемы наткнулся на след. тему: http://social.microsoft.com/forums/e...-d395bff00c5a/ Еще нашел полезную ссылку для сериализации WebReference: http://uwekaessner.spaces.live.com/b...908E!175.entry Сделал как указано в последней ссылке: 1. Сгенерировал файл с Xml-сериализацией для web-reference CrmService. 2. В Reference для классов CrmService, Request, Response, BusinessEntity закомментировал аттрибуты Код: [System.Xml.Serialization.XmlIncludeAttribute Код: [System.Xml.Serialization.XmlSerializerAssemblyAttribute(AssemblyName = "CrmServicePerformance.XmlSerializers")] Скорость при создании CrmService увеличилась. Но на выполнение CrmService.Create(), CrmService.Execute(), CrmService.RetrieveMultiple() все равно уходит много времени. Иногда вся логика выполняется аж за 2 минуты. Но следующие запросы могут выполняться за 2 секунды. Что еще можно сделать? |
|