|
![]() |
#1 |
Участник
|
Насколько я знаю - нельзя, потому что "кэш" в данном случае - это локальная копия приложения на каждом AOS'е.
Каждый AOS в AX 2012 хранит копию скомпилированного в CIL приложения локально у себя в подкаталоге bin\XppIL. Также файлы сборки приложения хранятся в базе моделей, в таблице SysXppAssembly. После того, как один из AOS'ов перекомпилирует CIL, он заливает в базу моделей свою обновленную локальную копию. При запуске каждый AOS сравнивает свою локальную версию CIL и версию в базе моделей (там хранятся в т.ч. даты-время модификации файлов), и если в последней файлы новее, то он выкачивает их, обновляя свою локальную копию в bin\XppIL. Насколько я знаю, кроме перезапуска другие способы заставить AOS обновить свою локальную версию CIL из базы моделей не описаны. Можно, конечно, компилировать CIL последовательно на каждом AOS'е, но это как-то... стремно, да и времени будет занимать при большом числе AOS'ов едва ли меньше, чем перезапуск. Опять же, при таком подходе будет достаточно длительный период, когда разные AOS'ы выполняют разную по сути версию приложения. Кроме того, если AOS выполняет какую-то бизнес-логику в CIL, то он не сможет на лету "выдернуть" из-под себя соотв. файл сборки (netmodule) и подменить его только что перекомпилированным. Из-за этого, к примеру, на пакетном сервере при работающих пакетах компиляция CIL обычно надолго зависает, пока соотв. пакеты не завершатся. |
|
|
За это сообщение автора поблагодарили: sukhanchik (4), Logger (7). |