Реализовали такой функционал. На основе данных из сайта в 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 секунды.
Что еще можно сделать?