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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.05.2017, 13:01   #21  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
Как достучаться из веб-приложения к акс2012, акс2009?
Предположим, есть традиционное веб-приложение на традиционном для веба LAMP. Как лучше с архитектурной точки зрения организовать доступ к Аксапте для этого приложения? делать прокси к бизнес-коннектору? делать сервер OData? Создавать специализироованные веб-сервисы средствами самой Аксапты? Еще как-то?
Нужно уточнить, что значит "достучаться", достаточно ли асинхронного обмена или нужен непременно синхронный. От ответа на этот и другие вопросы сильно зависит реализация.
Цитата:
Сообщение от mazzy Посмотреть сообщение
для акс7 понятно - там OData поставляется "из коробки". А вот для предыдущих версий?
Возможно, в вопросе есть часть ответа Может, спустить OData из коробки AX7 в ту же 2012-ю? На счет 2009-й не уверен, что получится легко и просто, но с .net-обертками тоже всё реализуемо.
Цитата:
Сообщение от mazzy Посмотреть сообщение
"custom" вэб-сервисы - это специализированные веб-сервисы, написанные на Аксапте?
Другими словами, вести параллельную кастомизацию и в веб-приложении, и в Аксапте?
Если "достучаться" значит "читать данные их AX", то можно сделать что-то универсальное, если же нужно писать данные в AX, то необходимо задействовать бизнес-логику приложения, и тогда, весьма вероятно, без доработки AX не обойтись.
Еще по поводу написания веб-сервисов в AX - я видел, к примеру, To-Increase Web Service Studio, там веб-сервисы не столько пишутся, сколько настраиваются - в простейших случаях буквально за считанные минуты: выбрали публикуемый справочник или "документ", выбрали поля, deploy, profit!
Цитата:
Сообщение от mazzy Посмотреть сообщение
даже в случае, когда пользователь на своем браузере открывает форму с аксаптовскими данными? типичный пример - приложение для ввода данных о расходах подотчетного лица.
Ни фига себе типичный пример! Это не "достучаться до AX", это - смостоятельный полноценный модуль из AX с мордой веб-клиента, в котором:
  1. используется синхронный обмен данными с AX (важна актуальность данных)
  2. непосредственно дергается бизнес-логика AX
Для меня типичный пример - это скорее какая-нибудь интеграция с интернет-магазином:
  • обмен данными асинхронный
  • стороннее веб-приложение может какое-то время работать автономно
  • бизнес-логика AX дергается опосредованно в момент обработки документов
Цитата:
Сообщение от mazzy Посмотреть сообщение
Другими словами, на каждый случай свой отдельный сервис? стоит ли заморачиватся универсальными сервисами?
По-моему, можно выделить следующие основные требования к интеграции:
  • направление потоков данных (из AX либо в AX)
  • синхронность/асинхронность обмена
  • необходимость обратной связи
  • необходимость дергать бизнес-логику AX (в т.ч. для контроля доступа и применения политик RLS/XDS)
  • допустимые виды транспорта данных
Синхронность/асинхронность обмена я выделил как требование, а не как вариант реализации, потому что считаю, что интеграции нужно всегда по возможности делать асинхронными. Отсюда - отсутствие в списке такого параметра как нагрузка. Комбинации приведенных условий формируют ограничения, в рамках которых можно уже искать свой оптимальный вариант реализации:
  • Если данные читаются из AX без обратной связи, и бизнес-логику дергать не надо, то возможен вариант наподобие DWH, когда данные читаются напрямую из базы AX либо ее копии. Это - самый лайтовый, самый простой в реализации вариант "достучаться"
  • Если всё то же, что с DWH, но прямой доступ к базе AX невозможен, то нужно использовать отдельное решение для интеграции, которое обеспечит доступный транспорт
  • Если данные читаются, но нужно контролировать доступ (в т.ч. RLS/XDS), то нужно писать/использовать коробочный сервис в AX - универсальный или нет, дело десятое.
  • Если данные читаются, но нужно обеспечить асинхронность (независимость от доступности AX), то нужно писать периодические выгрузки, либо использовать некий фреймворк/горизонтальное решение для интеграции, либо использовать отдельный движок для синхронизации баз (как в модуле Retail)
  • Если данные читаются, но нужно обеспечить обратную связь (дошли/не дошли, загрузились или нет), то это уже - вариант с записью данных, см. ниже
  • Если данные пишутся синхронно, то нужно в любом случае писать/использовать коробочный сервис в AX, который будет дергать бизнес-логику валидации/defaulting'а/обработки данных
  • Если данные пишутся асинхронно, то нужно опять же иметь в AX нечто, что будет дергать бизнес-логику валидации/defaulting'а/обработки данных в AX, при этом для "перекладывания" данных можно использовать DIXF или иное решение для интеграции.
  • etc
