AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.05.2018, 23:51   #1  
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 одобрил?
Старый 19.05.2018, 11:37   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Думаю что это ограничения OS, в частности Windows. Регистрация в реестре и невозможность удалить файл если он "используется".
VM это сама себе OS и что хочет то и может себе позволить. При этом там где интерпретация это явно легче.
Регистрация в реестре чего? Что такое "используется"? VM это машина а не ОС (кстати, вы поискале в гугле на тему того, как делают хотсваппинг в .NET или это просто ваши впечатления?).

Какая при этом разница между интепретацией и JIT, если в файлике все равно байткод?

Цитата:
Подмена приложения (blue-green deployment ) в большинстве случаев все равно требует downtime пусть и значительно уменьшенный. А главное опять же нехилый DevOps и особенно с DB.
За счет чего же этот девопс возникает и как его избюегают интерпретаторы?

Цитата:
Так и есть. Помимо этого дает еще и неубиваемость в отличие от того же ASP.NET.
PHP наиболее отвечает stateless природе web.
т.е. дело вовсе не в "компилируемости", да?

Цитата:
А как мы можем blue-green deployment в D365FO? Это может MS без downtime?
Тут ведь помимо downtime и вопрос срочности.
Я думаю, вряд ли, так как нет гарантии что старый и новый код одновременно может работать с одной и той же БД. Так ее и нет в случае старого X++.

Но может кто-то более знакомый с кишками обслуживания прода меня поправит.

А вопрос срочности тут при чем? Вы про несколько минут на компиляцию модуля? Или про что?

Имхо в любом случае надо как-то различать совместимые изменения и несовместимые с запуском двух версий и если они не совместимы будет даунтайм потому, что всех надо перегрузить. Или будут ошибки, если не всех перегружать.

Цитата:
Я на практике где сомневаюсь обрамляю код параметром DB.
Типа список галок на некой форме для отключения недавно добавленного функционала пусть даже это просто кусок кода. Потому как даже в AX2012 страшно жить.
Это называется feature toggle/test in production.

Цитата:
То есть способность быстро откатывать и накатывать изменения она очень важна. Иначе лучше вообще ничего не менять. Вот накатили мы приложение из AppStore и через какое время продакшн пошел в разнос в силу логического конфликта. По хорошему должен отключаться галкой абсолютно весь занесенный или прицепившийся код. А кто за это отвечает? ISV скажет ничего не знаем MS одобрил?
Это уже параллельно "компилируемости" - те же feature tooggle или blue green deployment только при откате версии.
Старый 19.05.2018, 20:51   #3  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от belugin Посмотреть сообщение
Регистрация в реестре чего? Что такое "используется"? VM это машина а не ОС (кстати, вы поискале в гугле на тему того, как делают хотсваппинг в .NET или это просто ваши впечатления?).
В свете того что количество разных реализаций JVM исчисляется десятками они сами себе OS. Что хотят то и делают. В частности как именно они реализуют хотсваппинг.

Понятно что еще до .NET можно было исхитряться загружать обычную dll динамически в каких-то случаях. Но в общем случае хотсваппинга для COM (машинный код) dll считай что не было. Понятно что не в уровне кода дело, а в сочетании реализаций.

C .NET по-настоящему серьезно я работал многие годы назад, поэтому конечно еще и гуглю чтобы не бредить. Хорошим примером хотсваппинга в .NET является Shadow Copying Assemblies https://docs.microsoft.com/en-us/dot...opy-assemblies

В AX2012 как понимаю на этой же основе (Shadow Copying Assemblies ) есть хотсваппинг серверных cборок https://msdn.microsoft.com/en-us/library/hh538487.aspx

Цитата:
Сообщение от belugin Посмотреть сообщение
Какая при этом разница между интепретацией и JIT, если в файлике все равно байткод?
JIT может быть не только компилятором, но и оптимизировать используя и интерпретацию и компиляцию. Поэтому суть в реализации JIT.

