18.05.2018, 14:42 | #61 |
Участник
|
ну новизна в том что они не просто существуют где-то там "на ноутбуке разработчика в виде архива rar", а существуют в текущей версии, описаны и готовы к установке-использованию по одному клику на приложении клиента
|
|
18.05.2018, 15:32 | #62 |
Участник
|
Вот про установку по кнопке я пропустил - когда это появилось? Можно ссылочку какую-нибудь?
__________________
Ivanhoe as is.. |
|
18.05.2018, 17:06 | #63 |
Участник
|
ну это часть процесса валидации. Curation meeting шаг 4
т.е. решение должно развертываться, данные должны загрузаться и пользователь должен делать транзакции Deploy a standard Microsoft Dynamics 365 for Finance and Operations environment that has partner code that is based on the package contents (Code, Binaries, and Config). https://docs.microsoft.com/en-us/dyn...-lcs-solutions |
|
18.05.2018, 18:00 | #64 |
Участник
|
Стоп, стоп. Вы про документы про валидацию или про реальный кейс? Мы как партнер должны были показать MS как деплоится наше решение (аналогично было и на предыдущих версиях), но при чем тут клиент? В самом магазине клиент не может нажать "купить и установить".
__________________
Ivanhoe as is.. |
|
18.05.2018, 18:14 | #65 |
Banned
|
Цитата:
CLR требует компиляцию всего кода сразу и до. То есть взяли копировать Java/JVM но так и не поняли ее суть. JVM компилирует частями и по потребности (в общем случае). Что позволяет оптимизацию при исполнении и более быструю разработку. Та же Аксапта использовала JVM и такую "интерпретационную" компиляцию по частям что давало нам множество преимуществ в разработке. C необходимостью полной сборки MorphX был бы невозможен. А без MorphX это не 21 век. P.S. AppStore что сейчас обсуждается тоже душу не греет потому как скопирован опять таки с потерей сути. Действительно хочется увидеть клиента D365FO устанавливающего AppStore по кнопке. Это скорее анекдот. Последний раз редактировалось ax_mct; 18.05.2018 в 18:20. Причина: P.S. |
|
18.05.2018, 18:35 | #66 |
Участник
|
Цитата:
Не могли бы вы привести ссылку для подтверждения своего утверджения? 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. |
|
18.05.2018, 20:20 | #67 |
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. |
|
18.05.2018, 21:46 | #68 |
Участник
|
А чем код железного процессора так отличается от кода виртуальной машины что это в корне запрещает hotswapping? (кстати, VS поддерживает edit and continue для C++)
И еще, какие ограничения есть на hotswapping у JVM из коробки и зачем нужны всякие чудестные другие штуки, которые находятся по запросу "java hotswapping" (типа JRebel). Лично мое мнение что для продакшена концептуально лучше blue-green deployment - это позволяет получить гарантию, что код относится к одной какой-то версии. Что вы про это думаете? Для разработки есть edit and continue с ограничениями (что на JVM, что на .NET). Еще интересно про "интерпретаторы" - про тот же PHP сложилось впечатление, там нет никакого хотсваппинга (т.е. время жизни всего в типичном случае - один запрос) и легкость обновления достигается именно за счет этого, нет? |
|
18.05.2018, 22:15 | #69 |
Участник
|
И еще про одну штуку забыл, в 7 версии же у нас есть частичная перекомпиляция - можно добавить в проект несколько узлов АОТ, скомпилировать только их и запустить - и получить приложение с изменениями (работает для разработческого сценария). В каких-то правда случаях подглюкивает, но по скорости работы больше чем перекомпиляция целиком (я не очень понял как это работает).
И еще скорее всего начиная с 8.0 партнерам и клентам, надо будет не менять Applictaion Suite а расширять его сравнительно маленькими модулями. Т.е. хотсваппинг бы помог (не надо перезапускать), но непонятно, как его делать, с учетом того, что можно, например, передать, объект по ссылке между формами - что он должен в одной форме быть одной структуры а в другой - другой? |
|
18.05.2018, 23:51 | #70 |
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 одобрил? |
|
19.05.2018, 11:37 | #71 |
Участник
|
Цитата:
Какая при этом разница между интепретацией и JIT, если в файлике все равно байткод? Цитата:
Подмена приложения (blue-green deployment ) в большинстве случаев все равно требует downtime пусть и значительно уменьшенный. А главное опять же нехилый DevOps и особенно с DB.
Цитата:
Так и есть. Помимо этого дает еще и неубиваемость в отличие от того же ASP.NET.
PHP наиболее отвечает stateless природе web. Цитата:
А как мы можем blue-green deployment в D365FO? Это может MS без downtime?
Тут ведь помимо downtime и вопрос срочности. Но может кто-то более знакомый с кишками обслуживания прода меня поправит. А вопрос срочности тут при чем? Вы про несколько минут на компиляцию модуля? Или про что? Имхо в любом случае надо как-то различать совместимые изменения и несовместимые с запуском двух версий и если они не совместимы будет даунтайм потому, что всех надо перегрузить. Или будут ошибки, если не всех перегружать. Цитата:
Я на практике где сомневаюсь обрамляю код параметром DB.
Типа список галок на некой форме для отключения недавно добавленного функционала пусть даже это просто кусок кода. Потому как даже в AX2012 страшно жить. Цитата:
То есть способность быстро откатывать и накатывать изменения она очень важна. Иначе лучше вообще ничего не менять. Вот накатили мы приложение из AppStore и через какое время продакшн пошел в разнос в силу логического конфликта. По хорошему должен отключаться галкой абсолютно весь занесенный или прицепившийся код. А кто за это отвечает? ISV скажет ничего не знаем MS одобрил?
|
|
19.05.2018, 20:51 | #72 |
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. |
|
19.05.2018, 22:19 | #73 |
Участник
|
Цитата:
(Кстати, недавно слышал передачку про 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. |
|
20.05.2018, 01:14 | #74 |
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, я сильно сомневаюсь. |
|
20.05.2018, 01:26 | #75 |
Banned
|
Чуть не по теме но тот Blazor который интерпретирует Mono
комбинирует разметку с C# кодом что собственно и заставило меня смотреть на PHP как оригинал. С пониманием того что концепции .NET оказались дутыми. Цитата:
В Blazor компонент это .NET класс, который вы можете написать напрямую (то есть как C# класс) или, что более принято, в виде страницы разметки Razor (.cshtml файл).
Появившийся примерно в 2010 году Razor это синтаксис для комбинирования разметки с C# кодом. |
|
20.05.2018, 01:39 | #76 |
Участник
|
Цитата:
2) Когда захотели Java но со своими плюшками, Sun не разрешил (а щас Оракл еще с гуглом судился) 3) В этом и суть конкуренции - свое, но в чем-то другое. Цитата:
Не, мы лезем в технические дебри работы двигателя. А надо с точки зрения удобства водителя.
Цитата:
В AX это возможная простота деплоймента которую делает сам программист. Что крайне удобно для всех.
Цитата:
Тут я сравниваю импорт xpo с рестартом с downtime 1-2 часа
|
|
20.05.2018, 01:46 | #77 |
Участник
|
Цитата:
Цитата:
С пониманием того что концепции .NET оказались дутыми.
|
|
20.05.2018, 02:54 | #78 |
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. |
|
20.05.2018, 03:51 | #79 |
Участник
|
В самом нет, не может, процесс немного другой
У решения может быть несколько партнеров, вы смотрите краткое описание связываетесь с партнерами для демо-доп. вопросов. Если дошли до того что хочется "поработать" в решении, партнер через LCS(опять же в 1 клик) может установить вам Package на одно из ваших приложений(не отдавая при этом исходный код и ограничив лицензию по времени действия - это тоже кстати было большое ограничение в АХ2012, что технически это не реализовывалось) Необходимые данные опять же можно подгрузить через LCS |
|
20.05.2018, 14:43 | #80 |
Участник
|
Цитата:
Сообщение от EVGL
Мне кажется, что по сравнению с AX2012 времени на 50%-75% процентов больше, а по сравнению с AX2009 - как минимум на 100%, вдвое. Я еще не учитываю работу отдельного человека-администратора, которые только и занимается тем, что тиражирует все это как минимум в три среды. Ранее это мог реально сделать один человек-пароход, но эти времена ушли.
EVGL, что, на Ваш взгляд, повлияло на такой серьезный провал производительности труда команды:
В общем, интересен взгляд на то, временные ли это проблемы или все решаемо. |
|
|
За это сообщение автора поблагодарили: ax_mct (3). |
Теги |
ax7, dynamics 365 for operations, x++ |
|
|