Показать сообщение отдельно
Старый 18.05.2018, 23:51   #2  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от belugin Посмотреть сообщение
А чем код железного процессора так отличается от кода виртуальной машины что это в корне запрещает hotswapping? (кстати, VS поддерживает edit and continue для C++)
Думаю что это ограничения OS, в частности Windows. Регистрация в реестре и невозможность удалить файл если он "используется".
VM это сама себе OS и что хочет то и может себе позволить. При этом там где интерпретация это явно легче.

Цитата:
Сообщение от belugin Посмотреть сообщение
И еще, какие ограничения есть на hotswapping у JVM из коробки и зачем нужны всякие чудестные другие штуки, которые находятся по запросу "java hotswapping" (типа JRebel).
JRebel не просто заменяет код метода, а позволяет менять сигнатуру, добавлять и удалять методы.
А это не просто бросить jar, а как-то обновлять все ссылки в работающей VM. Это реально круто.

Цитата:
Сообщение от belugin Посмотреть сообщение
Лично мое мнение что для продакшена концептуально лучше blue-green deployment - это позволяет получить гарантию, что код относится к одной какой-то версии. Что вы про это думаете?

Для разработки есть edit and continue с ограничениями (что на JVM, что на .NET).
Подмена приложения (blue-green deployment ) в большинстве случаев все равно требует downtime пусть и значительно уменьшенный. А главное опять же нехилый DevOps и особенно с DB.

Есть еще отключаемый Compile on Save, но тут если в Java мы компилируем исходник .java в байткод .class на уровне класса, то как я понимаю VS это делает на уровне проекта.

Цитата:
Сообщение от belugin Посмотреть сообщение
Еще интересно про "интерпретаторы" - про тот же PHP сложилось впечатление, там нет никакого хотсваппинга (т.е. время жизни всего в типичном случае - один запрос) и легкость обновления достигается именно за счет этого, нет?
Так и есть. Помимо этого дает еще и неубиваемость в отличие от того же ASP.NET.
PHP наиболее отвечает stateless природе web.
Кэширование (Vanish http://php.net/manual/en/book.varnish.php etc) еще надо сливать все же.
Типа удалить из некой папки кэш.

А как мы можем blue-green deployment в D365FO? Это может MS без downtime?
Тут ведь помимо downtime и вопрос срочности.
Я на практике где сомневаюсь обрамляю код параметром DB. Типа список галок на некой форме для отключения недавно добавленного функционала пусть даже это просто кусок кода. Потому как даже в AX2012 страшно жить.

То есть способность быстро откатывать и накатывать изменения она очень важна. Иначе лучше вообще ничего не менять. Вот накатили мы приложение из AppStore и через какое время продакшн пошел в разнос в силу логического конфликта. По хорошему должен отключаться галкой абсолютно весь занесенный или прицепившийся код. А кто за это отвечает? ISV скажет ничего не знаем MS одобрил?