За это сообщение автора поблагодарили: mazzy (2), Vadik (1), ax_mct (5).
Старый 23.05.2017, 13:18   #22  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Понятно. Спасибо. Надо подумать.

Основное отличие в наших картинах мира:
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Для меня типичный пример - это скорее какая-нибудь интеграция с интернет-магазином:
Я считаю, что middlware вполне можно создавать на Аксапте, если у нее будет удобный интерфейс к фронту и инструменты разработчика по интеграции с фронтом. На крайний случай где-то на каком-нибудь сервере должны быть развернуты прокси-объекты к Аксапте.

Вы считаете, что Аксапта должна взаимодействовать только с middware, ни в коем случае не с фронтом. В этом случае middlware должен быть достаточно интеллектуальным и достаточно самостоятельным.

Ок. Надо подумать.
__________________
полезное на axForum, github, vk, coub.
Старый 23.05.2017, 13:26   #23  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
И вопрос:
Цитата:
Сообщение от Diman Посмотреть сообщение
Если сервисs не предполагают сложной логики, а так, чисто фасад к БД, то Go, NodeJS
...
Для акса 2012 и выше я бы выбрал сервисы на стороне аксы.
Если бы подобный "фасад" уже существовал бы, то каков был бы выбор?

В частности, если бы в акс2012, акс2009 была бы спущена реализация сервер OData с акс7?
__________________
полезное на axForum, github, vk, coub.
Старый 23.05.2017, 14:08   #24  
Diman is offline
Diman
Участник
Сотрудники Microsoft Dynamics
 
166 / 35 (2) +++
Регистрация: 27.06.2003
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
И вопрос:
Если бы подобный "фасад" уже существовал бы, то каков был бы выбор?
В частности, если бы в акс2012, акс2009 была бы спущена реализация сервер OData с акс7?
Я бы сделал так:
AX as a set of services - Queue - facade [LAMP + front (reactJS)]
Можно отказаться от очереди в этой схеме если пользователь готов ждать\терять запрос\ответ и весь роутинг зашить в LAMP
__________________
Sapere aude
За это сообщение автора поблагодарили: mazzy (2).
Старый 23.05.2017, 15:47   #25  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от mazzy Посмотреть сообщение
Основное отличие в наших картинах мира:

Я считаю, что middlware вполне можно создавать на Аксапте, если у нее будет удобный интерфейс к фронту и инструменты разработчика по интеграции с фронтом. На крайний случай где-то на каком-нибудь сервере должны быть развернуты прокси-объекты к Аксапте.

Вы считаете, что Аксапта должна взаимодействовать только с middware, ни в коем случае не с фронтом. В этом случае middlware должен быть достаточно интеллектуальным и достаточно самостоятельным.
Настолько революционные идеи как PHP интерфейс к AX мне в голову не приходили. Думаю что ни разработчикам, ни бизнесу это не должно быть интересно.
Хотя в этом что-то есть

Практичнее брать популярный и независимый LAMP продукт и организовать обмен данными. Уверен что чем больше независимости и отдельности - тем лучше.
Причем обмен данными может быть и на уровне баз данных.

