AXL API - чрезвычайно длительное время обработки файла CS
Просто нужна точка в правильном направлении с этим.
Я создал API Cisco Unified Call Manager с помощью инструкций, предоставленных Cisco, API для CUCM называется AXL. В настоящее время он находится в моем проекте C# WPF и работает просто отлично (я успешно извлек некоторые данные телефона), проблема в том, что API находится в одном CS-файле длиной 345 тыс. Строк. Это вызывает чрезвычайно длительную задержку, когда я пытаюсь выполнить первое действие с помощью API (после его компиляции).
Как посоветовал один пользователь на форуме Cisco:
Существует очень высокая вероятность того, что ваша проблема связана с тем, что для создания сборки сериализации xml требуется инфраструктура.net.
Предварительно сгенерируйте сборку сериализации xml при использовании AXL в.net, и ваш первый ответ будет НАМНОГО быстрее.
Я попытался предварительно сгенерировать его, используя инструкции из резервной копии пользовательского мозга в этой теме. К сожалению, первое использование API все еще длится около 45 секунд (это сократило его примерно на минуту). Я не очень разбираюсь в инструментах отладки в Visual Studio, поэтому не уверен, как проверить, что именно является причиной проблемы (но это, безусловно, похоже на проблему, связанную с генерацией XML).
Мне было интересно, если кто-нибудь мог бы порекомендовать способ удаления ненужных методов из файла CS (99% его не будет использоваться в любом случае) без необходимости повторного создания вручную. Любой тип инструмента, который может извлекать / удалять методы и их зависимости из файла CS, был бы абсолютно блестящим.
3 ответа
Возможно, имеет смысл сократить саму AXL WSDL и перекомпилировать - как уже упоминалось, вряд ли вы когда-либо будете использовать что-либо рядом со всей схемой.
Вы должны иметь возможность просто отредактировать AXLAPI.wsdl и удалить все элементы и, кроме элементов, которые вы фактически используете.
Есть способ проверить, использовался ли ваш метод или нет, и, если он использовался, сколько раз и где проверить это.
https://visualstudiomagazine.com/Blogs/Tool-Tracker/2014/12/Finding-Method-Property-Variable.aspx
Была та же самая проблема, это было почти непригодно с задержкой. Две вещи, которые я нашел, чтобы обойти это с почти мгновенными результатами.
Не используйте WSDL. Напишите свои собственные методы для обработки запросов SOAP. Занимает время и может быть подвержен ошибкам, но результаты почти мгновенные.
Используйте инструмент, который может обрабатывать большие текстовые файлы, такие как Notpad++, чтобы открыть файл сгенерированного кода WSDL и использовать только те методы, которые вам нужны. Это метод, который я выбрал, и он прекрасно работает.
Кроме того, я считаю, что вы могли бы просто использовать методы executeSQLQuery и вырезать большую часть остального кода, но я еще не попробовал это. Каждый метод, описанный выше, я пробовал без предварительной генерации сериализации XML. Я обнаружил, что проблема связана с размером файла сгенерированного кода C# axl.