Цитата:
Сообщение от belugin Посмотреть сообщение
За счет чего же этот девопс возникает и как его избюегают интерпретаторы?
В чистой интерпретатации мы просто заменяем source code файл. В этом смысле программировать в PHP как находиться в сказке.
Девопс возникает из-за массы (специфичных к версиям) нюансов для которых требуется отдельная голова и часто уже отдельный подрядчик. И да, возможно дело не в том с какой стороны разбивать яйцо, а в том что исторически сложилось.

Цитата:
Сообщение от belugin Посмотреть сообщение
т.е. дело вовсе не в "компилируемости", да?
В принципе да. Это вопрос процессов, а не байт-кода.

Но все же когда создавалась Javа (на замену С++) она пошла по пути интерпретации.
Не все так просто с точки зрения кросс-платформенности.

Цитата:
Сообщение от belugin Посмотреть сообщение
А вопрос срочности тут при чем? Вы про несколько минут на компиляцию модуля? Или про что?

Имхо в любом случае надо как-то различать совместимые изменения и несовместимые с запуском двух версий и если они не совместимы будет даунтайм потому, что всех надо перегрузить. Или будут ошибки, если не всех перегружать.
Удовольствие от работы в среде программирования это тоже хорошая тема, но я про
feature toggle/test in production.

На моих проектах деплоймент на PROD раз в 1-2 недели. Возможность глубокой ночью что-то откатить или добавить в течение максимум 2 часов дорогого стоит. Возможность сделать это максимально просто - бесценна.

То есть такой вот Agile который захватывает и PROD. C green-blue подменой это какие-то другие проекты с деплоймент раз в несколько месяцев, а то и вообще разово.
При этом еще есть стоимость изменения куда этот DevOps включается.

Ну и поскольку тема про "впечатления от программирования в D365FO" и пошли мнения о волшебных кнопках в AppStore, мне стало интересно в контексте хотсваппинг, а что можно сделать и кто отвечает если установленное AppStore приложение начало приносить десятки тысяч убытков в день.
При том что "одобрено"

Последний раз редактировалось ax_mct; 19.05.2018 в 20:53.
Старый 19.05.2018, 22:19   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от ax_mct Посмотреть сообщение
В свете того что количество разных реализаций JVM исчисляется десятками они сами себе OS. Что хотят то и делают. В частности как именно они реализуют хотсваппинг.
Не вижу никакой связи между первым утверждением и вторым, честно говоря. Если я что хочу то и делаю и я один, то я не сам себе операционная система, если нас трое и мы что хотим то и делаем мы не операционная система, вот если нас несколько десятков, то да.

(Кстати, недавно слышал передачку про blazor там заюзали Mono в режиме интерпретации)

Цитата:
C .NET по-настоящему серьезно я работал многие годы назад, поэтому конечно еще и гуглю чтобы не бредить. Хорошим примером хотсваппинга в .NET является Shadow Copying Assemblies
И как же там с регистрацией в реестре и блокировками того, что используется

Цитата:
JIT может быть не только компилятором, но и оптимизировать используя и интерпретацию и компиляцию. Поэтому суть в реализации JIT.
В чистой интерпретатации мы просто заменяем source code файл. В этом смысле программировать в PHP как находиться в сказке.
Расскажите, как там происходит хотсвоппинг. Только пожалуйста в чем-то типа АОСа - не создается отдельный процесс на каждый запрос, а уже есть запущенный процесс, с графом объектов в памяти и надо чтобы он узнал об изменениях.

Задно какая разница между хотсвоппингов двух различных сборок: одна частично скомпилирована потому, что какие-то участки кода выполнялись там не один раз (как в HotSpot), другая - потому, что какие-то пути выполнялись, какие-то нет (как в .NET)

Цитата:
Девопс возникает из-за массы (специфичных к версиям) нюансов для которых требуется отдельная голова и часто уже отдельный подрядчик. И да, возможно дело не в том с какой стороны разбивать яйцо, а в том что исторически сложилось.
Не могли бы вы привести пример? Хотя бы топ 5 нюансов

