Използвам C# .NET SDK за MS CRM 4.0. По-специално, използвам XRM интерфейса на SDK.
Когато стартирам моето клиентско приложение, първата заявка (напр. get all crm systemusers) отнема около 5 секунди. Овърхедът възниква преди нещо да бъде изпратено през мрежата (наблюдавано в wireshark). Ето защо предполагам, че забавянето е свързано с някои режийни разходи за зареждане на .NET.
Намерих някои обяснения на http://www.eggheadcafe.com/software/aspnet/31916049/the-initial-delay-when-using-the-crmservice-is-caused-by-two-things.aspx:
Първоначалното забавяне при използване на CrmService се дължи на две неща. Първо прокси класът CrmService трябва да бъде компилиран (от IL към native) и сериализацията трябва да бъде заредена. Това изисква голямо количество обработка и съответно време. Тази компилация се случва само при първото създаване на екземпляр на crmservice proxy в AppDomain.
Второ, когато се изпълнява извикване на сървъра за първи път допълнителен клас и може да се наложи да се зареди такъв.
Това нормално поведение за .NET framework. Можете да оптимизирате времето за зареждане за CrmService, като генерирате нов прокси сървър с помощта на WSDL инструмента и изчистите всички заявки и обекти, които не използвате. Проблемът с това е, че е много работа.
Ако приемем, че обяснението по-горе е приложимо, има ли нещо друго, което може да се направи, за да се избегне забавянето - освен ръчно редактиране на генерираните прокси класове?
Експериментирах с GAC и оригинални изображения - без успех.