Если тема о построении альтернативного frond-end к AX, то я прошу прощения. Для меня веб-приложения на LAMP это уже известные и популярные продукты, а не самописки.
Старый 23.05.2017, 15:56   #26  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Настолько революционные идеи как PHP интерфейс к AX мне в голову не приходили. Думаю что ни разработчикам, ни бизнесу это не должно быть интересно.
Хотя в этом что-то есть
Согласен, что вряд ли кто заинтересуется альтернативным интерфейсом ко всей Аксапте.
но небольшие приложения типа вот таких - вполне:
https://www.microsoft.com/en-gb/stor...s/9wzdncrfjbj5
https://www.microsoft.com/en-gb/stor...s/9wzdncrfjb81
https://www.microsoft.com/en-gb/stor...s/9wzdncrfjbcc
https://www.microsoft.com/en-gb/stor...r/9wzdncrfjbpg
https://www.microsoft.com/en-gb/stor.../9wzdncrdtcd1#

Цитата:
Сообщение от ax_mct Посмотреть сообщение
Практичнее брать популярный и независимый LAMP продукт и организовать обмен данными.
Да, по результатам этой ветки, наверное так. Надо подумать.

Цитата:
Сообщение от ax_mct Посмотреть сообщение
Если тема о построении альтернативного frond-end к AX, то я прошу прощения. Для меня веб-приложения на LAMP это уже известные и популярные продукты, а не самописки.
а можете назвать примеры?

это тоже радикальный подход.
самописки на стандартных библиотеках - наверное тоже. Надо подумать.
__________________
полезное на axForum, github, vk, coub.
Старый 23.05.2017, 18:07   #27  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
Согласен, что вряд ли кто заинтересуется альтернативным интерфейсом ко всей Аксапте.
но небольшие приложения типа вот таких - вполне:
https://www.microsoft.com/en-us/stor...s/9wzdncrfjbj5
https://www.microsoft.com/en-us/stor...s/9wzdncrfjb81
https://www.microsoft.com/en-us/stor...s/9wzdncrfjbcc
https://www.microsoft.com/en-us/stor...r/9wzdncrfjbpg
https://www.microsoft.com/en-us/stor.../9wzdncrdtcd1#
Timesheets, Expenses, Approvals - это, по-моему, какие-то игрушки либо proof of concept. В оффлайне оно работать не умеет (например, при заполнении расходов применить настроенные политики и не дать ввести большую сумму), а для онлайна есть уже портальные решения из коробки, где разве что морду переверстать под мобильные устройства - и вперед. Намного интереснее было бы увидеть, скажем, решение типа оффлайнового АРМ менеджера по продажам:
  • загрузка справочника товаров с краткими описаниями и актуальными ценами по ценовым группам (а то и картинками)
  • загрузка справочника клиентов с небольшой аналитикой типа текущей кредиторки и просроченных платежей по отгрузкам
  • загрузка маршрутов объезда клиентов
  • создание новых заказов на продажу в оффлайне
  • загрузка информации по последним созданным заказам с небольшой аналитикой типа результата резервирования, логистического статуса и размера накапавших менеджеру бонусов
  • отправка созданных новых заказов и обновление информации по уже созданным при появлении связи
  • загрузка справочников по требованию/расписанию
  • инфраструктура, обеспечивающая работу этого хозяйства, к примеру, для 30000 номенклатур (разных по группам продавцов), 2000 клиентов, 1500 заказов в день и 150 менеджеров по продажам в 30 группах
  • инфраструктура развертывания и мониторинга клиентских приложений (у кого какие версии, сколько было ошибок синхронизации и т.п.)
  • функционал предварительной подготовки данных в AX, чтобы выгрузка работала за приемлемое время и не вешала систему
Вот такое мобильное приложение, думаю, действительно было бы интересно.
Старый 23.05.2017, 18:08   #28  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от mazzy Посмотреть сообщение
Согласен, что вряд ли кто заинтересуется альтернативным интерфейсом ко всей Аксапте.
но небольшие приложения типа вот таких - вполне:
...
а можете назвать примеры?
...
Эти приложения Windows Apps on Microsoft Store и cкорее всего сделаны на Universal Windows Platform (UWP) или предшественниках. В любом случае они работают только на Windows, более того на определенных ее версиях (8.1, 10) и как я понимаю есть проблемы совместимости приложений между 10 и 8.1 из-за очередной смены API.

Примеров альтернативной разработки web-интерфейсов на LAMP или WAMP к AX - нет, так это безумие лишенное какого-либо смысла. Технически сложно и платить AX лицензии.
Разве что там где очень свой EP - это может быть голый ASP.NET через бизнес-коннектор.