Цитата:
То есть такой вот Agile который захватывает и PROD. C green-blue подменой это какие-то другие проекты с деплоймент раз в несколько месяцев, а то и вообще разово.
Почему blue-green это раз в несколько месяцев? Из-за чего?
Как, кстати, гарантируется корректность работы в случае хотсвоппинга в стиле X++ - например, мы изменили класс А и B. Работает клиент, но класс B пока загрузил, не может ли быть такого, что в какой-то момент он станет работать со старой версией класса A и с новой класса B?

Последний раз редактировалось belugin; 19.05.2018 в 22:54.
Старый 20.05.2018, 01:14   #5  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от belugin Посмотреть сообщение
Не вижу никакой связи между первым утверждением и вторым, честно говоря. Если я что хочу то и делаю и я один, то я не сам себе операционная система, если нас трое и мы что хотим то и делаем мы не операционная система, вот если нас несколько десятков, то да.
...
И как же там с регистрацией в реестре и блокировками того, что используется
Неважно, тут мы уже непонятно по какой теме словами играем. Просто о разном говорим.

Цитата:
Сообщение от belugin Посмотреть сообщение
(Кстати, недавно слышал передачку про blazor там заюзали Mono в режиме интерпретации)
А вот это интересно. Понятно что .NET это конкурент и аналог Java, но как то это бессмысленно все.
Делать копию Java в лучшем китайском стиле копирования и носиться с достижениями на этом поприще.
Blazor: Техническое введение
https://habr.com/post/348660/
Ну и зачем это все? Хотите Java, берите Java. Зачем вообще делать "свою" Java?

Цитата:
Сообщение от belugin Посмотреть сообщение
Расскажите, как там происходит хотсвоппинг.
...
Не могли бы вы привести пример? Хотя бы топ 5 нюансов
...
Почему blue-green это раз в несколько месяцев? Из-за чего?
Не, мы лезем в технические дебри работы двигателя. А надо с точки зрения удобства водителя.
То есть исключительно с точки зрения удобства программиста как пользователя, с точки зрения стоимости, c точки зрения рынка.
Сел, завел, доехал. Простота, стоимость, выполнение задачи.

В AX это возможная простота деплоймента которую делает сам программист. Что крайне удобно для всех.
В D365FO основной нюанс это TFS где нужен отдельный специалист. Ну и отдельные VM для каждого программиста. Тот самый DevOps который сильно отличает жизнь в AX и в D365FO.

blue-green в AX выглядит серьезной и дорогой операцией которую часто просто никто не захочет делать без острой необходимости. Это не просто 2 часа работы одного программиста.
Тут я сравниваю импорт xpo с рестартом с downtime 1-2 часа и blue-green как переключение пользователей на новый AOC и возней с DB схемами и прочим.

Если мы говорим о D365FO то технические нюансы деплоймента и хотсвоппинга в PROD мало имеют смысла так как это делает MS а не программист.

Если же мы сравниваем возможности .NET с Java, то мое глубокое мнение что .NET как был second-class по сравнению с Java так им и остался.

Цитата:
Сообщение от belugin Посмотреть сообщение
Как, кстати, гарантируется корректность работы в случае хотсвоппинга в стиле X++ - например, мы изменили класс А и B. Работает клиент, но класс B пока загрузил, не может ли быть такого, что в какой-то момент он станет работать со старой версией класса A и с новой класса B?
Всегда это перезапуск "AX" клиента. Тут скорее могут быть проблемы с клиентским кэшем. К примеру если мы не рестартуем AOC то надо очищать ,auc файлы.
Но совсем без перезапуска клиентской части это PHP

Из чего складываются впечатления от среды и комфорт программиста в среде?
- быстродействие
- полный контроль над средой
- полное понимание среды
Что возможно только там где простота и легкость.
А вот просто и легко ли в D365FO, я сильно сомневаюсь.
Старый 20.05.2018, 01:39   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Ну и зачем это все? Хотите Java, берите Java. Зачем вообще делать "свою" Java?
1) Это не Java (скорее Javascript)
2) Когда захотели Java но со своими плюшками, Sun не разрешил (а щас Оракл еще с гуглом судился)
3) В этом и суть конкуренции - свое, но в чем-то другое.
Цитата:
Не, мы лезем в технические дебри работы двигателя. А надо с точки зрения удобства водителя.
Так вы первый начали про компилятор. Надо тогда просто "мне неудобно, сделайте удобно". Без анализа по какой технической причине. Если технические детали неинтересны. А мне вот интересны. Правда жаловаться по неофициальным форумам неэффективно.

