Номер статьи: KB000011
Связанные блоки:
общее
Во время компиляции модулей/форм/сборок (Fore или Fore.NET) на локальном диске создается файловый кэш, в котором хранится скомпилированная версия объекта. По умолчанию кэш располагается в профиле пользователя, в подкаталоге «\AppData\Local\Foresight\Foresight Analytics Platform\AsmCache<n>\Mod\<ID репозитория>\<номер сборки>\». При необходимости путь хранения файлового кэша можно изменить, более подробно об этом читайте в статье «Кэширование», подраздел «Управление настройками». Кэш позволяет ускорить запуск разрабатываемых приложений.
Для ускорения первого запуска прикладных проектов в промышленных условиях скомпилированные объекты среды разработки также могут храниться в базе репозитория. Для управления режимом хранения скомпилированных объектов в базе репозитория предназначен флаг «Кэширование сборок только на локальном диске». Данный флаг располагается в окне «Параметры репозитория». При первом запуске скомпилированные версии объектов будут скопированы в файловый кэш. После этого вся остальная работа будет производиться с файловым кэшем.
По умолчанию флаг «Кэширование сборок только на локальном диске» снят, при этом скомпилированная версия объекта сохраняется, как на локальном диске, так и в репозитории.
Если работа в одном репозитории ведется разными версиями платформы, а скомпилированные сборки сохраняются в репозитории, то в рамках одного проекта могут храниться формы и модули, скомпилированные разными версиями платформы. Это может привести к ошибкам вида: «Access violation…» или «Internal runtime error…», возникающим, например, при запуске одной формы из другой, скомпилированной другой версией платформы. Данные ошибки вызваны несовместимостью форматов в разных версиях платформы.
Также это может замедлить процесс разработки. При компиляции объектов на одном компьютере их скомпилированные версии будут сохраняться в базу репозитория. При параллельной работе с этими же объектом на другом компьютере будет происходить сравнивание локальных скомпилированных версий и версий в базе. Это приведет к постоянному обнаружению различий, что в свою очередь повысит нагрузку на сервер из-за постоянной загрузки версий на локальный диск и обратно в базу.
Для исключения подобных последствий:
Установите флаг «Кэширование сборок только на локальном диске» на стадии разработки проекта;
Удалите скомпилированные сборки из репозитория. Для этого можно использовать следующи запрос:
DELETE FROM b_mod WHERE obj IN (SELECT obj FROM b_obj WHERE cls IN (1537, 1538, 1539))
При разработке прикладного кода устанавливайте флажок «Кэширование сборок только на локальном диске». Это позволит работать с кодом в разных версиях платформы.
Не рекомендуется устанавливать флажок «Кэширование сборок только на локальном диске» при установке системы на рабочих станциях пользователей у заказчика.
Перед передачей системы заказчику рекомендуется очистить репозиторий от скомпилированных сборок. Затем снять флажок «Кэширование сборок только на локальном диске» и запустить используемые пользователями формы, чтобы скомпилировать и сохранить сборки в репозиторий. Запуск необходимо производить той версией платформы, которая в дальнейшем также будет установлена у заказчика. Это позволит избежать компиляции объектов при разворачивании системы и первом запуске, так как в файловый кэш попадут уже имеющиеся скомпилированные объекты.
Чтобы не влиять на работу пользователей при разработке системы у заказчика, необходимо устанавливать флажок «Кэширование сборок только на локальном диске» на рабочих станциях, которые используются для разработки.
Следует помнить, что при компиляции измененного модуля/формы из среды разработки, произойдет его сохранение. После этого отсутствуют гарантии открытия сохраненного модуля/формы более ранней версией платформы.
Разрабатываемые модули и формы рекомендуется компоновать и хранить внутри сборок. Это уменьшает количество создаваемых файлов с кэшем, что приводит к уменьшению обращений к файловой системе и ускоряет запуск кэшированных объектов.
Установка/снятие флага «Кэширование сборок только на локальном диске» не влияет на общую скорость работы разрабатываемого приложения, так как при запуске в любом случае используется файловый кэш. Данный флаг позволяет повлиять только на первый запуск при разворачивании новой версии приложения на компьютерах заказчиков.
См. также:
База знаний разработчиков | Окно «Параметры репозитория»Окно «Параметры репозитория»