Примеры популярных LAMP? Да те же e-commerce. Тот же Bitrix
Примеры фундаментальные для не-магазинов (Open-source WMS/CMS/CRM ) упираются в лицензирование для сотрудников. Та же интеграция AX c Open-source CRM скорее всего потребует AX лицензии.

Но мне кажется что AX e-commerce чаще на ASP.NET. И самописки и коробки. Просто из-за скиллзов программистов.
Старый 23.05.2017, 18:39   #29  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Timesheets, Expenses, Approvals - это, по-моему, какие-то игрушки либо proof of concept.
вопрос и был задан не про них. а про класс подобных веб-приложений.

Цитата:
Сообщение от gl00mie Посмотреть сообщение
В оффлайне оно работать не умеет
почему ты считаешь работу в оффлайне обязательной?

да и вопрос был про веб-приложения )
но все равно, почему ты настаиваешь на возможности работы в оффлайне?

Цитата:
Сообщение от gl00mie Посмотреть сообщение
Вот такое мобильное приложение, думаю, действительно было бы интересно.
я говорил про веб-приложения.
но хорошо, пусть будет функционал торгового агента, ТОРО или подобное.

так как Как лучше с архитектурной точки зрения?

Цитата:
Сообщение от ax_mct Посмотреть сообщение
Эти приложения Windows Apps on Microsoft Store и cкорее всего сделаны на Universal Windows Platform (UWP) или предшественниках.
Да. но вопрос то был не про них и не про windows платформу.

Цитата:
Сообщение от ax_mct Посмотреть сообщение
Технически сложно
Вот!!!!
Собственно вопрос про это - что нужно сделать, чтобы было проще? дешевле? быстрее? с меньшими затратами для заказчика?

предположим где-то есть некое супер-убер-фиговина, которая уже делает "технически просто".
какими свойствами она должна обладать, чтобы специалисты со спокойной душой могли сказать - к этому мы быстро наваяем веб-интерфейс при помощи библиотеки XXX.

Цитата:
Сообщение от ax_mct Посмотреть сообщение
и платить AX лицензии.
да, я помню про лицензии.
но уже сначала предложил вопрос лицензий пропустить.
причина? это постоянная и прогнозируемая величина.
после того, как будут сформулированы технические аспекты, стоимость лицензий можно будет приплюсовать и сравнивать с альтернативными решениями.

Цитата:
Сообщение от ax_mct Посмотреть сообщение
Тот же Bitrix
угу-угу.
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 23.05.2017 в 18:45.
Старый 23.05.2017, 20:22   #30  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от mazzy Посмотреть сообщение
Собственно вопрос про это - что нужно сделать, чтобы было проще? дешевле? быстрее? с меньшими затратами для заказчика?

предположим где-то есть некое супер-убер-фиговина, которая уже делает "технически просто". какими свойствами она должна обладать, чтобы специалисты со спокойной душой могли сказать - к этому мы быстро наваяем веб-интерфейс при помощи библиотеки
Ответ один - найти супер-убер-фиговину то есть нормального программиста. Все остальное уже есть.
Варианты
- web service for AX using AIF. SOAPClient скажем в php.
- .NET DLL к которой мы обращаемся в X++ и которая делает все что душе угодно, тот же JSON.NET.
- обмен файлами

Всякие супер-библиотеки и шины - даром не нужны. Они не упрощают, а усложняют жизнь нормальному программисту.
Хотя вот в пример уже привели волшебный костыль To-Increase Web Service Studio, но за всякое волшебство есть своя цена.

Не может быть такой библиотеки, у каждого популярного LAMP есть свое API и SDK, Ему и следуем. Надо SOAP/REST да впридачу OAuth - значит пишем .NET сборку которая это делает. Как бы наверное это то что ты прокси называешь. Самый очевидный и простой способ.

А если типа интранет и свое - то самый очевидный и простой способ - AX лезет в базу данных этого третьего приложения. Batch job, ODBCConnection. Cheep and cheerful, что еще нужно
----
И конечно Bitrix это сарказм, приложений многие десятки. Достаточно тех что предлагают уже готовую интеграцию с AX в коробке. Но чтобы понять LAMP они или нет, это надо очень постараться чтобы понять на чем они написаны.