Цитата:
В AX это возможная простота деплоймента которую делает сам программист. Что крайне удобно для всех.
У меня не очень большой проектный опыт, но насколько я видел в-основном на прод накатывают специальные люди и это далеко не всякий программист.

Цитата:
Тут я сравниваю импорт xpo с рестартом с downtime 1-2 часа
Какой рестарт? Какой даунтайм? У нас же интерпретатор и можно без рестарта?
Старый 20.05.2018, 02:54   #7  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от belugin Посмотреть сообщение
1) Это не Java (скорее Javascript)
2) Когда захотели Java но со своими плюшками, Sun не разрешил (а щас Оракл еще с гуглом судился)
3) В этом и суть конкуренции - свое, но в чем-то другое.
Это да, WASM vs Javascript это компиляция vs интерпретация в браузере. Хороший пример.

Хорошая статья. Как понимаю эта тяжба оказала сильное влияние на развитие Open-source.
Цитата:
Сообщение от belugin Посмотреть сообщение
Так вы первый начали про компилятор. Надо тогда просто "мне неудобно, сделайте удобно". Без анализа по какой технической причине. Если технические детали неинтересны. А мне вот интересны. Правда жаловаться по неофициальным форумам неэффективно.
Я очень сильно погружался в .NET в начале его создания до мельчайших деталей, и толк от этих знаний был только в том что у меня ушла одна неделя на то чтобы программировать на J2EE наравне со всеми. Потому как зеркало Javа. Но постоянные суетные изменения в .NET в непонятной гонке таковы что нет смысла тратить на них время, и если уж изучать фундаментально то более постоянные оригиналы где есть таки идеология и принципы.

Цитата:
Сообщение от belugin Посмотреть сообщение
У меня не очень большой проектный опыт, но насколько я видел в-основном на прод накатывают специальные люди и это далеко не всякий программист.
По хорошему это должен быть один человек и думаю что так и есть в большинстве случаев, но что-то в последнее время я такое вижу все меньше. Эффективней когда когда программист ведет от начала до конца без всяких передач. Взаимозаменяемость опять таки.

Цитата:
Сообщение от belugin Посмотреть сообщение
Какой рестарт? Какой даунтайм? У нас же интерпретатор и можно без рестарта?
Все смешалось, так получилось

Если по теме то тема DevOps и деплоймента в D365FO недостаточно раскрыта.

А если по теме интерпретации то она на самом деле интересна. Но при этом надо понимать что байт-код компиляция там тоже может быть, но все равно эти языки называют интерпретируемыми.
P.S.
Создал тему в Курилке для обсуждения оффтопа.
Горе .NET
Горе .NET

Последний раз редактировалось ax_mct; 20.05.2018 в 03:34. Причина: P.S.
Теги
ax7, dynamics 365 for operations, x++

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
instructorbrandon: April 12th, One Hour D365UG Training Webinar on Undocumented Technique for Performance Tuning D365FO Blog bot DAX Blogs 0 11.04.2018 03:42
D365FO - Как выбрать группу ресурсов (Azure Resource Group) для одно-серверной облачной среды D365FO? MarinaAX DAX: Администрирование 1 14.02.2018 00:03
cleverax: D365FO: Using Bar codes, External codes and GTIN in Warehouse app to identify an item. Blog bot DAX Blogs 0 03.02.2018 21:13
cleverax: D365FO: Manual inbound load rating Blog bot DAX Blogs 0 03.02.2018 21:13
Первые впечатления от АКСАПТЫ Rafael DAX: Прочие вопросы 0 27.11.2001 21:24
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:53.