AXForum  
Вернуться   AXForum > Прочие обсуждения > Курилка
CRM
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.03.2017, 13:53   #1  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от mazzy Посмотреть сообщение
Как правильно вести разработку в условиях, когда часть кода закрыта от изменения, а платформа предоставляет систему событий и подписок?
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
...
Системные механизмы используют множество согласованных обработчиков, логика которых не документирована. На практике, если не подходит стандарт - делаешь рядом что-то свое. Победить и изменить - как правило, себе дороже. Но это в общих чертах, конечно. Бывают случаи проще, там можно доработать стандарт, если можно на него опираться, а не менять в корне.
Правильно вести разработку в условиях, когда часть кода закрыта от изменения - не представляется возможным. Спасаться можно только дублируя и копируя десятки и десятки классов и форм. Что правильным никак быть не может.

Вендор не просто меняет способ разработки по техническим причинам в D365FO, он тупо закрывает разработку функциональности вообще со стороны партнеров и клиентов. Всякие точки расширения и события - это пластмассовая косточка с клубничным вкусом. Пососать.

Событий и подписок - недостаточно.
Нужна возможность замены любых классов и методов целиком. Через конфигурационные файлы. Но это будет тот же overlayering по своей сути.

Последний раз редактировалось ax_mct; 21.03.2017 в 13:59.
За это сообщение автора поблагодарили: Logger (1), Sancho (2).
Старый 21.03.2017, 14:12   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Всякие точки расширения и события - это пластмассовая косточка с клубничным вкусом. Пососать.
Ой, все. Страдать пожалуйста сюда: Клуб анонимных оверлейщиков


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

Как вести разработку с минимальными в долгосрочной перспективе трудозатратами
в условиях, есть куча унаследованного кода И часть кода закрыта от изменения,
а платформа предоставляет систему событий и подписок?

что должен сделать вендор?
что может сделать партнер/заказчик своими силами?
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 21.03.2017 в 14:17.
За это сообщение автора поблагодарили: ax_mct (7).
Старый 21.03.2017, 14:32   #3  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от mazzy Посмотреть сообщение
Как вести разработку с минимальными в долгосрочной перспективе трудозатратами
в условиях, есть куча унаследованного кода И часть кода закрыта от изменения,
а платформа предоставляет систему событий и подписок?

что должен сделать вендор?
что может сделать партнер/заказчик своими силами?
Каким бы нехорошим не был подход с рефлексией, но он заслуживает серьезного внимания.
https://ievgensaxblog.wordpress.com/...xtension-code/

X++:
using System.Reflection;
 
/// <summary>
/// Handles events raised by <c>SalesLineTypeEventHandler</c> class.
/// </summary>
public class SalesLineTypeEventHandler
{
    [PostHandlerFor(classStr(SalesLineType), methodStr(SalesLineType, insert))]
    public static void SalesLineType_Post_insert(XppPrePostArgs _args)
    {
        SalesLineType salesLineType = _args.getThis();
 
        var bindFlags = BindingFlags::Instance | BindingFlags::NonPublic;
 
        var field = salesLineType.GetType().GetField("salesLine", bindFlags);
 
        SalesLine salesLine = field.GetValue(salesLineType);
 
        if (salesLine)
        {
            salesLine.MyNewField = 42;
            salesLine.doUpdate();
        }
    }
}
Вендор же никому ничего не должен
Старый 21.03.2017, 14:43   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Каким бы нехорошим не был подход с рефлексией, но он заслуживает серьезного внимания.
Да, заслуживает.
Но рефлексия - это тут же уход в динамическое программирование взамен статической компиляции. Со всеми плюсами и минусами.

И соответствующими холиварами на эту тему )))

Цитата:
Сообщение от ax_mct Посмотреть сообщение
Вендор же никому ничего не должен
это тоже неправда )))
но должен он очень мало чего и мало кому. это так.
__________________
полезное на axForum, github, vk, coub.
Старый 21.03.2017, 14:34   #5  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,895 / 5650 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от mazzy Посмотреть сообщение

что должен сделать вендор?
что может сделать партнер/заказчик своими силами?
Ну я бы сказал - вендор должен постоянно анализировать доработки на идущих проектах, которые были сделаны оверлеерингом. Контактировать с партнером, если смысл доработок не понятен. Реинженерить и дописывать свои собственные классы так чтобы в дальнейшем типичные доработки можно было бы делать без оверлееринга.
При таком раскладе - я могу представить что годков через 5 такой работы и вправду 85% типичных внедрений можно будет делать на чистых extensions.
Только зная микрософтовское отношение к инвестициям в реинженеринг и рефакторинг, я больше верю в давление на микрософт (чтобы не лочили) или к хакерским подходам (когда в режиме on-premise система работает не совсем так как микрософт планировал )
За это сообщение автора поблагодарили: mazzy (5).
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:01.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.