У моего текущего клиента e-commerce на LAMP и меня спрашивали за интеграцию с AX. Что делает бизнес - ищет уже готовую интеграцию. Потому что найти нормального программиста - сложнее.
За это сообщение автора поблагодарили: mazzy (2).
Старый 24.05.2017, 17:39   #31  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
Как достучаться из веб-приложения к акс2012, акс2009?
Цитата:
Сообщение от mazzy Посмотреть сообщение
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Цитата:
Сообщение от mazzy Посмотреть сообщение
Согласен, что вряд ли кто заинтересуется альтернативным интерфейсом ко всей Аксапте. но небольшие приложения типа вот таких - вполне
Timesheets, Expenses, Approvals - это, по-моему, какие-то игрушки либо proof of concept.
вопрос и был задан не про них. а про класс подобных веб-приложений.
Да, я видел исходный вопрос, но потом почему-то речь зашла про небольшие приложения типа мобильных - я и ответил про мобильные приложения. Впрочем, вернемся к исходной теме...
Цитата:
Сообщение от mazzy Посмотреть сообщение
почему ты считаешь работу в оффлайне обязательной?
Я не считаю работу в оффлайне обязательной, в некоторых сценариях без онлайна не обойтись. Но я считаю, что обмен данными стороннего приложения с Аксаптой должен быть по возможности асинхронным. Асинхронность уже дает некую автономность и предполагает хранение слепков данных отдельно от БД Аксапты, а дальше, если развивать тему, можно воспроизвести во внешнем приложении некую бизнес-логику, которая будет работать на доступных в оффлайне данных из Аксапты. Банальные Excel-файлы, которые генерятся движком экспорта-импорта данных в AX 2009, уже содержат енумы и возможность выбора значений в связанных ячейках, а не требуют вбивать метки енумов руками. От приложения я как пользователь ожидал бы чего-то большего, нежели выбор значений из справочников, на что способен даже Excel. Я ожидал бы учета истории того, что я вводил, применения некий правил, некой логики, которая облегчала бы мою работу и предупреждала ошибки, а не позволяла мне потратить кучу времени и сил на вбивание данных, чтобы в итоге оказаться в тупике и всё переделывать. Апофеозом такого подхода в моем понимании являются AX POS и Commerce Runtime, но в этой теме, полагаю, речь о чем-то попроще...
На Аксапту зачастую замыкают очень много сторонних приложений и сервисов, подчас критически важных для бизнеса. И чем проще будет делать интеграцию с Аксаптой, тем больше сторонних приложений и сервисов будут с ней связывать. При этом Аксапта в вынешнем виде - это большая монолитная система с большой базой, кучей серверов и необходимостью это все обслуживать. Иными словами, Аксапта бывает иногда недоступна, и чем больше база и/или количество серверов, тем дольше могут длиться периоды недоступности. Так вот, асинхронная интеграция сторонних приложений и сервисов позволяет легче проходить периоды недоступности Аксапты и заодно сглаживать пики нагрузки.
Далее, вернемся к сторонним приложениям, с которыми работают конечные пользователи. Если приложение умеет держать автономные слепки справочников, но не помогает мне как пользователю с ними работать, не помогает избегать ошибок, то какой от него толк? Чем оно лучше, "умнее" файлов Excel, куда выгружены справочники и в ячейках настроен выбор из них? А если приложение и в оффлайне не работает, то чем оно лучше уже имеющейся в коробке портальной веб-морды, для которой уже реализован механизм "достучаться до Аксапты"?
За это сообщение автора поблагодарили: mazzy (5).
Старый 24.05.2017, 18:37   #32  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Апофеозом такого подхода в моем понимании являются AX POS и Commerce Runtime, но в этой теме, полагаю, речь о чем-то попроще...
Ну, как сказать...
В акс7 основной клиент в ритейле - браузерный cloudPOS - это набор html-страниц и javaScript'ов.

