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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.05.2013, 19:01   #1  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Цитата:
Сообщение от Narayana Посмотреть сообщение
Как мне показалось, единственным способом получить данные из Аксапты на asp-странице является использование контрола AxDataSource, для которого нужно выбрать заранее созданный в Аксапте DataSet.
Можно еще создать обычный DataSet в VS (xsd-схема), написать для каждого DataTable свой DataAdapter и выводить данные DataGrid. Если уж вы ушли от портала Dynamics AX, то и пишите с использованием только чистого .NET. Мне кажется, так меньше граблей соберете.
Старый 10.05.2013, 16:56   #2  
Narayana is offline
Narayana
Участник
 
241 / 100 (4) +++++
Регистрация: 05.01.2009
Адрес: Москва
Цитата:
Сообщение от _scorp_ Посмотреть сообщение
Можно еще создать обычный DataSet в VS (xsd-схема), написать для каждого DataTable свой DataAdapter и выводить данные DataGrid. Если уж вы ушли от портала Dynamics AX, то и пишите с использованием только чистого .NET. Мне кажется, так меньше граблей соберете.
Это не совсем понятно.
Каким образом можно в нашем случае использовать DataAdapter, кроме непосредственного подключения к SQL базе Аксапты?
Насколько я понимаю, какого-то готового провайдера данных для Аксапты нет.
А использование базы Аксапты напрямую лишает всех преимуществ работы с Аксаптовским DataSet.
Но, это еще пол-беды.
Вы же не собираетесь программировать генерацию родных для Аксапты RecId?

Или вы имели в виду что-то другое?
Старый 11.05.2013, 00:24   #3  
Narayana is offline
Narayana
Участник
 
241 / 100 (4) +++++
Регистрация: 05.01.2009
Адрес: Москва
Вопрос к специалистам по ASP.NET
Попробовал открыть форму "Активные пользователи" в Аксапте и посмотреть, что происходит, когда на тестовой asp.net странице я пытаюсь вызвать метод Logon() из Аксаптовского класса Axapta, лежащего в сборке Microsoft.Dynamics.BusinessConnectorNet .

Оказалось, что сессия с Бизнес-коннектором честно устанавливается, но при этом, присутствующий на asp.net странице Аксаптовский контрол AxDataSource эту сессию не находит.

Дальше интереснее.
Если заменить родной пул приложений сайта на пул приложения работающего на SharePoint Аксаптовского портала, то можно увидеть следующее...
Сессия создается еще до загрузки какой либо страницы с сайта!
То же самое происходит, когда мы открываем тестовый сайт в Visual Studio 2008.
Сессия опять же создается еще до запуска какой либо страницы.

Все это наводит на мысль, что всегда инициализация контрола AxDataSorce происходит ДО вызова любого метода, вызванного событием на asp.net странице, в одном из которых я использую Logon().

То есть, получается, что у нас должен быть создан класс C#, который не привязан ни к одной странице и один из методов этого класса должен запускаться по событию не на странице, а по событию IIS.
Например, по любому запросу любой страницы из браузера клиента.

Дело в том, что веб-приложение кардинально отличается от виндовс-приложения тем, что у веб-приложения нет метода Main(). Соответсвенно, нужно как-то извратиться, чтобы установить сессию с Аксаптой один раз, когда клиент зашел на сайт. Далее, держать ее включенной все время, пока он запрашивает страницы и, наконец, завершить, когда клиент ушел с сайта.
Вот тогда, наверное, AxDataSource всегда будет работать.

Попытки посмотреть, как это устроено в Портале на SharePoint, ни к чему не приводят. Там все закрыто и посмотреть код невозможно.

Получается, что в обычных asp.net приложениях все подключения к данным производятся путем настройки ConnectionString в web.config сайта.
В традиционных windows-приложениях с помощью Logon() и далее работой только с записями отдельных таблиц, но не с Аксаптовским DataSet (судя по хелпу)

А вот использование Data Source в плане интеграции с веб-приложениями нигде не документируется.

Вопрос к знатокам, - как заставить работать код в классе, не привязанный к конкретной странице не по событиям страницы и в каком NameSpace находятся обработчики событий IIS, к которым можно было бы привязать метод с вызовом Logon() ?
Старый 11.05.2013, 12:08   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Narayana Посмотреть сообщение
Все это наводит на мысль, что всегда инициализация контрола AxDataSorce происходит ДО вызова любого метода, вызванного событием на asp.net странице, в одном из которых я использую Logon(). То есть, получается, что у нас должен быть создан класс C#, который не привязан ни к одной странице и один из методов этого класса должен запускаться по событию не на странице, а по событию IIS.
Будучи далек от веб-разработки, я слышал, что подобный код можно написать в обработчиках событий Application_Start или Session_Start в Global.asax
Цитата:
Сообщение от Narayana Посмотреть сообщение
как заставить работать код в классе, не привязанный к конкретной странице не по событиям страницы
А еще в ASP.NET при работе с IIS начиная с версии 7.5 (который идет на W7 и W2K8 R2) можно выполнять код для "разогрева" веб-приложения, реализуя интерфейс System.Web.Hosting.IProcessHostPreloadClient, см. Автозапуск приложений ASP.NET
За это сообщение автора поблагодарили: Narayana (1).
Старый 11.05.2013, 12:52   #5  
Narayana is offline
Narayana
Участник
 
241 / 100 (4) +++++
Регистрация: 05.01.2009
Адрес: Москва
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Будучи далек от веб-разработки, я слышал, что подобный код можно написать в обработчиках событий Application_Start или Session_Start в Global.asax
А еще в ASP.NET при работе с IIS начиная с версии 7.5 (который идет на W7 и W2K8 R2) можно выполнять код для "разогрева" веб-приложения, реализуя интерфейс System.Web.Hosting.IProcessHostPreloadClient, см. Автозапуск приложений ASP.NET

