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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.08.2014, 08:33   #1  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
643 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Может действительно не стоит заморачиваться с MySQL?
Мы, если хотим получить данные из АХ для сторонних систем, используем Web-сервисы. Очень удобно и без геморроя.
__________________
// no comments
Старый 29.08.2014, 18:06   #2  
dax_ is offline
dax_
Участник
 
7 / 10 (1) +
Регистрация: 27.08.2014
Спасибо всем участникам обсуждения за дельные предложения. Получилось достучаться к БД MySQL по ODBC через .Net компоненту:
X++:
static public void Main(Args _args)
{

    System.Exception                    e;
    System.Data.Odbc.OdbcConnection     objConn;


    System.Data.Odbc.OdbcCommand        cmdSelect;
    System.Data.Odbc.OdbcDataReader     reader;
    InteropPermission                   perm;

    str exceptionStr, connectStr;
    ;
   
    connectStr = "Driver={MySQL ODBC 3.51 Driver};Server=myserver;Database=mydatabase;User=root;Password=123;Option=3;";
    try
    {
        perm = new InteropPermission(InteropKind::ClrInterop);
        if (perm == null)
        {
            throw error("Error with file permissions");
        }
        perm.assert();
        objConn = new System.Data.Odbc.OdbcConnection(connectStr);
        objConn.Open();
        cmdSelect   = objConn.CreateCommand();
        cmdSelect.set_CommandText("SELECT * FROM table");
        reader      = cmdSelect.ExecuteReader();
        while (reader.Read())
        {
            info(reader.GetString(0));
        }
    }
    catch(Exception::CLRError)
    {
        CodeAccessPermission::revertAssert();
        perm = new InteropPermission(InteropKind::ClrInterop);
        if (perm == null)
        {
            return;
        }
        perm.assert();
        e = ClrInterop::getLastException();
        CodeAccessPermission::revertAssert();
        while( e )
        {
            exceptionStr += e.get_Message();
            e = e.get_InnerException();
        }
        info(exceptionStr);
    }
    catch
    {
        error("An Exception has occurred");
    }
    if(objConn)
        objConn.Close();

}
Правда данный код у меня работает ТОЛЬКО с 32-битной версией драйвера MySQL ODBC 3.51.06.

Оба драйвера версии 3.51.30 (32-битный и 64-битный) пока молчат. Будут результаты - отпишусь.
Старый 10.09.2014, 11:41   #3  
dax_ is offline
dax_
Участник
 
7 / 10 (1) +
Регистрация: 27.08.2014
С драйверами разобрались - все заработало на версии 3.51.29, удалось достучаться к базе через .Net и с 32-битного клиента, и с 64-битного сервера.
Старый 13.08.2018, 17:56   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,889 / 3165 (113) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от dax_ Посмотреть сообщение
С драйверами разобрались - все заработало на версии 3.51.29, удалось достучаться к базе через .Net и с 32-битного клиента, и с 64-битного сервера.
А в чем было дело, что не работало ?
Старый 13.08.2018, 18:36   #5  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от MikeR Посмотреть сообщение
Попробую высказать свое фэ по этому решению.
1 Не правильно держать коннекшены к другим базам данных из приложения Dynamics AX, по многим причинам (загрузка канала связи, не тот уровень исполнения, небезопасно и т.д). Скорее всего это даже не локальная инфраструктура, а через инет. И что будет в случае обрыва связи?
2 Настройка DSN привязана к конкретному AOS скорее всего. А если вы заходите с мигрировать на другой компьютер, где этой настройки нет и кто будет об это кроме разработчика помнить?

Пока не запустили, мое мнение - одумайтесь и переделайте на отправку и получения пакетов в формате .xml или .csv.
Атомарно.
Легко переносимо.
Не требует танцев с бубнами.
Цитата:
Сообщение от dech Посмотреть сообщение
Может действительно не стоит заморачиваться с MySQL?
Мы, если хотим получить данные из АХ для сторонних систем, используем Web-сервисы. Очень удобно и без геморроя.
Не всегда так однозначно. Предположим что это прототип и Agile. Иногда имеет смысл, если это возможно, сделать как можно проще первоначально.

То есть если можно за 2 дня обеспечить доступ к MySQL через .NET Interop из X++ и получить работающее решение то именно так и стоит сделать. И решать проблемы по мере их поступления.