не могу назвать ритейл ни апофеозом, ни примером для подражания.
собственно вопрос то и родился в ходе работы в ритейлом в акс7.
__________________
полезное на axForum, github, vk, coub.
Старый 24.05.2017, 18:41   #33  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от gl00mie Посмотреть сообщение
...
А если приложение и в оффлайне не работает, то чем оно лучше уже имеющейся в коробке портальной веб-морды, для которой уже реализован механизм "достучаться до Аксапты"?
Я бы уточнил что имеется в виду под "оффлайн". Для меня это возможность автономной работы веб-приложения. Автономной от AX/ERP. Если такой асинхронности нет - то это инвалидное решение.

При этом данное веб-приложение может требовать наличие интернета, и не обязательно должно уметь работать без него сохраняя что-то на клиентском компьютере. Это уже излишне в большинстве случаев.

Но автономность через асинхронность - must be. И в таком свете и реализация будет отличаться от сросшихся близнецов.
Старый 24.05.2017, 18:53   #34  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от mazzy Посмотреть сообщение
Ну, как сказать...
В акс7 основной клиент в ритейле - браузерный cloudPOS - это набор html-страниц и javaScript'ов.

не могу назвать ритейл ни апофеозом, ни примером для подражания.
собственно вопрос то и родился в ходе работы в ритейлом в акс7.
А можно подробностей? Почему этот набор html-страниц и javaScript'ов не кросс-платформенный и не кросс-браузерный?

Только не говори что ты опять меня забанишь за оффтопик. Это по теме почему один набор html-страниц и javaScript'ов может достучаться, а другой вряд-ли.

Supported web browsers for Retail Cloud POS

Retail Cloud POS for Dynamics 365 for Operations can run in any of the following web browsers that run on the specified operating systems:
Microsoft Edge (latest publicly available version) on Windows 10
Internet Explorer 11 on Windows 10, Windows 8.1, or Windows 7
Chrome (latest publicly available version) on Windows 10, Windows 8.1, or Windows 7

https://docs.microsoft.com/en-us/dyn...m-requirements
Старый 24.05.2017, 19:19   #35  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
нормально вроде.

Цитата:
Сообщение от ax_mct Посмотреть сообщение
А можно подробностей? Почему этот набор html-страниц и javaScript'ов не кросс-платформенный и не кросс-браузерный?
клиент - и кросс-платформенный, и кросс-браузерный.
правда оформлен в стиле виндовых modern apps.

но клиент очень тесно завязан на серверную часть магазина.
которая сильно завязана на IIS, MS SQL, .net и прочие виндовые технологии.

а не могу назвать примером для подражания, поскольку мне кажется, что на других библиотеках подобное пишется гораздо легче и обладает большим функционалом.
да, понятно, что ритейлу надо поддерживать совместимость с предыдущей версией.
но...

просто мне кажется, что можно делать морды намного проще и намного функциональнее при помощи традиционных веб-технологий. если бы был набор библиотек/инструментов доступа к Аксапте. Типа библиотеки доступа к mySQL, postgreSQL, mongoDB. Даже с учетом того, что клиент самой аксапты 7 - это тоже браузерное веб-приложение.
Миниатюры
Нажмите на изображение для увеличения
Название: ax7.PNG
Просмотров: 330
Размер:	68.3 Кб
ID:	11413   Нажмите на изображение для увеличения
Название: pos.jpg
Просмотров: 287
Размер:	116.7 Кб
ID:	11414  

__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: ax_mct (5).
Старый 24.05.2017, 19:31   #36  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
вот состав библиотек в <head> в существующем клиенте аксапты и в cloudPOS
больше всего меня удивляет полифил для промисов...
Миниатюры
Нажмите на изображение для увеличения
Название: ax7-head.PNG
Просмотров: 382
Размер:	109.3 Кб
ID:	11415   Нажмите на изображение для увеличения
Название: pos-head.PNG
Просмотров: 364
Размер:	82.9 Кб
ID:	11416  

__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 24.05.2017 в 19:34.
Старый 24.05.2017, 20:17   #37  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от mazzy Посмотреть сообщение
клиент - и кросс-платформенный, и кросс-браузерный.
правда оформлен в стиле виндовых modern apps.
Шутка удалась

