|
![]() |
#1 |
Участник
|
2 Belugin
Вроде все правильно пишите, но тема разговора плавно ушла в сторону. А по сути Ax_mct трижды прав: Цитата:
Наш (enterprise) большой проект это прежде всего прикладной проект где одна их характеристик - большая изменчивость. Скриптовые и интерпретируемые языки намного удобнее для программистов так где надо работать над требованиями.
А с введение CIL в 2012-й всего-то добавили "маленькую" проблему - большой монолитный AppSuite. И все поломали. ![]() Ну а дальше еще хуже. |
|
|
За это сообщение автора поблагодарили: Ace of Database (2). |
![]() |
#2 |
Участник
|
Цитата:
В принципе, есть технология для hotswapping в .NET и она даже используется в Ax2012 . FED, правда, говорил, что глючит. В современном мире, насколько я знаю, это решается не хотсвоппингом, а поднятием дополнительного инстанса сервиса с новой версии и рутингом новых запросов на него. Но у меня в этом опыта нет. Кстати, интересно, есть ли какая-то гарантия согласовванности кода в Ax4 или если я загружу два новых класса, то может получиться ситуация, когда польователь работает одновременно со старой версией одного класса и новой - другого. С этой точки зрения мне кажется ценнее получить согласованную версию кода, чем реализовывать хотсвоппинг. Как это реализовано в Ax сейчас я не знаю. Еще вполне возможно что в других технологиях с хотсвоппингом лучше. Например edit and continue в вижуал студии для C# работает с большими ограничениями - в Java, говорят, их меньше. |
|
![]() |
#3 |
Banned
|
Цитата:
CLR требует компиляцию всего кода сразу и до. То есть взяли копировать Java/JVM но так и не поняли ее суть. JVM компилирует частями и по потребности (в общем случае). Что позволяет оптимизацию при исполнении и более быструю разработку. Та же Аксапта использовала JVM и такую "интерпретационную" компиляцию по частям что давало нам множество преимуществ в разработке. C необходимостью полной сборки MorphX был бы невозможен. А без MorphX это не 21 век. P.S. AppStore что сейчас обсуждается тоже душу не греет потому как скопирован опять таки с потерей сути. Действительно хочется увидеть клиента D365FO устанавливающего AppStore по кнопке. Это скорее анекдот. Последний раз редактировалось ax_mct; 18.05.2018 в 18:20. Причина: P.S. |
|
![]() |
#4 |
Участник
|
Цитата:
Не могли бы вы привести ссылку для подтверждения своего утверджения? Compilation by the JIT Compiler JIT compilation converts MSIL to native code on demand at application run time, when the contents of an assembly are loaded and executed. |
|
![]() |
#5 |
Banned
|
Цитата:
Сообщение от belugin
![]() Вы имеете ввиду компиляцию из исходного кода в промежуточный или из промежуточного в машинный?
Не могли бы вы привести ссылку для подтверждения своего утверджения? Compilation by the JIT Compiler JIT compilation converts MSIL to native code on demand at application run time, when the contents of an assembly are loaded and executed. Промежуточный это P-code в X++, CIL в .NET, Bytecode (.class) в Java. Это файлы полученные из исходного кода и которые используются VM для перевода в машинный код (ngen и прочие не общие вещи не расматриваем). Действительно получается что все упирается в реализацию JIT. В Java их далеко не одна. Самый общий это HotSpot https://ru.wikipedia.org/wiki/HotSpot который сочетает и компилятор и интерпретатор. Oracle HotSpot это больше 80% рынка JVM. https://plumbr.io/blog/java/java-version-and-vendor-data-analyzed-2017-edition Oracle HotSpot использует интерпретацию по умолчанию, и только потом компиляцию часто используемых методов. Цитата:
HotSpot VM defaults to interpreting Java byte code. It compiles (JIT compilation) methods that runtime profiling determines to be "hot", that is, the methods that are executed for a predetermined number of times. JIT compliers are either client or server compilers.
В CLR возможностей использования интерпретации в JIT - нет совсем. А она таки для программистов удобнее и мы ее потеряли с D365FO. |
|
![]() |
#6 |
Участник
|
А чем код железного процессора так отличается от кода виртуальной машины что это в корне запрещает hotswapping? (кстати, VS поддерживает edit and continue для C++)
И еще, какие ограничения есть на hotswapping у JVM из коробки и зачем нужны всякие чудестные другие штуки, которые находятся по запросу "java hotswapping" (типа JRebel). Лично мое мнение что для продакшена концептуально лучше blue-green deployment - это позволяет получить гарантию, что код относится к одной какой-то версии. Что вы про это думаете? Для разработки есть edit and continue с ограничениями (что на JVM, что на .NET). Еще интересно про "интерпретаторы" - про тот же PHP сложилось впечатление, там нет никакого хотсваппинга (т.е. время жизни всего в типичном случае - один запрос) и легкость обновления достигается именно за счет этого, нет? |
|
![]() |
#7 |
Banned
|
Цитата:
VM это сама себе OS и что хочет то и может себе позволить. При этом там где интерпретация это явно легче. Цитата:
А это не просто бросить jar, а как-то обновлять все ссылки в работающей VM. Это реально круто. Цитата:
Есть еще отключаемый Compile on Save, но тут если в Java мы компилируем исходник .java в байткод .class на уровне класса, то как я понимаю VS это делает на уровне проекта. Цитата:
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 одобрил? ![]() |
|
Теги |
ax7, dynamics 365 for operations, x++ |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|