|
![]() |
#1 |
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 одобрил? ![]() |
|
![]() |
#2 |
Участник
|
Цитата:
Какая при этом разница между интепретацией и JIT, если в файлике все равно байткод? Цитата:
Подмена приложения (blue-green deployment ) в большинстве случаев все равно требует downtime пусть и значительно уменьшенный. А главное опять же нехилый DevOps и особенно с DB.
Цитата:
Так и есть. Помимо этого дает еще и неубиваемость в отличие от того же ASP.NET.
PHP наиболее отвечает stateless природе web. Цитата:
А как мы можем blue-green deployment в D365FO? Это может MS без downtime?
Тут ведь помимо downtime и вопрос срочности. Но может кто-то более знакомый с кишками обслуживания прода меня поправит. А вопрос срочности тут при чем? Вы про несколько минут на компиляцию модуля? Или про что? Имхо в любом случае надо как-то различать совместимые изменения и несовместимые с запуском двух версий и если они не совместимы будет даунтайм потому, что всех надо перегрузить. Или будут ошибки, если не всех перегружать. Цитата:
Я на практике где сомневаюсь обрамляю код параметром DB.
Типа список галок на некой форме для отключения недавно добавленного функционала пусть даже это просто кусок кода. Потому как даже в AX2012 страшно жить. Цитата:
То есть способность быстро откатывать и накатывать изменения она очень важна. Иначе лучше вообще ничего не менять. Вот накатили мы приложение из AppStore и через какое время продакшн пошел в разнос в силу логического конфликта. По хорошему должен отключаться галкой абсолютно весь занесенный или прицепившийся код. А кто за это отвечает? ISV скажет ничего не знаем MS одобрил?
![]() |
|
![]() |
#3 |
Banned
|
Цитата:
Понятно что еще до .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 Цитата:
Цитата:
Девопс возникает из-за массы (специфичных к версиям) нюансов для которых требуется отдельная голова и часто уже отдельный подрядчик. И да, возможно дело не в том с какой стороны разбивать яйцо, а в том что исторически сложилось. В принципе да. Это вопрос процессов, а не байт-кода. Но все же когда создавалась 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. |
|
![]() |
#4 |
Участник
|
Цитата:
(Кстати, недавно слышал передачку про blazor там заюзали Mono в режиме интерпретации) Цитата:
C .NET по-настоящему серьезно я работал многие годы назад, поэтому конечно еще и гуглю чтобы не бредить. Хорошим примером хотсваппинга в .NET является Shadow Copying Assemblies
Цитата:
JIT может быть не только компилятором, но и оптимизировать используя и интерпретацию и компиляцию. Поэтому суть в реализации JIT.
В чистой интерпретатации мы просто заменяем source code файл. В этом смысле программировать в PHP как находиться в сказке. Задно какая разница между хотсвоппингов двух различных сборок: одна частично скомпилирована потому, что какие-то участки кода выполнялись там не один раз (как в HotSpot), другая - потому, что какие-то пути выполнялись, какие-то нет (как в .NET) Цитата:
Девопс возникает из-за массы (специфичных к версиям) нюансов для которых требуется отдельная голова и часто уже отдельный подрядчик. И да, возможно дело не в том с какой стороны разбивать яйцо, а в том что исторически сложилось.
Цитата:
То есть такой вот Agile который захватывает и PROD. C green-blue подменой это какие-то другие проекты с деплоймент раз в несколько месяцев, а то и вообще разово.
Как, кстати, гарантируется корректность работы в случае хотсвоппинга в стиле X++ - например, мы изменили класс А и B. Работает клиент, но класс B пока загрузил, не может ли быть такого, что в какой-то момент он станет работать со старой версией класса A и с новой класса B? Последний раз редактировалось belugin; 19.05.2018 в 22:54. |
|
![]() |
#5 |
Banned
|
Цитата:
Сообщение от belugin
![]() Не вижу никакой связи между первым утверждением и вторым, честно говоря. Если я что хочу то и делаю и я один, то я не сам себе операционная система, если нас трое и мы что хотим то и делаем мы не операционная система, вот если нас несколько десятков, то да.
... И как же там с регистрацией в реестре и блокировками того, что используется Цитата:
Сообщение от belugin
![]() (Кстати, недавно слышал передачку про blazor там заюзали Mono в режиме интерпретации)
Делать копию Java в лучшем китайском стиле копирования и носиться с достижениями на этом поприще. Blazor: Техническое введение https://habr.com/post/348660/ Ну и зачем это все? Хотите Java, берите Java. Зачем вообще делать "свою" Java? Цитата:
То есть исключительно с точки зрения удобства программиста как пользователя, с точки зрения стоимости, 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 так им и остался. Цитата:
Но совсем без перезапуска клиентской части это PHP ![]() Из чего складываются впечатления от среды и комфорт программиста в среде? - быстродействие - полный контроль над средой - полное понимание среды Что возможно только там где простота и легкость. А вот просто и легко ли в D365FO, я сильно сомневаюсь. |
|
![]() |
#6 |
Участник
|
Цитата:
2) Когда захотели Java но со своими плюшками, Sun не разрешил (а щас Оракл еще с гуглом судился) 3) В этом и суть конкуренции - свое, но в чем-то другое. Цитата:
Не, мы лезем в технические дебри работы двигателя. А надо с точки зрения удобства водителя.
Цитата:
В AX это возможная простота деплоймента которую делает сам программист. Что крайне удобно для всех.
Цитата:
Тут я сравниваю импорт xpo с рестартом с downtime 1-2 часа
|
|
![]() |
#7 |
Banned
|
Цитата:
Сообщение от belugin
![]() 1) Это не Java (скорее Javascript)
2) Когда захотели Java но со своими плюшками, Sun не разрешил (а щас Оракл еще с гуглом судился) 3) В этом и суть конкуренции - свое, но в чем-то другое. Хорошая статья. Как понимаю эта тяжба оказала сильное влияние на развитие Open-source. Цитата:
Цитата:
Цитата:
![]() Если по теме то тема DevOps и деплоймента в D365FO недостаточно раскрыта. А если по теме интерпретации то она на самом деле интересна. Но при этом надо понимать что байт-код компиляция там тоже может быть, но все равно эти языки называют интерпретируемыми. P.S. Создал тему в Курилке для обсуждения оффтопа. Горе .NET Горе .NET Последний раз редактировалось ax_mct; 20.05.2018 в 03:34. Причина: P.S. |
|
Теги |
ax7, dynamics 365 for operations, x++ |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|