Тоску понимаю и поддерживаю. Выход вижу но туда AX7 не пролезет, она сама стена. Хотя можно анализировать архитектуру AX7 и что-где-чем можно заменить.
Но связанными руками да в темной комнате с поттергейстом?.

Цитата:
Сообщение от mazzy Посмотреть сообщение
больше всего меня удивляет полифил для промисов...
Я думаю это из-за IE.

A Promise object represents an operation that is not completed yet, but is expected to complete in the future.

Internet Explorer 11 doesn’t implement native promises. For browsers that do not implement native promises, you must include a separate library to provide a polyfill. A polyfill is code that provides capabilities not provided natively by a browser. There are several polyfills or libraries which will allow Internet Explorer 11 to have promises: es6-promise, q.js, and bluebird.

https://msdn.microsoft.com/en-us/lib...romiseFunction
Старый 24.05.2017, 21:18   #38  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Internet Explorer 11 doesn’t implement native promises.
именно это и удивляет.
под хромом, кстати, не работает из коробки. хотя обещали. может будет еще.

понятно, что промисы удобная штука...
но раз уж взялись использовать экспериментальные технологии, то взяли бы сразу async/await тайпскриптовский...

хотя само наличие экспериментального полифила в ФИНАНСОВОЙ программе... да еще в браузере...
понятно, что в браузере должно работать в режиме киоска... но, блииин...

слишком это сложно.
собственно поэтому не считаю ритейл образцом для подражания.
собственно отсюда и вопрос.
__________________
полезное на axForum, github, vk, coub.
Старый 24.05.2017, 21:47   #39  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от mazzy Посмотреть сообщение
слишком это сложно.
...
собственно отсюда и вопрос.
Ответ в "ES6 Promise polyfill".

То что вы думали что мы обещали - так это мы о другом говорили.
A promises callback cannot return that same promise.

Оставьте это программирование обещающей расе.
You must pass an array to Promise race

Даже не знаем что вам еще обещать. Попробуйте что-то более современное.
Failed to construct Promise. Please use the new.