Спасибо. Попробовал вызвать Logon() из global.asax . Действительно, соединение создается и в списке активных пользователей появляется, но, к сожалению, AxDataSource и другие контролы Аксапты типа AxUserControlWebPart это соединение не видят.
Все получается немного глубже.
А именно... При создании сессии в форме "Активные пользователи" появляется два активных пользователя, - с типами сеансов "Business Connector" и "Веб пользователь".
Причем, если попытаться вызвать Logoff(), эти соединения никуда не исчезают.
А если при существующей сессии попытаться еще раз вызвать Logon(), то добавляется только новый сеанс "Веб пользователь", а "Бизнес Коннектор" не появляется.
Похоже, авторизация не происходит до конца...
Старый 13.05.2013, 14:16   #6  
Dreadlock is offline
Dreadlock
Участник
Аватар для Dreadlock
 
298 / 224 (8) ++++++
Регистрация: 07.05.2009
Адрес: Москва
Цитата:
Сообщение от Narayana Посмотреть сообщение
Попытки посмотреть, как это устроено в Портале на SharePoint, ни к чему не приводят. Там все закрыто и посмотреть код невозможно.
Есть приблуда которая позволяет просматривать код используя Рефлексию
Старый 13.05.2013, 23:40   #7  
Narayana is offline
Narayana
Участник
 
241 / 100 (4) +++++
Регистрация: 05.01.2009
Адрес: Москва
Цитата:
Сообщение от Dreadlock Посмотреть сообщение
Есть приблуда которая позволяет просматривать код используя Рефлексию
Это интересно. Надо попробовать. Но, только после того, как научусь не пользоваться SharePoint-ом совсем для работы с Аксаптой под вебом.

То, что Портал не отображается корректно под Хромом, все перевернуло в голове.
Вот, представьте себе... вы выделяете из Портала нужные куски, настраиваете доступ для потенциальных представителей, которые могут быть довольно разношерстным народом в отличие от корпоративных пользователей. Долго возитесь с допрограммированием системы регистрации пользователей... Все готово... Вы пробуете под разными браузерами и оказывается, что под Хромом, на котором работает больше 30% народа, ваше приложение нормально не работает. И ваши ощущения? ))

Нет. Что-то не так в Датском королевсте... )
Все-таки для большой корпоративной системы типа Аксапты должны существовать эффективные инструменты работы с розницей и создания Фронт-офисов под вебом. А SharePoint для этого никак не катит.
Старый 14.05.2013, 09:47   #8  
Dreadlock is offline
Dreadlock
Участник
Аватар для Dreadlock
 
298 / 224 (8) ++++++
Регистрация: 07.05.2009
Адрес: Москва
:)
Цитата:
Сообщение от Narayana Посмотреть сообщение
То, что Портал не отображается корректно под Хромом, все перевернуло в голове.
Вот, представьте себе... вы выделяете из Портала нужные куски, настраиваете доступ для потенциальных представителей, которые могут быть довольно разношерстным народом в отличие от корпоративных пользователей. Долго возитесь с допрограммированием системы регистрации пользователей... Все готово... Вы пробуете под разными браузерами и оказывается, что под Хромом, на котором работает больше 30% народа, ваше приложение нормально не работает. И ваши ощущения? ))
Можно в хром установить вот это
Старый 14.05.2013, 10:58   #9  
Narayana is offline
Narayana
Участник
 
241 / 100 (4) +++++
Регистрация: 05.01.2009
Адрес: Москва
Цитата:
Сообщение от Dreadlock Посмотреть сообщение
Можно в хром установить вот это
А как анонимные пользователи будут угадывать, что им это нужно предварительно установить, чтобы зайти на Портал?
Старый 13.05.2013, 11:55   #10  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Цитата:
Сообщение от Narayana Посмотреть сообщение
Каким образом можно в нашем случае использовать DataAdapter, кроме непосредственного подключения к SQL базе Аксапты?
У адаптера есть виртуальные методы insert, update, delete. Можно реализовать эти методы таким образом, чтобы в них шло подключение к аксапте через BC и выполнялись все необходимые запросы.

Цитата:
Сообщение от Narayana Посмотреть сообщение
Насколько я понимаю, какого-то готового провайдера данных для Аксапты нет.
Готового нет, нужно написать.
Старый 13.05.2013, 23:42   #11  
Narayana is offline
Narayana
Участник
 
241 / 100 (4) +++++
Регистрация: 05.01.2009
Адрес: Москва
Цитата:
Сообщение от _scorp_ Посмотреть сообщение
У адаптера есть виртуальные методы insert, update, delete. Можно реализовать эти методы таким образом, чтобы в них шло подключение к аксапте через BC и выполнялись все необходимые запросы.



Готового нет, нужно написать.
Дак, опять же, через Бизнес-коннектор!
А я как раз и не могу добиться, чтобы он находился для работы с данными... )
Потому как, если найдется, то можно ведь и DataSource использовать...
Теги
asp.net

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Элементы для Ax User Control в Аксапта 2009 на asp.net Narayana DAX: Программирование 22 25.01.2013 14:28
Существенное снижение производительности после перехода на AX 2009 с Axapta 3.0 Rivez DAX: Функционал 41 17.11.2011 23:54
Solutions Monkey: Migrating X++ web forms to AX 2009 EP asp.net framework Blog bot DAX Blogs 0 09.11.2010 19:05
mbsturk: Ax 2009 Rollup 4 Version Checker Blog bot DAX Blogs 0 29.04.2010 17:05
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:03.