Web-сервисы это хорошо но дорого по стоимости разработки. Имеют смысл когда четко понятно что требуется. При этом конечно надо писать код так чтобы легко заменить этот слой логики на WS.
Старый 13.08.2018, 19:19   #6  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от ax_mct Посмотреть сообщение
...и получить работающее решение то именно так и стоит сделать...
Работающее, но не обновляемое.
Старый 13.08.2018, 21:03   #7  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от EVGL Посмотреть сообщение
Работающее, но не обновляемое.
Одно дело когда это заказ и консалтинг заинтересован сделать проект более дорогим прикрываясь непобиваемой правильностью веб-сервисов.

И совсем другое когда это внутренний проект где в интранете и AX и PHP приложение. Тут принцип KISS имеет все основания быть примененным.

Или прототипирование для сбора дальнейших требований. Где о правильности вообще надо забывать.
Старый 14.08.2018, 08:26   #8  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
643 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Web-сервисы это хорошо но дорого по стоимости разработки. Имеют смысл когда четко понятно что требуется. При этом конечно надо писать код так чтобы легко заменить этот слой логики на WS.
Поясните, в чем именно высока стоимость разработки?
А когда нечетко понятно, что требуется, то х**к, х**к и в продакшн?
__________________
// no comments
Старый 14.08.2018, 14:35   #9  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от dech Посмотреть сообщение
Поясните, в чем именно высока стоимость разработки?
А когда нечетко понятно, что требуется, то х**к, х**к и в продакшн?
Доступ к сторонней базе остается программированием в AX и делом одного человека. Пусть даже и через NET прокси. Два дня.

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

х**к, х**к он безотносителен к способу.
Веб-сервисы как универсальный способ это неправильно.
Старый 15.08.2018, 07:31   #10  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
643 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Доступ к сторонней базе остается программированием в AX и делом одного человека. Пусть даже и через NET прокси. Два дня.

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

х**к, х**к он безотносителен к способу.
Веб-сервисы как универсальный способ это неправильно.
За два дня мы делаем веб-сервис, пусть вдвоем, но это будет и дешевле, и быстрее, и правильнее.
Дешевле - в том смысле, что вы все равно к этому придете позже. Даже просто работая с чужой базой вы будете задавать вопросы коллеге, который работает в ней постоянно. Документация и так будет вестись, согласитесь. Координация действий, тестирование - все это время будете отвлекать коллегу.
Быстрее - как ни странно, но вдвоем работа идет быстрее. Парадокс общения во время работы. Когда ты один, можешь долго тупить над вполне простыми вещами. Когда ты ведешь рабочий диалог - мысли сами выстраиваются в нужном направлении. Скорость разработки повышается. Однако, если долго мучить коллегу, то наверное тоже работа будет быстро сделана.
Правильнее - вам не нужно будет добавлять поля типа флага Processed, чтобы фильтровать обработанные записи, не нужно запускать батч каждые 10 минут. Как только данные поступят, веб-сервис их обработает.
__________________
// no comments
Старый 15.08.2018, 13:19   #11  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от dech Посмотреть сообщение
За два дня мы делаем веб-сервис, пусть вдвоем, но это будет и дешевле, и быстрее, и правильнее.
...
Разумно если это возможно. Войти с чашкой кофе и пнуть PHP шника с утра. Загорелись, сделали вместе. Но такая идиллия не везде.

Моя позиция в том что неправильно рассматривать веб-сервисы как единственную опцию. То есть доступ к MySQL из AX - нормальная техническая задача. Может быть проще переписать потом на веб-сервисы при такой необходимости.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX: Microsoft Dynamics AX 2012 R3 is now available! Blog bot DAX Blogs 1 02.05.2014 23:00
DAX: Microsoft Dynamics AX 2012 R3 global online launch event: April 10, 2014 Blog bot DAX Blogs 0 19.03.2014 07:11
amer-ax: It was a great day! Blog bot DAX Blogs 3 29.12.2012 01:02
emeadaxsupport: Final Microsoft Dynamics AX 2012 R2 Content Available! Blog bot DAX Blogs 0 04.12.2012 06:12
dynamics-community.at: Dynamics AX 2012 Trainings Blog bot DAX auf Deutsch 0 19.06.2012 18:11

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

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

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