Код:
if(typeof Promise !== "undefined" && Promise.toString().indexOf("[native code]") !== -1)
{
    (function(t){function z(){for(var a=0;a<g.length;a++)g[a][0](g[a][1]);g=[];m=!1}function n(a,b){g.push([a,b]);m||(m=!0,A(z,0))}function B(a,b){function c(a){p(b,a)}function h(a){k(b,a)}try{a(c,h)}catch(d){h(d)}}function u(a){var b=a.owner,c=b.state_,b=b.data_,h=a[c];a=a.then;if("function"===typeof h){c=l;try{b=h(b)}catch(d){k(a,d)}}v(a,b)||(c===l&&p(a,b),c===q&&k(a,b))}function v(a,b){var c;try{if(a===b)throw new TypeError("A promises callback cannot return that same promise.");if(b&&("function"===
typeof b||"object"===typeof b)){var h=b.then;if("function"===typeof h)return h.call(b,function(d){c||(c=!0,b!==d?p(a,d):w(a,d))},function(b){c||(c=!0,k(a,b))}),!0}}catch(d){return c||k(a,d),!0}return!1}function p(a,b){a!==b&&v(a,b)||w(a,b)}function w(a,b){a.state_===r&&(a.state_=x,a.data_=b,n(C,a))}function k(a,b){a.state_===r&&(a.state_=x,a.data_=b,n(D,a))}function y(a){var b=a.then_;a.then_=void 0;for(a=0;a<b.length;a++)u(b[a])}function C(a){a.state_=l;y(a)}function D(a){a.state_=q;y(a)}function e(a){if("function"!==
typeof a)throw new TypeError("Promise constructor takes a function argument");if(!1===this instanceof e)throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");this.then_=[];B(a,this)}var f=t.Promise,s=f&&"resolve"in f&&"reject"in f&&"all"in f&&"race"in f&&function(){var a;new f(function(b){a=b});return"function"===typeof a}();"undefined"!==typeof exports&&exports?(exports.Promise=s?f:e,exports.Polyfill=e):"function"==
typeof define&&define.amd?define(function(){return s?f:e}):s||(t.Promise=e);var r="pending",x="sealed",l="fulfilled",q="rejected",E=function(){},A="undefined"!==typeof setImmediate?setImmediate:setTimeout,g=[],m;e.prototype={constructor:e,state_:r,then_:null,data_:void 0,then:function(a,b){var c={owner:this,then:new this.constructor(E),fulfilled:a,rejected:b};this.state_===l||this.state_===q?n(u,c):this.then_.push(c);return c.then},"catch":function(a){return this.then(null,a)}};e.all=function(a){if("[object Array]"!==
Object.prototype.toString.call(a))throw new TypeError("You must pass an array to Promise.all().");return new this(function(b,c){function h(a){e++;return function(c){d[a]=c;--e||b(d)}}for(var d=[],e=0,f=0,g;f<a.length;f++)(g=a[f])&&"function"===typeof g.then?g.then(h(f),c):d[f]=g;e||b(d)})};e.race=function(a){if("[object Array]"!==Object.prototype.toString.call(a))throw new TypeError("You must pass an array to Promise.race().");return new this(function(b,c){for(var e=0,d;e<a.length;e++)(d=a[e])&&"function"===
typeof d.then?d.then(b,c):b(d)})};e.resolve=function(a){return a&&"object"===typeof a&&a.constructor===this?a:new this(function(b){b(a)})};e.reject=function(a){return new this(function(b,c){c(a)})}})("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this);

}
https://community.dynamics.com/enter...r-and-promises
Старый 24.05.2017, 21:58   #40  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
аксапта на react, cloudPOS на knockout... и никогда не быть им вместе...
поэт, уводящий в оффтопик. блин.


вернемся к теме?
Цитата:
Сообщение от mazzy Посмотреть сообщение
Как достучаться из веб-приложения к акс2012, акс2009?

Предположим, есть традиционное веб-приложение на традиционном для веба LAMP

Как лучше с архитектурной точки зрения организовать доступ к Аксапте для взаимодействие с Аксаптой этого приложения? делать прокси к бизнес-коннектору? делать сервер OData? Создавать специализироованные веб-сервисы средствами самой Аксапты? Еще как-то?
Поделитесь опытом, размышлениями.

Есть ли уже готовые решения?
были высказывания:
Цитата:
Сообщение от Diman Посмотреть сообщение
Я бы сделал так:
AX as a set of services - Queue - facade [LAMP + front (reactJS)]
Можно отказаться от очереди в этой схеме если пользователь готов ждать\терять запрос\ответ и весь роутинг зашить в LAMP
Цитата:
Сообщение от egorych Посмотреть сообщение
А я бы сделал старый-добрый Web сервис, ну или REST, но независимый от Аксапты - который бы реализовывал нужный функционал.
Как он будет это делать - через коннектор, Odata или просто читать напрямую из базы - уже дело вкуса. Внешнее приложение просто дергало бы в нужный момент сервис и не парилось как там чего реализовано.
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Я не считаю работу в оффлайне обязательной, в некоторых сценариях без онлайна не обойтись. Но я считаю, что обмен данными стороннего приложения с Аксаптой должен быть по возможности асинхронным. Асинхронность уже дает некую автономность и предполагает хранение слепков данных отдельно от БД Аксапты, а дальше, если развивать тему, можно воспроизвести во внешнем приложении некую бизнес-логику, которая будет работать на доступных в оффлайне данных из Аксапты.
...
А если приложение и в оффлайне не работает, то чем оно лучше уже имеющейся в коробке портальной веб-морды, для которой уже реализован механизм "достучаться до Аксапты"?
еще?
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 24.05.2017 в 22:04.
Теги
ax2009, ax2012, lamp, как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
stoneridgesoftware: Working with the OData Endpoint in Dynamics 365 for Operations Blog bot DAX Blogs 0 12.01.2017 17:11
AIF: OData Query Service Blog bot DAX Blogs 0 24.08.2011 09:11
axforum blogs: Трудности перехода: опыт переноса модификаций с AX 3.0 SP5 EE на AX 2009 SP1 RU5 EE Blog bot DAX Blogs 0 19.07.2011 03:14
DAX2009 workflows - отдельный сервер для каждого приложения nebraska DAX: Администрирование 1 01.10.2010 09:37
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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